Apache CXF WSDL2Java no genera método con parámetro de entrada

Estoy tratando de generar código java desde un wsdl usando Apache CXF-2.5.2 WSDL2Java. Aquí está mi archivo WSDL:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:tns="http://soa.mytest.com/services/wsdl/test1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns0="http://soa.mytest.com/test/messages/test1" name="TestManifestPT" targetNamespace="http://soa.mytest.com/services/wsdl/test1" xmlns:jms="http://www.tibco.com/namespaces/ws/2004/soap/binding/JMS" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:jndi="http://www.tibco.com/namespaces/ws/2004/soap/apis/jndi">
    <wsdl:types>
        <xs:schema xmlns:tns="http://soa.mytest.com/test/messages/test1" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://soa.mytest.com/test/messages/test1" version="1.2.0" elementFormDefault="qualified" attributeFormDefault="unqualified">
            <xs:complexType name="TestManifest">
                <xs:complexContent>
                    <xs:extension base="tns:Notification"/>
                </xs:complexContent>
            </xs:complexType>
            <xs:complexType name="Message" abstract="true">
                <xs:attribute name="version" type="tns:Version"/>
            </xs:complexType>
            <xs:complexType name="Notification">
                <xs:complexContent>
                    <xs:extension base="tns:Message"/>
                </xs:complexContent>
            </xs:complexType>
            <xs:simpleType name="Version">
                <xs:restriction base="xs:string"/>
            </xs:simpleType>
            <xs:element name="TestManifest" type="tns:TestManifest"/>
        </xs:schema>
    </wsdl:types>
    <wsdl:message name="TestManifest">
        <wsdl:part name="body" element="ns0:TestManifest"/>
    </wsdl:message>
    <wsdl:portType name="TestManifestPT">
        <wsdl:operation name="TestManifest">
            <wsdl:input message="tns:TestManifest"/>
        </wsdl:operation>       
    </wsdl:portType>
    <wsdl:binding name="SOAPService_Binding1" type="tns:TestManifestPT">
        <soap:binding style="document" transport="http://www.tibco.com/namespaces/ws/2004/soap/binding/JMS"/>
        <jms:binding messageFormat="text"/>
        <wsdl:operation name="TestManifest">
            <wsdl:documentation/>
            <soap:operation style="document" soapAction="TestManifest"/>
            <wsdl:input>
                <soap:body use="literal" parts="body"/>
            </wsdl:input>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="TestManifestPT">
        <wsdl:port name="SOAPService_Binding1" binding="tns:SOAPService_Binding1">
            <soap:address location=""/>
            <jndi:context/>
            <jms:connectionFactory>GenericConnectionFactory</jms:connectionFactory>
            <jms:targetAddress destination="queue">INSTRUMENT.BULK.REQUEST</jms:targetAddress>
        </wsdl:port>
    </wsdl:service>
   </wsdl:definitions>

para la operación "Testmanifest", el código java generado no tiene un parámetro de entrada.

    package com.mytest.soa.services.testmaster.testbulkresponse.wsdl.test1;

import javax.jws.Oneway;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.RequestWrapper;
import org.apache.cxf.annotations.DataBinding;

/**
 * This class was generated by Apache CXF 2.5.2
 * 2012-06-07T12:00:34.142+05:30
 * Generated source version: 2.5.2
 * 
 */
@WebService(targetNamespace = "http://soa.mytest.com/services/testmaster/TestBulkResponse/wsdl/test1", name = "TestManifestPT")
@DataBinding(org.apache.cxf.xmlbeans.XmlBeansDataBinding.class)
public interface TestManifestPT {

    @Oneway
    @RequestWrapper(localName = "TestManifest", targetNamespace = "http://soa.mytest.com/test/messages/test1", className = "com.mytest.soa.test.messages.test1.TestManifestDocument")
    @WebMethod(operationName = "TestManifest", action = "TestManifest")
    public void testManifest();
}

El mismo wsdl cuando se usa con Axis2-1.6.1, genera la función "testManifest" con el parámetro de entrada. Cualquier ayuda es apreciada. Gracias por adelantado.

preguntado el 11 de junio de 12 a las 19:06

Tenemos que ver su esquema para determinar la causa. El esquema con el prefijo de espacio de nombres ns0. "ns0: TestManifest"... -

Actualicé el archivo wsdl anterior, puede consultar el esquema ahora. -

El esquema parece correcto. Lo único que se me ocurre es que CXF no maneja correctamente la parte abstracta del tipo de mensaje. Intenta quitar eso. -

Eliminé la parte abstracta del tipo de mensaje y lo intenté de nuevo. Pero sigue siendo el mismo resultado. -

Además, no queremos cambiar el WSDL. Dado que el mismo wsdl funciona bien con apache axis2. -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.