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

时间:2018-12-21 19:53:13

标签: java tomcat

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

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

错误日志:

  

com.sun.faces.lifecycle.InvokeApplicationPhase.execute#{action.sendEmail}:java.lang.IllegalArgumentException:资源不存在:/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/。
  • 似乎某些东西还不够孤立。

1 个答案:

答案 0 :(得分:0)

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

如果在错误的应用程序中,请将其移动。

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

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

潜在的缺点是您现在有两个模板副本,并且如果需要保持它们相同,则将面临维护方面的挑战。

不太容易的答案是找出一种方法,使一个应用程序访问另一应用程序的资源。在功能完善的Java EE服务器中,您可以将两个应用程序捆绑到一个.ear文件中,并提供对另一个应用程序的访问权限,但是Tomcat不支持.ear文件...

如果只是一个文件,我将其复制。 但是请注意项目-如果您开始需要处理大量文件(无论您对“批次”的定义是什么),那么您应该找出一种共享资源的方法。