当应用程序部署在tomcat中的webapps文件夹中时,数据源失败

时间:2012-11-22 11:10:50

标签: java-ee tomcat tomcat7 jndi

我注册了一个域名www.mywebapp.com,并将名称服务器指向我的tomcat托管。 因此,当我给出www.mywebapp.com时,它会点击

  

的Tomcat / web应用/ mywebapp.com

和页面加载没有问题。所以很多部分是正确的。

但我无法为我的应用程序建立数据库连接(使用JNDI数据源),因为当我调用时 -

DBConnection.ds = (DataSource)ctx.lookup("java:comp/env/jdbc/atfdb"); 

它说

DB Connection NamingException error-->Name atfdb is not bound in this Context.

注意:

我正在使用tomcat7。

如果我直接在 tomcat / webapps 文件夹下部署应用程序,则会建立数据库连接,只有在 webapps / mywebapp.com 中部署该问题时才会出现此问题。< / p>

如果我们在 webapps / mywebapp.com 中部署war文件,是否有任何JNDI查找的特殊情况?

以下是我的配置

server.xml  inside tomcat/conf/server.xml
-------------------------------------------

<Host appBase="webapps/mywebapp.com" name="mywebapp.com" unpackWARs="true" autoDeploy="true">
      <Alias>www.mywebapp.com</Alias>
      <Context path="" docBase="ROOT" debug="0" reloadable="true"/>
      <Logger className="org.apache.catalina.logger.FileLogger" prefix="mywebapp.com"   suffix=".txt" timestamp="true"/>
      </Host>


context.xml in which I am configuring my datasource.


context.xml   inside webapps/mywebapp.com/META-INF
--------------------------------------------------

<Context>

  <Resource name="jdbc/atfdb" auth="Container" type="javax.sql.DataSource"
               removeAbandoned="true" maxActive="100" maxIdle="30" maxWait="10000"
               removeAbandonedTimeout="30" username="spadmin" password="password" 
               driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/socialdb?autoReconnect=true"/>

</Context>

1 个答案:

答案 0 :(得分:0)

我会在您的web.xml中添加资源引用:

<resource-ref>
    <description>atfdb description</description>
    <res-ref-name>jdbc/atfdb</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

这是符合Java EE标准的预期,因此当您使用其他文件夹时它的工作原理可能只是一个侥幸......