我有一个关于使用 wsimport 工具生成 Java 工件的问题(由 Maven Jax-WS 提供)
当我从 WSDL 生成 Java 工件时,我想将 Web 服务项目打包为 WAR 文件,并将其客户端打包为 JAR 文件。
将生成的工件放在哪里以及将 WSDL 放在哪里?组织 Web 服务项目的最佳实践是什么?
先感谢您!
最好的问候, Jurica Krizanic
客户端和服务器端都需要这些工件,因此将它们打包在第三个 jar 中并将其设置为两者的依赖项。WSDL 应该转到 war 的 WEB-INF 文件夹,并且应该设置和 的wsdlLocation
属性以反映它的路径。@WebService
@WebServiceClient
JSR 109: Web Services for Java EE, Version 1.3中定义了托管服务的打包选项。
对于服务:
5.4.2 EJB 模块封装
...EJB-JAR 文件中的 Web 服务部署描述符位置是
META-INF/webservices.xml
. wsdl 目录位于META-INF/wsdl
.5.4.3 Web App模块打包
...Web 服务部署描述符位于 WAR 中
WEB-INF/webservices.xml
,wsdl 目录位于WEB-INF/wsdl
.
对于客户:
客户端可以是以下任何一种:Java EE 应用程序客户端、Web 组件、EJB 组件或其他 Web 服务。
Web 服务客户端部署描述符在模块中的位置是特定于模块的。WSDL 文件相对于模块的根目录定位,并且通常位于
wsdl
与模块部署描述符位于同一位置的目录或其子目录中。
请注意,此规范仅限于 Java EE 客户端;这并不意味着您不能在其中显式提供 WSDL的非托管客户端。
交叉参考这些规范以获取更多详细信息: