我注册了一个域名www.mywebapp.com,并将名称服务器指向了我的tomcat托管。
因此,当我给出www.mywebapp.com时,它就会
tomcat / webapps / 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中时才会出现。
如果我们在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>
最佳答案
我将资源引用添加到您的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标准所期望的,因此当您使用其他文件夹时它可以工作的事实可能只是a幸。