作为一个JAR文件或者WAR文件嵌套在另一个WAR文件中,Web服务应该如何部署?

7
我有一个在Tomcat 6上运行的SOAP Web服务(使用Spring Web Services和Java编写)。
现在,我想将此Web服务合并到另一个大型Web应用程序中(使用Spring、Java而不是Web服务),并将Web服务用作主Web应用程序的插件。我的意思是当我运行我的主应用程序时,我的Web服务也会开始运行。它们将使用相同的资源。
主Web应用程序已经有几个插件,这些插件是位于其WEB-INF/LIB文件夹中的JAR文件。但是,我的Web服务是一个WAR文件,那么我可以在另一个Web应用程序的WEB-INF/LIB文件夹中使用Web应用程序(WAR文件)吗?
如果我不能这样做,是否可以删除我的Web服务的WEB-INF文件夹,并将其制作成JAR文件并放置在我的主应用程序的WEB-INF/LIB文件夹下?我不确定能否将Web服务作为JAR文件提供。
你认为哪种方法更好,或者你有其他建议吗?
谢谢
2个回答

6
我建议您将您的webservice制作成JAR文件并放在lib文件夹中。Java的好处在于,只要您正确加载它,代码所在的位置并不重要。
我认为您不能在WAR中嵌套WAR。但是,您可以将两个WAR项目合并为一个(例如,使用Maven构建系统)。然而,合并WAR是一个复制粘贴覆盖操作,这样做可能会留下许多问题。

你能告诉我更多关于如何将Spring-WS SOAP Web服务打包成JAR文件的方法吗? - Spring
只需使用您喜爱的IDE创建常规的jar项目,或按照Oracle指南手动从您的Java文件创建它。这个Web服务jar文件与任何其他jar文件没有区别。只需记得在WAR项目中也将spring-ws依赖项作为jar文件包含进去即可。 - Johan Sjöberg
谢谢,那么我只需要删除我的webservice的WEB-INF文件夹(因为我想使用主应用程序的web-inf文件夹),并将所有内容添加到jar文件中,包括所有我的xml配置文件(spring.wsdl,applicationcontext.xml..etx),它就可以工作了吗? - Spring
您可以将例如配置文件存储在JAR中,但必须确保您也从JAR中加载它!我建议将配置(spring.wsdl、applicationcontext.xml等)放在导入Web服务JAR的WAR项目中。 - Johan Sjöberg
1
在这种情况下,我的Web服务如何访问WAR文件的web-inf文件夹?如果我直接编写schemaLocation="/WEB-INF/schemas/Response.xsd",它是否会引用WAR文件中的WEB-INF文件夹? - Spring

0

我已经将相关的servlet和一些配置复制到了主Web应用程序中。同时,我还专门为Web服务类分配了几个包,并添加了所需的依赖项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接