我有一些tomcat应用程序,使用.war文件部署在tomcat中。尽管这些战争是彼此分离的,但它们都是更大概念/应用程序的一部分,而且通常,一场战争需要从另一场战争中调用代码。
假设我有2个.wars,“a.war”和“b.war”......我希望能够使用“a.war”中的一些类,从“b.war”中。当然,一种选择是将公共代码拆分为第三个“.jar”,但由于我不想进入的原因,这将导致其他问题(此外,在我的情况下,它不是一个案例) “公共代码”,但更像是“一个应用程序调用另一个”。)
我有什么选择?
答案 0 :(得分:1)
如果这里的意图是针对单独的.wars中的“子应用程序”在较大的应用程序的宏方案中相互通信,而不是共享代码/ lib,我建议:
Servlets - 设置Servlet以促进这些应用程序之间的通信,以便它们可以相互通信。在web.xml文件中注册servlet,为预期的servlet URL运行一些连接测试,然后您将立即启动并运行。
Webservices - 为您的应用找到合适的Web服务实现,并创建一个wsdl。
RMI,就像BranTheMan所暗示的那样。
Servlets之间的跨文本通信(尚未尝试过)
答案 1 :(得分:0)
如果只是“一个应用程序调用另一个应用程序”,则可以使用Java RMI。
答案 2 :(得分:0)
我不确定你是完全反对创建.jar,还是反对每个应用程序创建1个jar的想法,但在tomcat中有共享库的想法。
在Tomcat 5.5中,它位于/ shared /,在Tomcat 6中,它位于/ lib下面。如果你把.jars(或.class文件?从未尝试过)放在那里,它们可能被同一服务器实例中的任何.war引用。
一方面,这很好,使得.wars很好而且很小,并且可能有助于permgen空间,但另一方面,如果它们被许多.wars共享,很难对工件进行版本化。