Java Linux上带有WAR文件的Tomcat 6的JNDI资源问题

Java Linux上带有WAR文件的Tomcat 6的JNDI资源问题,java,spring,tomcat,jndi,Java,Spring,Tomcat,Jndi,我对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=

我对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>

我试着在互联网上寻找答案,但似乎没有一个答案是完全相同的,而且tomcat配置文件和web应用程序之间的名称似乎匹配。

首先,tomcat不理解
myApp.xml
(除非你明确指出它,我不知道如何)。Tomcat基于上下文运行,可以为web应用程序配置上下文。Tomcat只允许部署Web应用程序归档(WAR)文件

要为应用程序创建上下文,请在Web应用程序的META-INF文件夹中创建一个
context.xml
(所有大小写,区分大小写)文件

有关配置上下文的参考指南,请参见。您将看到属性
debug
已弃用

Tomcat6的JNDI参考资料操作指南也提供了

在META-INF文件夹中创建
context.xml
后,将以下代码(取自示例)粘贴到下面:


(默认情况下,Tomcat使用PoolableDataSource进行连接池)

完成后,在
WEB-INF/WEB.xml
中配置
。这将允许您创建可共享的作用域。请参阅上提供的

我希望这对你有帮助

<bean id="myDatasource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName">
            <value>java:comp/env/jdbc/sql-connection</value>
        </property>
    </bean> 
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
<Context path="/myApp" docBase="/myApp.war" reloadable="true" cookies="true">
    <Resource name="jdbc/sql-connection" type="javax.sql.DataSource" auth="Container" username="test" password="test" driverClassName="net.sourceforge.jtds.jdbc.Driver" url="jdbc:jtds:sqlserver://xxxx:xxxx;appName=myApp" removeAbandoned="true" logAbandoned="true" /> 
</Context>