generate EJB from WSDL with wsdl2java

假如想象 提交于 2019-12-11 05:38:08

问题


how do I generate fully annotated Java code from which to implement this sample temperature converter service?

<wsdl:definitions targetNamespace="https://www.w3schools.com/xml/">
    <wsdl:types>
        <s:schema elementFormDefault="qualified" targetNamespace="https://www.w3schools.com/xml/">
            <s:element name="FahrenheitToCelsius">
                <s:complexType>
                    <s:sequence>
                        <s:element minOccurs="0" maxOccurs="1" name="Fahrenheit" type="s:string"/>
                    </s:sequence>
                </s:complexType>
            </s:element>
            <s:element name="FahrenheitToCelsiusResponse">
                <s:complexType>
                    <s:sequence>
                        <s:element minOccurs="0" maxOccurs="1" name="FahrenheitToCelsiusResult" type="s:string"/>
                    </s:sequence>
                </s:complexType>
            </s:element>
            <s:element name="CelsiusToFahrenheit">
                <s:complexType>
                    <s:sequence>
                        <s:element minOccurs="0" maxOccurs="1" name="Celsius" type="s:string"/>
                    </s:sequence>
                </s:complexType>
            </s:element>
            <s:element name="CelsiusToFahrenheitResponse">
                <s:complexType>
                    <s:sequence>
                        <s:element minOccurs="0" maxOccurs="1" name="CelsiusToFahrenheitResult" type="s:string"/>
                    </s:sequence>
                </s:complexType>
            </s:element>
            <s:element name="string" nillable="true" type="s:string"/>
        </s:schema>
    </wsdl:types>
    <wsdl:message name="FahrenheitToCelsiusSoapIn">
        <wsdl:part name="parameters" element="tns:FahrenheitToCelsius"/>
    </wsdl:message>
    <wsdl:message name="FahrenheitToCelsiusSoapOut">
        <wsdl:part name="parameters" element="tns:FahrenheitToCelsiusResponse"/>
    </wsdl:message>
    <wsdl:message name="CelsiusToFahrenheitSoapIn">
        <wsdl:part name="parameters" element="tns:CelsiusToFahrenheit"/>
    </wsdl:message>
    <wsdl:message name="CelsiusToFahrenheitSoapOut">
        <wsdl:part name="parameters" element="tns:CelsiusToFahrenheitResponse"/>
    </wsdl:message>
    <wsdl:message name="FahrenheitToCelsiusHttpPostIn">
        <wsdl:part name="Fahrenheit" type="s:string"/>
    </wsdl:message>
    <wsdl:message name="FahrenheitToCelsiusHttpPostOut">
        <wsdl:part name="Body" element="tns:string"/>
    </wsdl:message>
    <wsdl:message name="CelsiusToFahrenheitHttpPostIn">
        <wsdl:part name="Celsius" type="s:string"/>
    </wsdl:message>
    <wsdl:message name="CelsiusToFahrenheitHttpPostOut">
        <wsdl:part name="Body" element="tns:string"/>
    </wsdl:message>
    <wsdl:portType name="TempConvertSoap">
        <wsdl:operation name="FahrenheitToCelsius">
            <wsdl:input message="tns:FahrenheitToCelsiusSoapIn"/>
            <wsdl:output message="tns:FahrenheitToCelsiusSoapOut"/>
        </wsdl:operation>
        <wsdl:operation name="CelsiusToFahrenheit">
            <wsdl:input message="tns:CelsiusToFahrenheitSoapIn"/>
            <wsdl:output message="tns:CelsiusToFahrenheitSoapOut"/>
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:portType name="TempConvertHttpPost">
        <wsdl:operation name="FahrenheitToCelsius">
            <wsdl:input message="tns:FahrenheitToCelsiusHttpPostIn"/>
            <wsdl:output message="tns:FahrenheitToCelsiusHttpPostOut"/>
        </wsdl:operation>
        <wsdl:operation name="CelsiusToFahrenheit">
            <wsdl:input message="tns:CelsiusToFahrenheitHttpPostIn"/>
            <wsdl:output message="tns:CelsiusToFahrenheitHttpPostOut"/>
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="TempConvertSoap" type="tns:TempConvertSoap">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="FahrenheitToCelsius">
            <soap:operation soapAction="https://www.w3schools.com/xml/FahrenheitToCelsius" style="document"/>
            <wsdl:input>
                <soap:body use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>
        <wsdl:operation name="CelsiusToFahrenheit">
            <soap:operation soapAction="https://www.w3schools.com/xml/CelsiusToFahrenheit" style="document"/>
            <wsdl:input>
                <soap:body use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:binding name="TempConvertSoap12" type="tns:TempConvertSoap">
        <soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="FahrenheitToCelsius">
            <soap12:operation soapAction="https://www.w3schools.com/xml/FahrenheitToCelsius" style="document"/>
            <wsdl:input>
                <soap12:body use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <soap12:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>
        <wsdl:operation name="CelsiusToFahrenheit">
            <soap12:operation soapAction="https://www.w3schools.com/xml/CelsiusToFahrenheit" style="document"/>
            <wsdl:input>
                <soap12:body use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <soap12:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:binding name="TempConvertHttpPost" type="tns:TempConvertHttpPost">
        <http:binding verb="POST"/>
        <wsdl:operation name="FahrenheitToCelsius">
            <http:operation location="/FahrenheitToCelsius"/>
            <wsdl:input>
                <mime:content type="application/x-www-form-urlencoded"/>
            </wsdl:input>
            <wsdl:output>
                <mime:mimeXml part="Body"/>
            </wsdl:output>
        </wsdl:operation>
        <wsdl:operation name="CelsiusToFahrenheit">
            <http:operation location="/CelsiusToFahrenheit"/>
            <wsdl:input>
                <mime:content type="application/x-www-form-urlencoded"/>
            </wsdl:input>
            <wsdl:output>
                <mime:mimeXml part="Body"/>
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="TempConvert">
        <wsdl:port name="TempConvertSoap" binding="tns:TempConvertSoap">
            <soap:address location="http://www.w3schools.com/xml/tempconvert.asmx"/>
        </wsdl:port>
        <wsdl:port name="TempConvertSoap12" binding="tns:TempConvertSoap12">
            <soap12:address location="http://www.w3schools.com/xml/tempconvert.asmx"/>
        </wsdl:port>
        <wsdl:port name="TempConvertHttpPost" binding="tns:TempConvertHttpPost">
            <http:address location="http://www.w3schools.com/xml/tempconvert.asmx"/>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>

This is what I've generated through Netbeans by clicking "new web service from WSDL":

package net.bounceme.dur.wsdl.consume;

import javax.ejb.Stateless;
import javax.xml.ws.ServiceMode;
import javax.xml.ws.WebServiceProvider;

@Stateless
@ServiceMode(value = javax.xml.ws.Service.Mode.PAYLOAD)
@WebServiceProvider(serviceName = "TempConvert", portName = "TempConvertSoap", targetNamespace = "https://www.w3schools.com/xml/", wsdlLocation = "WEB-INF/wsdl/NewWebServiceFromWSDL1/www.w3schools.com/xml/tempconvert.asmx.wsdl")
public class TempConvertFromWSDL implements javax.xml.ws.Provider<javax.xml.transform.Source> {

    @Override
    public javax.xml.transform.Source invoke(javax.xml.transform.Source source) {
        throw new UnsupportedOperationException("Not implemented yet.");
    }

}

This code seems lacking.

(Notably, at least to me, is that the URL isn't quite, exactly, matched in the generated annotations for the class.)

This is in order to inject into a Servlet.

来源:https://stackoverflow.com/questions/43571916/generate-ejb-from-wsdl-with-wsdl2java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!