2009-08-27 4 views
4

우리는 지금 우리가 각 클라이언트에 대한 사본을 배포하는 웹 응용 프로그램을 가지고 있습니다. 현재 전개 전략은 각 인스턴스에 대해 고유 한 이름의 JDBC 연결 풀을 작성하는 것입니다. 그래서 jdbc/client라고 말하십시오. 그들은 대신 고유 한 이름의 연결 풀에 배포 된 모든 인스턴스에 JDBC/데이터베이스라고 있도록 내가 그것을 표준화한다면Tomcat JDBC 연결 풀이 인스턴스간에 공유 되나요?

은, 데이터베이스의 기회 질문이 있습니다
< Context path="/" 
     reloadable="true" 
     docBase="\home\client\ROOT" 
     debug="5" > 
     < Resource name="jdbc/client" 
       auth="Container" 
       type="javax.sql.DataSource" 
       maxActive="100" 
       maxIdle="30" 
       validationQuery="SELECT 1" 
       testWhileIdle="true" 
       timeBetweenEvictionRunsMillis="300000" 
       numTestsPerEvictionRun="6" 
       minEvictableIdleTimeMillis="1800000" 
       maxWait="10000" 
       username="user" 
       password="pass" 
       driverClassName="com.mysql.jdbc.Driver" 
       url="jdbc:mysql://databaseserver:3306/client ?zeroDateTimeBehavior=convertToNull&amp;jdbcCompliantTruncation=false"/> 
< /Context> 

... 다음과 같이 지정 즉, 다른 고객의 데이터베이스에있는 한 고객 또는 특정 배포 된 인스턴스에 현지화 된 고객입니까?

생각하십니까? 감사합니다. Scott

+0

메모리에는 Tomcat 복사본이 하나만 있지만 war 파일은 여러 개로 배포되어있다. –

답변

4

아니요. 데이터 소스 이름의 범위는 하나의 Tomcat 인스턴스입니다.

각 고객에 대해 별도의 Tomcat 프로세스를 시작하는 경우 중요한 것은 데이터 소스가 어떻게 구성되어 있으며 Tomcat이이를 호출하는 것이 아닙니다. 각 데이터 소스가 다른 데이터베이스를 사용하도록 구성되어 있으면 크로스 토크가 발생하지 않습니다.

1

응용 프로그램 배포를 위해 컨텍스트에서 JNDI DataSource 리소스를 정의하는 경우 같은 응용 프로그램의 여러 복사본을 동일한 Tomcat 인스턴스에서 실행하고 동일한 JNDI 이름을 사용하여 다른 응용 프로그램 데이터베이스. 각 응용 프로그램 인스턴스가 Tomcat의 다른 인스턴스에서 완전히 실행 중이면 한 인스턴스가 다른 인스턴스에 대해 지정된 데이터베이스를 참조하는 방법은 없습니다.

+0

동일한 JNDI 이름을 사용하는 두 개의 앱이 있지만 각각의 데이터 소스 리소스는 poiting이다. 다른 db 스키마 및 불행히도 단 하나의 리소스가 둘 다 사용됩니다 ... 당신이 나를 도울 수 있습니까? –

3

이 각 클라이언트 응용 프로그램을 배포하는 방법에 따라 달라집니다,

  1. 각 클라이언트가 자신의 Tomcat 설치를 얻을 경우 (서로 다른 CATALINA_HOME이)는이 교차 할 기회가 없다.
  2. Tomcat에서 모두 동일한 설치를 사용하지만 다른 호스트로 실행하는 경우 모든 호스트가 공유하는 conf/context.xml에 데이터 소스를 정의하지 않아야합니다.
  3. 모든 클라이언트가 동일한 Tomcat 인스턴스를 공유하고 단순히 다른 웹 앱인 경우 더 많은주의가 필요합니다. META-INF/context.xml 또는 WEB-INF/web.xml에서 데이터 소스를 정의해야합니다. 추가 격리를 위해 dbcp.jar을 각 응용 프로그램의 WEB-INF/lib에 복사하여 자신의 DBCP 인스턴스를 사용하도록해야합니다.
0

아니요 데이터 소스 이름의 범위가 하나의 Tomcat 인스턴스이고 다른 하나의 Tomcat 인스턴스에 여러 데이터 소스가있을 수 있습니다. 데이터 원본이 다른 경우 ..... 데이터베이스를 넘을 기회가 없다.