使用wsdl2java从WSDL生成EJB

时间:2017-04-23 13:41:03

标签: web-services java-ee wsdl ejb wsdl2java

如何生成完全带注释的Java代码,从中实现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>

这是我通过点击“来自WSDL的新Web服务”通过Netbeans生成的:

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.");
    }

}

这段代码似乎缺乏。

(值得注意的是,至少在我看来,URL在生成的类注释中并不完全匹配。)

这是为了注入Servlet。

0 个答案:

没有答案