2010-12-10 48 views
2

所以我有一個context.xml文件放在我的META-INF下。只有一個context.xml文件。Tomcat上下文和JDBC ...我做錯了什麼?

我的問題: 當我拉出來的InitialContext使用jdbc/myDataSource的進入,我得到了非常普遍的例外「名稱JDBC是不是在這方面的約束」。當有人試圖使用jdbc/myDataSource從InitialContext中獲取它時,如何設置Context/Tomcat以成功返回我的DataSourceFactory?

注意:我無法控制DataSourceFactory的獲取方式。 此外,我驗證了我可以通過java:comp/env/jdbc/myDataSource訪問數據源。在context.xml中

上下文項文件看起來像這樣:

<Context shallowOutput="true" path="/"> 
    <WatchedResource>WEB-INF/web.xml</WatchedResource> 

     <Resource name="jdbc/myDataSource" 
      auth="Container" 
      type="javax.sql.DataSource" 
      factory="org.apache.commons.dbcp.BasicDataSourceFactory" 
      driverClassName="oracle.jdbc.driver.OracleDriver" 
      username="OMITTED" 
      password="OMITTED" 
      url="OMITTED" 
      maxActive="20" 
      maxIdle="10" 
      maxWait="-1"/> 
</Context> 

在我的web.xml中的條目是這樣的:

<resource-ref> 
    <res-ref-name>jdbc/myDataSource</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

回答

1

嘗試的java:/ JDBC/myDataSource

+0

將java:/ jdbc/myDataSource放在'res-ref-name'或資源名稱中,還是兩者兼而有之? – Polaris878 2010-12-10 20:24:01

+1

在web.xml和context.xml中命名將相同,但在訪問時我們需要將java:添加到任何jndi資源名稱。爲了從容器中訪問JNDI資源,我們將使用java:comp/env並設置其他上下文屬性 – 2010-12-10 20:25:39

+0

正如問題所述,我無法控制資源的訪問方式......它將始終使用「jdbc/myDataSource」。所以,我需要配置我的Web.xml或Context.xml以使其工作。 – Polaris878 2010-12-10 20:30:47