2017-04-21 8 views
0

Grails 2에서 Grails 3로 전환하고 Tomcat의 Oracle 용 Jndi 데이터 소스와 관련하여 Tomcat 7과 Tomcat 7의 차이점을 다루고 있습니다. Tomcat 8.5.Grails Oracle on Tomcat - JNDI config - InstanceAlreadyExistsException 등의 오류

간단히 말해서, Grails 3 app ... Tomcat 8.5에서 오류가 발생합니다. Grails 2 응용 프로그램을 사용하면 Tomcat 8.5에서도 오류가 발생하지 않습니다. 톰캣 7

에 이것은 내가 항상 내 Grails의 응용 프로그램에서 참조 내 오라클 DB에 연결하는 톰캣에 사용할 것 JNDI의 설정은 다음과 같습니다

<Resource name="jdbc/myGrails" auth="Container" 
      type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" 
      url="jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = local)))" 
      username="USER" password="PW" 
      maxActive="100" maxIdle="30" maxWait="10000" 
      />  

그래서 내 Grails의 3 응용 프로그램과 함께이를 사용하는 경우 Tomcat 7 ... 괜찮습니다. 문제가 없습니다. 그러나 Tomcat 8.5에서 동일한 Grails 3 응용 프로그램을 사용하면 InstanceAlreadyExistsException이 발생하고 응용 프로그램이 시작되지 않습니다. 내가 그 오류 사항이 페이지에 온 : 해당 스레드에 제안 된 솔루션의 https://github.com/grails/grails-core/issues/9424

한 것은 추가했다 :

factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 

를 JNDI 구성에 ... 나는 것을 시도하고 얻을 것이다 이상한 결과 : 오류/예외가 발생하지만 앱이 적어도 지금까지 테스트 한 부분은 성공적으로 실행됩니다.

java.lang.ClassNotFoundException: Unable to load class: oracle.jdbc.OracleDriver from ClassLoader:[email protected];ClassLoader:ParallelWebappClassLoader 

다시, 심지어 제외하고, 응용 프로그램이 제대로 실행 않고 데이터베이스에 연결 : 이것은 내가 얻을 예외입니다. 하지만이 예외가 앱에 어떤 영향을 미칠지 걱정됩니다.

또한 설정과 같은 다른 솔루션을 제안 위에서 언급 한 링크 :

spring.jmx.enabled: false 

을하지만 ... 다른 일을 다시는-계속 시도하기 전에 표준/올바른 방법 누군가에 방법으로 제안 할 수 있는가 JNDI 리소스를 설정 하시겠습니까? 예를 들어, "공장"을 추가하고 그로부터 오는 오류를 해결하려고합니까?

  • 그것은하는 Grails의 3 응용 프로그램의 사용 Grails는 내가 톰캣 7 톰캣에 대한 WAR 파일을 배포 할 수 있도록하려면
  • 3.2.8 :

    내 응용 프로그램의 몇 가지 세부 사항을 명시합니다
  • 그것은 오라클 데이터베이스 응용 프로그램의 Grails의 2 버전으로
  • 를 사용하여 8.5, 내가 Grails는
  • 에게 톰캣 8.5 톰캣 7도에서 응용 프로그램의 3 버전의 오류를 얻을하지 않습니다, 나는 '돈 Tomcat 7에서는 오류가 발생하지 않습니다. 그러나 Tom cat 8.5 "InstanceAlreadyExists"예외로 시작하여 오류가 발생합니다.

답변

0

아래 페이지에서 볼 수 있듯이 JNDI 팩토리 속성을 org.apache.tomcat.jdbc.pool로 설정해야합니다. DataSourceFactory. Tomcat \ Lib 폴더에 ojdbc JAR 파일을 두어야하기 때문에 "java.lang.ClassNotFoundException : Unable to class : oracle.jdbc.OracleDriver"예외가 발생합니다. Grails 2와 함께 할 필요가 없으며 Tomcat 7이 필요한 Grails 3도 Grails 3 및 Tomcat 8 (또는 8.5) 이상에서만 작동하는 것으로 보입니다.

http://www.tomcatexpert.com/blog/2010/04/01/configuring-jdbc-pool-high-concurrency