1

我有一些 tomcat 应用程序,使用 .war 文件部署在 tomcat 中。尽管这些战争彼此分开,但它们都是更大概念/应用程序的一部分,而且很多时候,一场战争需要从另一场战争中调用代码。

假设我有 2 个 .war,“a.war”和“b.war”......我希望能够从“b.war”中使用“a.war”中的一些类。一种选择当然是将通用代码拆分为第三个“.jar”,但由于我不想进入的原因,这会导致其他问题(此外,在我的情况下,情况并非如此“通用代码”,但更像是“一个应用程序调用另一个应用程序”。)

我在这里有什么选择?

4

3 回答 3

1

如果这里的目的是让单独的 .wars 中的“子应用程序”在更大应用程序的总体方案中相互通信,而不是共享代码/库,我建议:

  1. Servlet - 设置 Servlet 以促进这些应用程序之间的通信,以便它们可以相互通信。在您的 web.xml 文件中注册 servlet,为预期的 servlet url 运行一些连接测试,您很快就会启动并运行。

  2. Webservices - 为您的应用程序找到合适的 Web 服务实现,并创建一个 wsdl。

  3. RMI,就像 BranTheMan 建议的那样。

  4. Servlet之间的crossContext通信(没试过这个)

于 2010-01-18T22:20:23.100 回答
0

我不确定您是否反对完全创建 .jar,或者只是反对为每个应用程序创建 1 个 jar 的想法,但在 tomcat 中有共享库的想法。

在 Tomcat 5.5 中,它位于 /shared/ 中,而在 Tomcat 6 中,它位于 /lib 下。如果您将 .jars(或 .class 文件?从未尝试过)放在那里,它们可能会被同一服务器实例中的任何 .war 引用。

一方面,这很好,使 .wars 变得又好又小,并且可能有助于 permgen 空间,但另一方面,如果工件被许多 .wars 共享,则很难对工件进行版本化。

于 2010-01-19T14:16:56.947 回答
0

如果只是“一个应用程序调用另一个应用程序”,则可以使用 Java RMI。

于 2010-01-18T21:58:10.830 回答