Ich habe ein EJB-Projekt (in Websphere ausführen), die auch ein WebService-Client ist. Zuvor haben wir die Clientklassen manuell mit dem Befehl wsimport erstellt. Jetzt wollen wir den Prozess mit dem , Ziel jaxws:wsimport automatisieren.Wie @Stateless mit wsimport generieren
Die Generation ist fast perfekt, abgesehen von einer Tatsache: die Webservice-Klassen (mit der Anmerkung @WebService
) sollten auch die @Stateless
Annotation haben. Ohne dies beschwert sich Eclipse, dass die Annotation @WebService in EJB-Modulen nur für Stateless-Session-Beans verwendet werden kann. Tatsächlich hatten die früheren Versionen dieser Klassen (die vermutlich mit manuell wsimport erstellt wurden) die Annotation @Stateless.
Ich nehme an, dass es einige Konfiguration wsimport
zu sagen haben sollte die Klassen als Stateless zu erzeugen. Allerdings habe ich es weder in der wsimport Dokumentation noch im Maven Plugin gefunden.
Im Folgenden werde ich meine POM Konfiguration zeigen:
<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>
Für die WSDL oben erwähnt, hat die WebService-Klasse dieses Formular:
@WebService(name = "CartaAutorizacaoWS", targetNamespace = "http://client.ws.soma.upload.sinistro.porto.com/cartaautorizacao")
// Where is the @Stateless?
public interface CartaAutorizacaoWS {
// ...
}
Welche Konfiguration sollte ich @Stateless
WebServices zu generieren tun?
Danke,
Rafael Afonso