2012-03-23 51 views
0

我想將所有數據庫信息移出項目,以便SA可以設置服務器並從DEV-> QA-> PROD移動相同的WAR,而不需要更改WAR文件中的任何內容。我們將JNDI設置爲tomcat6上的MySQL數據庫。這爲什麼有效? JNDI,Tomcat6

以下添加到server.xml

<Resource name="jdbc/mi" auth="Container" type="javax.sql.DataSource" 
       username="xxx" password="xxx" 
       url="jdbc:mysql://xx" 
       driverClassName="com.mysql.jdbc.Driver" 
       initialSize="5" maxWait="5000" 
       maxActive="120" maxIdle="5" 
       validationQuery="select 1" 
       poolPreparedStatements="true"/> 

但該項目不工作的權利。我得到以下錯誤:

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

如果我setupp在我的項目中的一切內容相同的信息/META-INF/context.xml運行很好,但SA不希望在我的戰爭服務器的信息。它會是什麼?有人可以幫助我在這一個..我在互聯網上搜索,並試圖一切,但沒有任何作品..請幫助程序員了!

回答

1

您是否在項目中設置了WEB-INF/web.xml?它應該包含這樣的

<resource-env-ref> 
    <resource-env-ref-name>jdbc/mi</resource-env-ref-name> 
    <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type> 
</resource-env-ref> 

你沒有提到它在你的問題,所以它可能會丟失。看到這個Java documentationthe Tomcat6' one

1

在你的context.xml,你需要的資源鏈接,以便應用程序知道在全球範圍內尋找資源。

<ResourceLink name="jdbc/mi" global="jdbc/mi"/> 
1

除了上述的答案,你需要確保JDBC庫您的數據庫被放置在$ {} TOMCAT_HOME/lib文件夾。