2013-05-06 46 views
2

我有一個關於TomEE和使用tomee.xml中指定的DataSource的奇怪問題。 可能值得注意的是我使用的是Netbeans,TomEE和MySQL。運行在Ubuntu 13.04(Xubuntu上最新)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文件?忽略我的tomee.xml中的值,它位於tom -ee/conf/tomee.xml下

幫助將很棒。

回答

4

看起來你的網址是錯誤的。

jdbc:mysql:localhost:3306/book_tables 

應該

jdbc:mysql://localhost:3306/book_tables 

你能仔細檢查MySQL驅動JAR是否真的有在tomee/lib文件夾中。

+0

這是問題所在。 //不在那裏......噢,很高興知道!現在我有一些討厭的持久性問題,而不是... – 2013-05-15 12:02:00

+0

現在很高興它的作品。 「//」在錯誤的地方常常是問題。 :-) – 2013-05-15 12:05:03

1

嘗試改變你這樣的代碼:

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

不,還是一樣的錯誤輸出: 重度:空 org.apache.tomcat.dbcp.dbcp.SQLNestedException:不能「的連接網址」創建一流的「JDBC驅動程序無效」 – 2013-05-07 07:09:30

+0

你有沒有加入JDBC的依賴到您的pom.xml(我想你使用maven)? – Eugene 2013-05-07 07:36:54

+0

NetBeans自動構建它,但它使用maving作爲默認值。但是,不,我沒有添加jdbc dep,因爲我認爲這不是必須的,因爲服務器將它放在_BASE_/lib文件夾中。我還沒碰touch pom.xml文件 – 2013-05-07 08:18:16