当Tomcat在另一个已部署的应用程序中查找资源时,该怎么办



我在tomcat/webapps下有两个应用程序,appOne正试图在appTwo子文件夹中查找资源。

我在logs/catalina.out中看到Tomcat找不到resource/pages/templates/email-message.xhtml(它确实存在于appOne子文件夹下)。

错误日志:

com.sun.faces.lifecycle.InvokeApplicationPhase.execute#{action.sendEmail}:java.lang.IollegalArgumentException:资源不存在:/pages/templates/email-message.xhtml

如果我将资源appOne/pages/templates/email-template.xhtml复制到appTwo/pages/templates/(我实际上有其他模板),Tomcat将找到该资源。

我该怎么办?

[编辑1]:

  • 我可以登录这两个应用程序,这似乎还可以
  • 我不想在这些应用程序之间共享任何资源
  • 我希望appOne和appTwo使用自己的/pages/templates/
  • 如果我删除appTwo并重新启动Tomcat,appOne最终将使用它自己的/pages/templates/
  • 似乎有些东西还不够孤立

我想这是为什么它在另一个应用程序中的问题。他们都使用它吗,还是只是在错误的应用程序中使用了它。

如果它在错误的应用程序中,只需移动它。

如果两者都使用它,你至少有两个选择。

简单的答案是将模板复制到缺少它的应用程序中

潜在的缺点是,您现在有两个模板副本,如果您需要保持它们不变,那么您就面临维护挑战。

不太容易的答案是找出一种方法让一个应用程序访问另一个应用软件的资源。在成熟的JavaEE服务器中,您可以将两个应用程序捆绑到.ear文件中,并允许其中一个访问另一个,但Tomcat不支持.ear文件。。。

如果它只是一个文件,我会直接复制它。但要密切关注这个项目——如果你开始需要用很多文件来完成这项工作(无论你对"很多"的定义是什么),那么你应该找到一种共享资源的方法。

最新更新