발생일: 2009.04.16 문제: 어플리케이션의 뒷단에서 작동하는 Daemon Thread를 생성하려고 한다. 어플리케이션이 로드되면 스레드가 일정 시간동안 작동하며, 스레드는 중복되어 작동되지 않도록 한다. 해결책: 1. 데몬 스레드의 경우, 유저 스레드(일반 스레드)와 달리 JVM의 뒷단에서 실행되기 때문에 JVM이 종료되면 함께 종료된다. (데몬 스레드와 유저 스레드의 차이) 일단 데몬 스레드는 아래와 같이 Thead의 setDaemon(true) 메서드를 통해 설정하면 된다. Thread t = new Thread(this); t.setDaemon(true); // 스레드를 데몬으로 설정 2. 어플리케이션의 백그라운드 태스크로 추가하기 위해서는, 일단 데몬 스레드가 포함된 클래스를 컨텍스트의 리..
발생일: 2009.04.16 문제: web.xml 파일에 리스너를 추가하였는데, 아래와 같은 예외가 발생했다. org.xml.sax.SAXParseException: The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-con..
발생일: 2009.04.15 문제: 특정 서블릿에 대한 부하 테스트를 하기 위해 스레드를 생성해서 해당 URL을 요청하는 테스트 메서드를 만들고자 한다. 해결책: 기본적으로 자바에서 URL 과 URLConnection을 지원한다. 자바에서 URL 호출하기에 대해 정리해 둔 블로그가 있다. 쿠키 설정 등 좀더 다양한 설정을 원할 경우, 아파치의 httpComponents 라이브러리를 사용해보자. httpComponents 라이브러리는 3.1버전까지는 commons에 httpClient로 포함되어 있다가 4.0이 되면서 별도로 분리되었다고 한다. 현재 구현하고자 하는 기능 정도로는 httpClient 3.1 버전으로 충분할 것 같다. httpClient의 사용 예를 정리해둔 블로그를 참고하자.
발생일: 2009.04.14 문제: html 문서와 jsp 문서에서 각각 캐시가 저장되지 않도록 하려고 한다. html 의 메타태그로는 jsp 에 적용되지 않는 문제가 발생한다. 해결책: html 문서는 메타 태그로, jsp 문서는 header 설정으로 캐시를 설정하도록 한다. response.setHeader("Cache-Control","no-cache"); //HTTP 1.1 response.setHeader("Pragma","no-cache"); //HTTP 1.0 response.setDateHeader ("Expires", 0); //prevents caching at the proxy server 아래 사이트들을 참고하면 좋다. 유용한 메타 태그들을 정리한 페이지 웹캐시 튜토리얼 인터넷 익스..
발생일: 2009.04.13 문제: XML 문서에 있는 내용을 파싱하여 Java Object 에 담으려고 한다. XML을 그냥 파싱하자니 소스가 너무 길어지고 지저분해진다. 해결책: Apache Commons의 Digester 라이브러리를 사용해보자. 자카르타프로젝트 페이지에 유용한 가이드가 있으니 참고해보도록 한다. 팁: Java Object를 XML로 표현하고자 한다면 아래 블로그를 참조해보자. JAXB를 사용하여 Java Obejct 한번에 XML로 변환하기 또는 java object to xml 로 구글링
발생일: 2009.04.06 문제: 톰캣 4.1 버전의 server.xml 에서 정상 작동하는 JDBC 설정을 톰캣 5.5 버전에서 사용하려고 하니 Cannot create JDBC driver of class '' for connect URL 'null' 과 같은 에러가 나며 접속되지 않는다. 해결책: 톰캣 버전별로 JDBC 설정이 다르다. 아파치의 톰캣 5.5 버전의 DBCP 설정 방법을 참고하자. 참고로 아래는 톰캣에 JDBC 설치를 위한 간단한 절차이다. 톰캣 설치 폴더의 common/lib 에 해당 데이터베이스 드라이버를 넣어준다.(WEB-INF/lib 가 아님) tomcat 의 server.xml 에 JDBC 설정을 해준다. 소스에서 lookup 하여 불러온다.
발생일: 2009.03.30 문제: 이클립스에서 SVN 플러그인을 설치하려고 한다. 해결책: Eclispe 에서 Subversion 을 사용하는 방법에 대한 IBM 기사를 참조하자. 팁: 개인 프로젝트를 시작하는 경우라면, 같은 팀원과 소스 공유를 어떻게 해야할까 고민하는 경우가 있지요? 구글 프로젝트 호스팅을 이용해보세요. 편하고 좋답니다.^^ 국내에서는 느리다는 의견이 있는데 제가 느끼기에 사용하는데 불편함은 없네요. 네이버나 다음에서도 프로젝트 호스팅을 지원하는 것 같기도 하니 알아보시면 유용할 듯 합니다. 일단, 프로젝트 호스팅에 대한 블로그가 있네요. '구글 프로젝트 호스팅' 등으로 구글링해보세요~ 이클립스로 작업을 하고 계신다면 subclipse 를 사용하시면 편합니다.
발생일: 2009.03.28 문제: 국가별로 다른 페이지를 보여주려고 한다. 현재로선 국내에서 접속할 경우 한국어 페이지를, 그 외에서 접속할 경우 영어로 된 페이지를 제공하고 싶다. 요청 IP 를 분석해서 언어를 설정할 수 있을까? 해결책: 국가별 IP 정보를 받아서 자동으로 언어를 설정할 수 있는 방법이 있긴 하지만, 간단하게 구현하고자 하기에는 좀 버거운 방법이다. (국가별 IP 정보를 제공하는 사이트가 있다) 현재 구현하고자 하는 것은 request의 Accept-Language 헤더 값을 이용하는 것으로 충분할 것으로 보인다. (이에 대한 좋은 토론이 있다.) 주의할 것은, 브라우저마다 Accept-Language 의 리턴값이 다르다는 것이다. 한국어로 설정되어 있을 때 IE의 경우: ko FF..