【发布时间】:2010-11-03 09:54:29
【问题描述】:
我对 Tomcat 和 Java Web 开发还很陌生,我遇到了一个问题。
我有一个在我的本地机器(windows xp)上运行良好的 Web 应用程序,我安装了 Tomcat 6,并将 WAR 文件部署到 webapps 文件夹和 c:/apache-tomcat-6.0.18/conf/ Catalina/localhost/ 目录我有“myApp.xml”。
myApp.xml 包含以下内容:
<Context path="/myApp" docBase="/myApp.war" debug="1" reloadable="true" cookies="true">
<Resource name="jdbc/sql-connection" scope="Shareable" type="javax.sql.DataSource" auth="Container" username="test" password="test" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" driverClassName="net.sourceforge.jtds.jdbc.Driver" url="jdbc:jtds:sqlserver://xxxx:xxxx;appName=myApp" removeAbandoned="true" logAbandoned="true" />
</Context>
然后在我的网络应用程序中,我的 applicationContext 文件中有以下信息
<bean id="myDatasource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/sql-connection</value>
</property>
</bean>
现在我已经从在本地机器上正常工作到在 Linux 机器上部署它,但是当我在那里部署它时,使用完全相同的设置只是 tomcat 从“opt/apache-tomcat-”运行6.0.18"。每次我尝试在盒子上启动 Tomcat 时,它都会解压缩 WAR 文件但不会启动它,并且每当我尝试通过管理器启动它时都会出现以下错误:
Error creating bean with name 'myDatasource' defined in file [/opt/apache-tomcat-6.0.18/webapps/myApp/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
我尝试在整个互联网上寻找答案,但似乎没有完全相同的问题,并且名称似乎在 tomcat 配置文件和网络应用程序之间匹配。
【问题讨论】: