Web 服务作为 JAR 文件,还是另一个 WAR 中的 WAR?

Posted

技术标签:

【中文标题】Web 服务作为 JAR 文件,还是另一个 WAR 中的 WAR?【英文标题】:Web service as a JAR file, or WAR inside another WAR? 【发布时间】:2011-08-26 10:03:35 【问题描述】:

我有一个在 Tomcat 6 上运行的 SOAP Web 服务(使用 Spring Web 服务,Java)

现在我想将此 Web 服务合并到另一个大型 Web 应用程序(使用 Spring、Java 而非 Web 服务)并将 Web 服务用作主 Web 应用程序的插件。我的意思是当我运行我的主应用程序时,我的网络服务也将开始运行。他们将使用相同的资源。

主 Web 应用程序已经有几个插件,它们是其 WEB-INF/LIB 文件夹中的 JAR 文件。但是我的 Web 服务是 WAR 文件,所以我可以在另一个 Web 应用程序 WEB-INF/LIB 文件夹中使用 Web 应用程序(WAR 文件)吗?

如果我不能这样做,可以删除我的 Web 服务的 WEB-INF 文件夹并将我的 Web 服务设为 JAR 文件并将其放在我的主要应用程序 WEB-INf/LIB 下文件夹?我不确定是否可以将 Web 服务作为 JAR 文件提供。

您认为哪种方法更好或您有其他建议?

谢谢

【问题讨论】:

【参考方案1】:

我建议您从您的 web 服务中创建一个 JAR 并将其放在 lib 文件夹中。 java 的好处在于,只要您正确加载代码,代码的位置并不重要。

我认为你不能在 WAR 中拥有 WAR。但是,您可以将两个 WAR 项目合并为一个(例如,可以由 maven 构建系统执行)。尽管如此,合并 WAR 是一种复制粘贴覆盖操作,这有很多不足之处。

【讨论】:

你能告诉我更多如何用 spring-ws 肥皂网络服务制作一个罐子吗? 只需使用您喜欢的 IDE 创建一个常规的 jar 项目,或者按照 Oracle's guide 从您的 java 文件手动创建它。这个 webservice jar 文件必须与任何其他 jar 文件没有什么不同。请记住在您的 WAR 项目中也包含 spring-ws 依赖项作为 jar 文件。 谢谢,所以我只会删除我的 web 服务的 WEB-INF 文件夹(因为我想使用主应用程序 web-inf 文件夹)并将所有内容添加到 jar 文件中,包括我所有的 xmlconfiguration 文件( spring.wsdl,applicationcontext.xml..etx),它会工作吗? 可以将例如配置文件存储在 jar 中,但您必须确保也从 jar 中加载它!我建议将配置(spring.wsdl、applicationcontext.xml 等)放在导入 webservice jar 的 WAR 项目中。 在这种情况下,我如何才能从我的 web 服务访问 WAR 文件 web-infs 文件夹?如果我直接写 schemaLocation="/WEB-INF/schemas/Response.xsd"/> 会引用WAR文件的WEB-INF文件夹吗?【参考方案2】:

我已将相关的 servlet 和一些配置复制到主网络应用程序中。还专门为 web 服务类提供了一些包并添加了所需的依赖项。

【讨论】:

以上是关于Web 服务作为 JAR 文件,还是另一个 WAR 中的 WAR?的主要内容,如果未能解决你的问题,请参考以下文章

更新 Spring Boot 以生成 WAR 文件而不是 JAR 文件

部署 WAR 还是“胖”JAR?

HotSwapAgent:如何将它用于WAR文件中的类?

java的war、jar、ear包的作用分别是啥?

将项目打包成War包与打包成Jar包的区别及应用场景

jar和war的区别