2013-05-06 3 views
2

TomEE 및 tomee.xml에 지정된 DataSource를 사용하는 것과 관련하여 이상한 문제가 있습니다. Netbeans, TomEE 및 MySQL을 사용하고 있다는 점에 유의할 가치가 있습니다. 우분투 13.04 (최신 분투)에서 실행TomEE DataSource를 찾을 수 없습니다.

tomee.xml 파일은 다음과 같다 :

<?xml version="1.0" encoding="UTF-8"?> 
<tomee> 
    <Resource id="booktablesDS" type="DataSource"> 
     JdbcDriver com.mysql.jdbc.Driver 
     JdbcUrl jdbc:mysql:localhost:3306/book_tables 
     UserName juser 
     Password jpassword 
     JtaManaged true 
    </Resource> 
</tomee> 

그리고 작은 codesnippet을 연결 풀 테스트 :

@Resource DataSource booktablesDS; 

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     try { 

    Connection c = booktablesDS.getConnection(); 
    Statement stmt = c.createStatement(); 
    ResultSet rs = stmt.executeQuery("SELECT * FROM BOOKS"); 

난 출력을 TomEE에서 얻는 것은 :

SEVERE: null 
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' 

전체 스택 추적이 다음과 같습니다.

May 06, 2013 11:08:53 AM org.apache.catalina.util.LifecycleBase start 
INFO: The start() method was called on component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/EJBTest]] after start() had already been called. The second call will be ignored. 
May 06, 2013 11:08:54 AM MainS processRequest 
SEVERE: null 
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' 
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452) 
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371) 
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) 
    at MainS.processRequest(MainS.java:35) 
    at MainS.doGet(MainS.java:64) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:722) 
Caused by: java.lang.NullPointerException 
    at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(JdbcOdbcDriver.java:524) 
    at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(JdbcOdbcDriver.java:493) 
    at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(JdbcOdbcDriver.java:307) 
    at java.sql.DriverManager.getDriver(DriverManager.java:273) 
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437) 
    ... 22 more 

May 06, 2013 11:08:55 AM org.apache.catalina.startup.HostConfig deleteRedeployResources 
INFO: Undeploying context [/EJBTest] 

netbeans가 다른 tomee.xml 파일로 프로젝트를 배포하는 것처럼 느껴질까요? Tom-ee/conf/tomee.xml 아래에있는 tomee.xml의 값을 무시합니다.

도움이 될 것입니다.

답변

4

보인다.

jdbc:mysql:localhost:3306/book_tables 

jdbc:mysql://localhost:3306/book_tables 

당신이 MySQL의 드라이버 JAR이 tomee/lib 폴더가 실제로 있는지 다시 한 번 확인 할 수 있어야한다. 계속 같은 오류 출력

+0

그게 문제였습니다. // 거기에 없었다. .. 오 잘, 잘 알고있다! 이제 나는 더러운 지속 문제를 가지고 있습니다 ... –

+0

다행이 지금 있습니다. "//"가 잘못된 위치에있을 때 종종 문제가됩니다. :-) –

1

은 다음과 같이 코드를 변경 시도 : 귀하의 URL이 잘못처럼

@Resource(name = "booktablesDS", type = javax.sql.DataSource.class) 
DataSource booktablesDS; 
+0

아니, : SEVERE : 널 (null) org.apache.tomcat.dbcp.dbcp.SQLNestedException : –

+0

당신이에 JDBC 의존성을 추가 한 '연결 URL에 대한'클래스의 JDBC 드라이버를 만들 수 없습니다 null이 당신의 pom.xml (maven을 사용한다고 가정)? – Eugene

+0

글쎄 NetBeans는 자동으로 빌드하지만 디폴트로 메이 빙을 사용하고 있습니다. 그러나, 나는 서버가 _BASE_/lib 폴더에 있기 때문에 이것이 필요하지 않다고 생각했기 때문에 jdbc dep를 추가하지 않았다. 아직 pom.xml 파일을 건드리지 않았습니다 –

관련 문제