【发布时间】:2016-09-12 17:22:35
【问题描述】:
我有一个 EJB 项目(在 Websphere 中运行),它也是一个 WebService 客户端。以前,我们使用wsimport 命令手动创建客户端类。现在我们想使用JAX-WS Maven Plugin,目标jaxws:wsimport 来自动化这个过程。
这一代几乎是完美的,除了一个事实:webservice 类(带有注释@WebService)也应该有@Stateless 注释。如果没有这个,Eclipse 会抱怨 EJB 模块中的@WebService 注释只能用于无状态会话 bean。实际上,这些类的早期版本(可能是使用手动 wsimport 创建的)具有 @Stateless 注释。
我想它应该有一些配置告诉wsimport 以将类生成为无状态。但是,我在 wsimport 文档和 Maven 插件中都没有找到它。
下面我展示了我的 POM 配置:
<properties>
<wsdl.dirs>${basedir}/src/main/resources/META-INF</wsdl.dirs>
<wsdl.package.basic>com.porto.sinistro.orcamentomultiempresa</wsdl.package.basic>
</properties>
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.3</version>
<executions>
<!--
Other executions, using other WSDL files.
-->
<execution>
<id>wsdl-cartaAutorizacao-exec</id>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<packageName>${wsdl.package.basic}.upload.cartaAutorizacao.client</packageName>
<wsdlFiles>
<wsdlFile>${wsdl.dirs}/CartaAutorizacaoWSService.wsdl</wsdlFile>
</wsdlFiles>
<wsdlLocation>META-INF/CartaAutorizacaoWSService.wsdl</wsdlLocation>
</configuration>
</execution>
</executions>
<configuration>
<bindingDirectory>${basedir}/src/main/java</bindingDirectory>
<sourceDestDir>${basedir}/src/main/java</sourceDestDir>
<verbose>true</verbose>
<target>2.0</target>
<xnocompile>true</xnocompile>
</configuration>
</plugin>
</plugins>
对于上面提到的WSDL,Webservice类有这样的形式:
@WebService(name = "CartaAutorizacaoWS", targetNamespace = "http://client.ws.soma.upload.sinistro.porto.com/cartaautorizacao")
// Where is the @Stateless?
public interface CartaAutorizacaoWS {
// ...
}
要生成@StatelessWebServices,应该做哪些配置?
谢谢,
拉斐尔·阿方索
【问题讨论】: