Tomcat 雄猫;将一场战争引用为另一场战争中的库

Tomcat 雄猫;将一场战争引用为另一场战争中的库,tomcat,reference,war,Tomcat,Reference,War,我有一些tomcat应用程序,使用.war文件部署在tomcat中。尽管这些战争彼此独立,但它们都是更大概念/应用程序的一部分,而且通常,一场战争需要调用另一场战争的代码 假设我有2场战争,“a战争”和“b战争”。。。我希望能够从“b.war”中使用“a.war”中的一些类。当然,一种选择是将公共代码拆分为第三个“.jar”,但由于我不想深入讨论的原因,这将导致其他问题(此外,在我的例子中,这不是“公共代码”,而是更像“一个应用程序调用另一个应用程序”。) 我在这里有什么选择?如果只是“一个应用

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

假设我有2场战争,“a战争”和“b战争”。。。我希望能够从“b.war”中使用“a.war”中的一些类。当然,一种选择是将公共代码拆分为第三个“.jar”,但由于我不想深入讨论的原因,这将导致其他问题(此外,在我的例子中,这不是“公共代码”,而是更像“一个应用程序调用另一个应用程序”。)

我在这里有什么选择?

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

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

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

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

  • Web服务-为您的应用程序找到合适的Web服务实现,并创建wsdl

  • RMI,就像BranTheMan建议的那样

  • servlet之间的跨上下文通信(尚未尝试此操作)

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

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

  • Web服务-为您的应用程序找到合适的Web服务实现,并创建wsdl

  • RMI,就像BranTheMan建议的那样

  • servlet之间的跨上下文通信(尚未尝试此操作)


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

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


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

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

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


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

    也许我误解了tomcat的工作原理。。。tomcat“webapps”目录中的两个.war应用程序不是共享同一个jvm吗?如果是这样,servlet、webservices和rmi都是多余的;在tomcat中必须有更好的应用程序集成方法,然后深入到套接字级别。。。我希望…如果.wars都在同一个tomcat webapps目录下运行,那么它们将在一个tomcat jvm下运行。我在考虑多个tomcat部署,每个应用程序一个,但看看最初的问题,你是对的。servlet的跨上下文功能在一个tomcat容器中可能很有用:也许我误解了tomcat的工作原理。。。tomcat“webapps”目录中的两个.war应用程序不是共享同一个jvm吗?如果是这样,servlet、webservices和rmi都是多余的;在tomcat中必须有更好的应用程序集成方法,然后深入到套接字级别。。。我希望…如果.wars都在同一个tomcat webapps目录下运行,那么它们将在一个tomcat jvm下运行。我在考虑多个tomcat部署,每个应用程序一个,但看看最初的问题,你是对的。对于一个tomcat容器,servlet的跨上下文能力可能很有用: