BIRT не работает с параметрами метода Java 1.6 JAX-WS

В моем предыдущем вопросе здесь (содержит всю исходную информацию) я спросил, почему мой WSDL не содержит параметр для моих методов.
Я получил тогда сказал, что это доступно в WSDL доступно под

http://localhost:8080/hello?xsd=1

Глядя на это определение, я ясно вижу свое определение параметра для метода:

<!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.4-b01. 
-->
<xs:schema version="1.0" targetNamespace="http://soap.webapp.mobile.product.com/">
    <xs:element name="sayMyName" type="tns:sayMyName"/>
    <xs:element name="sayMyNameResponse" type="tns:sayMyNameResponse"/>
    <xs:complexType name="sayMyName">
        <xs:sequence>
            <xs:element name="name" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="sayMyNameResponse">
        <xs:sequence>
            <xs:element name="return" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

Когда я использую WDSL в качестве источника данных для BIRT, он показывает мне имя метода, но диалоговое окно выбора параметра пусто.

Он просто не работает с API Java 1.6 и должен ли я использовать axis2 вместо этого?

1 ответ

  1. Итак, я, наконец, узнал, как заставить его работать, в основном я добавил следующую аннотацию к моему @WebServiceклассу:

    @SOAPBinding(style = SOAPBinding.Style.RPC)
    

    Полный пример:

    import javax.jws.WebMethod;
    import javax.jws.WebParam;
    import javax.jws.WebService;
    import javax.jws.soap.SOAPBinding;
    import javax.xml.ws.BindingType;
    
    @WebService
    @BindingType(value = "http://java.sun.com/xml/ns/jaxws/2003/05/soap/bindings/HTTP/")
    @SOAPBinding(style = SOAPBinding.Style.RPC)
    public class WSHello {
    
        @WebMethod
        public String sayMyName(@WebParam(name = "name") String name) {
            return "Hello, ... " + name;
        }
    
    }