2009-04-09 5 views
1

Tomcat에서 실행되는 간단한 서블릿이 있습니다. 서블릿이 데이터베이스에 연결하기 때문에 연결 풀링을 사용해야합니다. 그러나 인터넷상의 모든 예제는 (개발자가) 서블릿이 연결되어있는 데이터베이스를 변경하지 않는다고 가정합니다.tomcat 연결 풀링

예를 들어, 다음은 샘플 context.xml 파일입니다. 내 경우

<?xml version="1.0" encoding="UTF-8"?> 
<Context antiJARLocking="true" path="/feeds"> 
    <Resource name="jdbc/TestDB" 
     auth="Container" 
     type="javax.sql.DataSource" 
     factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" 
     username="username" 
     password="password" 
     driverClassName="org.postgresql.Driver" 
     url="jdbc:postgresql://example.com:1234/myDB" 
     maxWait="1000" 
     removeAbandoned="true" 
     maxActive="30" 
     maxIdle="10" 
     removeAbandonedTimeout="60" 
     logAbandoned="true"/> 
</Context> 

, 나는 테스트 서버 (PostgreSQL을)와 프로덕션 서버 (MS의 SQL), 그래서 나는의 context.xml의 설정이 작동하지 않습니다 하드 코딩 만 할 수있는 가정의 모든 튜토리얼이있다.

데이터베이스 URL, 인증 등 (테스트 서버 하나, 프로덕션 서버 하나)에 2 개의 다른 속성 파일이 있는데 그 중 하나는 훌륭하게 작동하지만 지금 연결 풀링을 사용하려면 어떻게해야합니까? 이것을 내 서블릿에 통합합니까?

Netbeans 6.5에서 "빌드"를 누르고 dist 디렉토리에서 전쟁을 끝내고 두 번째 서버의 tomcat 응용 프로그램 디렉토리에 놓을 수 있기를 원합니다. 새로운 전쟁 후에 xml 파일을 변경하지 않아도됩니다. 배포되었습니다. 서블릿은 각 시스템에서 등록 정보 파일을 가져올 위치를 알고 있으므로 등록 정보 파일을 연결 풀링 등록 정보와 통합 할 수 있으면 모든 설정이 가능합니다.

아이디어가 있습니까?

답변

4

모든 데이터 소스 정의를 tomcat의 conf/server.xml 파일에 저장하므로 전쟁은 데이터 소스와 완전히 독립적입니다.

의 server.xml :

<GlobalNamingResources> 
    <Resource name="mail/Mail" auth="Container" type="javax.mail.Session" 
       mail.smtp.host="localhost"/> 
    <Resource auth="Container" type="javax.sql.DataSource" name="jdbc/lagalerie" 
       driverClassName="org.postgresql.Driver" 
       url="jdbc:postgresql://localhost/lagalerie?charSet=LATIN1" 
       maxActive="100" maxIdle="30" maxWait="10000" 
       username="casashop" password="casashop"/> 
</GlobalNamingResources> 

의 context.xml :

<ResourceLink global="jdbc/lagalerie" name="jdbc/lagalerie" type="javax.sql.DataSource"/> 
    <ResourceLink global="mail/Mail" name="mail/Mail" type="javax.mail.Session"/> 

의 web.xml이 너무 일 것입니다,하지만 난 모리스의 솔루션을 선호

<resource-ref> 
    <description>The datasource</description> 
    <res-ref-name>jdbc/DataSource</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 
<resource-ref> 
    <description>The mail session</description> 
    <res-ref-name>mail/Mail</res-ref-name> 
    <res-type>javax.mail.Session</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 
+0

그게 내가 찾고 있던 바로 그 것이다. 감사. – user85116

-1

두 개의 서로 다른 연결을 가질 수 있으며 응용 프로그램에서 사용할 연결을 즉시 감지 할 수 있습니다.

+0

. 고마워 ... – user85116