2016-07-17 78 views
0

我是新來設置與Tomcat 8 DataSources並遇到麻煩。下面是我的配置:JTDS的Tomcat 8配置數據源

WEB-INF/web.xml中

<web app ... > 
    <servlet> ... </servlet> 
    <servlet-mapping> ... </servlet-mapping> 
    ... 
    <resource-ref> 
    <description>My DB</description> 
    <res-ref-name>jdbc/mydb</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
    </resource-ref> 
</web-app> 

WEB-INF/context.xml的

<Context> 
    <Resource name="jdbc/mydb" 
     auth="Container" 
     type="javax.sql.DataSource" 
     username="xirt" 
     password="*******" 
     driverClassName="net.sourceforge.jtds.jdbc.Driver" 
     url="jdbc:jtds:sqlserver://xirt.rds.amazonaws.com:1433/mydb" 
     maxActive="15" 
     maxIdle="3" /> 
</Context> 

的程序代碼:

Context initCtx = new InitialContext(); 
Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
DataSource ds = (DataSource) envCtx.lookup("jdbc/mydb"); 
System.out.println("DataSource: "+ds); 
Connection connection = ds.getConnection(); 

我運行在亞馬遜EC2上,所以用yum安裝了tomcat8:

sudo yum install java-1.8.0 
sudo yum install tomcat8 

我已經收到以下錯誤:

  1. ClassNotFoundException: org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory
    • 這似乎通過從他們的網站apache-tomcat-8.0.36.zip文件複製tomcat-dbcp.jar被解析爲$CATALINA_HOME/lib

然後:

  • java.sql.SQLException: Cannot create JDBC driver of class '' for connect URL 'null'
  • 我去了我的心與這一個...!

    要重現,只需在AWS上創建一個AMI實例,安裝JTDS驅動程序並嘗試連接到SQL服務器。

    +0

    您是否閱讀了關於如何在Amazon EC2上配置JDBC連接的文檔? – Andreas

    +0

    如果我使用DriverManager.getConnection(),我沒有問題,但這不是在Servlet中執行此操作的正確方法。這似乎是特定於Tomcat/JNDI – xirt

    回答

    0

    原來它更直截了當。

    context.xml文件需要放在META-INF/子目錄中,而不是.war文件中的WEB-INF/子目錄中。