Estoy usando Apache CXF para generar clases desde un archivo WSDL pero no implementan Serializable, que es necesario para poner un objeto en una cola JMS. ¿Es posible hacer esto o tengo que convertir las clases generadas en las mías y enviarlas?¿Es posible generar clases serializables con CXF?
10
A
Respuesta
13
he encontrado la solución a mí mismo por lo que aquí es si alguien lo necesita en el futuro:
1. add this plugin to pom.xml
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${basedir}/src/main/java</sourceRoot>
<wsdlRoot>${basedir}/src/main/resources</wsdlRoot>
<includes>
<include>*Service.wsdl</include>
</includes>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/your_wsdl.wsdl</wsdl>
<extraargs>
<extraarg>-client</extraarg>
<extraarg>-impl</extraarg>
<extraarg>-server</extraarg>
<extraarg>-verbose</extraarg>
<extraarg>-validate</extraarg>
</extraargs>
<bindingFiles>
<bindingFile>${basedir}/src/main/resources/binding.xml</bindingFile>
</bindingFiles>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
2. write a custom binding (binding.xml)
<?xml version="1.0" encoding="UTF-8"?>
<jaxws:bindings wsdlLocation="Send.wsdl"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<jaxws:bindings
node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='http://wsdl/SendService.wsdl']">
<jxb:globalBindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<jxb:serializable uid="11082011"/>
</jxb:globalBindings>
</jaxws:bindings>
</jaxws:bindings>
3. run 'mvn generate-sources'
4
Una versión más simple de bindings.xml, que asegurarse de que todos los archivos generados están implementando Serializable:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
elementFormDefault="qualified" attributeFormDefault="unqualified"
jaxb:extensionBindingPrefixes="xjc" jaxb:version="2.1">
<xs:annotation>
<xs:appinfo>
<jaxb:globalBindings>
<xjc:serializable />
</jaxb:globalBindings>
</xs:appinfo>
</xs:annotation>
</xs:schema>
4
archivos vinculante con < jaxws: encuadernaciones > raíz de trabajo con elemento jaxb: globalBindings sólo si su wsdl tiene un solo esquema. El problema es que jaxb: globalBindings es global, por lo que no se puede especificar más de una vez.
Si ese es su caso, puede utilizar los siguientes enlaces de archivo con JAXB: encuadernaciones:
<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings version="1.0" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">
<jaxb:globalBindings>
<jaxb:serializable uid="1"/>
</jaxb:globalBindings>
</jaxb:bindings>
Cuestiones relacionadas
- 1. cxf: generar el constructor jaxb con argumentos
- 2. Clases generadas JAXB serializables con enlace JAX-WS
- 3. ¿Es posible instrumentar con clases javassist java core? Clases cargadas por el cargador de clases bootstrap
- 4. Java: ¿es posible generar la stacktrace con firmas de métodos?
- 5. ¿Es posible generar un código de cliente de servicios web en un paquete especial usando apache cxf en maven?
- 6. ¿Quién realmente implementa métodos serializables?
- 7. ¿Es posible crear clases Java desde JavaDoc?
- 8. ¿Es posible agregar un fondo CSS3 con clases/estilos adicionales?
- 9. ¿Es posible la carga de clases con varios subprocesos?
- 10. ¿Es posible generar tonos complejos en C#?
- 11. ¿Es posible generar PDF usando jQuery?
- 12. ¿Es posible generar automáticamente proyectos de Xcode?
- 13. ¿Es posible generar XML simple usando Haml?
- 14. serialización de Java con partes no serializables
- 15. ¿Cómo generar clases desde XSD que implemente serializable?
- 16. ¿Es posible generar clases de modelo utilizando Doctrine 2 directamente desde la base de datos?
- 17. mezcla MarshalByRefObject y serializables
- 18. ¿Será posible generar varias clases de nivel superior con una macro invocación en scala 2.10?
- 19. En Protobuf-net, ¿es posible serializar clases no decoradas?
- 20. xsd.exe para generar clases como archivos separados?
- 21. generar clases php en bash
- 22. ¿Cuál es el propósito de CXF o Spring WS
- 23. Instalación CXF con Eclipse 3.5
- 24. CXF sin resorte
- 25. ¿Es posible usar FFMPEG para generar videos F4V?
- 26. ¿Qué significa CXF en "Apache CXF"?
- 27. ¿Es posible generar el archivo PKCS12 (.pfx) correcto en Python?
- 28. Servicio web con CXF: cómo usar ResponseWrapper?
- 29. ¿Es posible generar modelos django desde la base de datos?
- 30. Si es posible generar un archivo PDF desde un UITableView?
Tenga en cuenta que usted necesita para hacer un par de cambios en el archivo de binding.xml. 1. Cambie 'Send.wsdl' en la línea 2 a cualquier nombre que tenga su WSDL, y 2. Reemplace el atributo' node' en la línea 8 con el espacio de nombres que desee, como se sugiere [aquí] (http: // markmail. org/message/aw52wgp6bdpwo5rx) –