exception - 在 Tomcat 7 中使用不同的 ROOT 应用程序时 JNDI 资源不可用

标签 exception tomcat jndi configuration-files windows-server-2008-r2

我终于在 tomcat 上运行了我的应用程序,问题是:

Frist problem with JNDI JDBC resource

现在我有另一个问题:

我已经更改了 Tomcat 中的默认 ROOT 应用程序:

[%CATALINA_HOME%\conf\server.xml]

  <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
       <Context path="" docBase="MY_APP" reloadable="true" debug="0" cookies="false"></Context>
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"       prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  </Host>

然后,在重新启动 tomcat 后,我​​尝试访问:并且它工作正常!

后来我发布了新版本的MY_APP。我部署了它,又遇到了原来的问题: Original problem

我检查了所有配置文件,一切似乎都正常,所以我尝试访问:http://localhost/MY_APP 并且成功了!但是通过 http://localhost/ 访问的问题仍然存在......

我已经从“webapps”目录中删除了所有其他应用程序。现在 webapps 只包含 MY_APP。 通过

访问
  • http://localhost/MY_APP --> 它有效!
  • http://localhost/ --> JNDI JDBC 资源异常

你能告诉我我做错了什么吗?我找不到任何解释...

操作系统:Windows 2008 R2 Standard SP1 虚拟机:JDK 1.7u10 TOMCAT:apache-tomcat-7.0.34

谢谢!

最佳答案

由于包含 <Context>,您可能正在经历双重部署server.xml 中的元素.

首先,停止这样做:删除 <Context>来自 server.xml .

接下来,将您的 WAR 文件重命名为 ROOT.war (注意这是区分大小写的,即使在像 NTFS 这样通常忽略大小写的文件系统上也是如此)并将其放入 %CATALINA_BASE%/webapps (无论如何,它可能就在那里)。

你的 webapp 应该包含一个 META-INF/context.xml你的<Context>所在的文件元素应该去,包括任何 <Resource>元素作为 child 。这就是您获取 JNDI 引用集的地方。

正确部署后,您的 web 应用程序应作为默认/ROOT 上下文工作,JNDI 正常工作。

关于exception - 在 Tomcat 7 中使用不同的 ROOT 应用程序时 JNDI 资源不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14344348/

相关文章:

mysql - Delphi查找异常的具体原因

java - Tomcat创建文件的路径

spring - TOMCAT 7 访问 WEB INF/类之外的属性文件

java - Spring 项目如何访问 JBoss JNDI 数据源

c# - 应用程序立即崩溃并出现 FileNotFoundException

python - 在 Python 中覆盖 threading.excepthook 的正确方法是什么?

java - 使用 throws 关键字并在 main 中处理它,而不是在它发生的方法中处理它

java - 如何实现从 WAR 中提取的共享接口(interface)

java - 在 AS7 中转换查找的 EJB View 时出现 ClassCastException

java - JNDI 依赖项是什么?