Создать EJB из WSDL с помощью wsdl2java

Как мне сгенерировать полностью аннотированный Java-код, из которого будет реализована эта служба преобразования температуры образца?

<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>

Вот что я сгенерировал через Netbeans, нажав "новый веб-сервис из 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.");
    }

}

Кажется, этого кода не хватает.

(Примечательно, по крайней мере для меня, что URL не совсем точно совпадает в сгенерированных аннотациях для класса.)

Это для того, чтобы ввести в сервлет.

0 ответов

Другие вопросы по тегам