2016-06-04 73 views
0

Ich versuche zu kämpfen zum Beispiel puroposes zu nennen, eine Seife ws mit SpringWS ausgesetzt:Frühling SOAP Ws Client

Hier ist es meine Wsdl auf tomcat eingesetzt wird ..

<!--Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.3-b01-.--> 
<!--Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.3-b01-.--> 
<definitions targetNamespace="http://ws.mkyong.com/" name="HelloWorldWSService" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.mkyong.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/"> 
    <types> 
     <xsd:schema> 
     <xsd:import namespace="http://ws.mkyong.com/" schemaLocation="http://localhost:8080/web_services/hello?xsd=1"/> 
     </xsd:schema> 
    </types> 
    <message name="findById"> 
     <part name="parameters" element="tns:findById"/> 
    </message> 
    <message name="findByIdResponse"> 
     <part name="parameters" element="tns:findByIdResponse"/> 
    </message> 
    <message name="saveJob"> 
     <part name="parameters" element="tns:saveJob"/> 
    </message> 
    <message name="saveJobResponse"> 
     <part name="parameters" element="tns:saveJobResponse"/> 
    </message> 
    <message name="findJobByName"> 
     <part name="parameters" element="tns:findJobByName"/> 
    </message> 
    <message name="findJobByNameResponse"> 
     <part name="parameters" element="tns:findJobByNameResponse"/> 
    </message> 
    <message name="findJobByRole"> 
     <part name="parameters" element="tns:findJobByRole"/> 
    </message> 
    <message name="findJobByRoleResponse"> 
     <part name="parameters" element="tns:findJobByRoleResponse"/> 
    </message> 
    <message name="deleteJob"> 
     <part name="parameters" element="tns:deleteJob"/> 
    </message> 
    <message name="deleteJobResponse"> 
     <part name="parameters" element="tns:deleteJobResponse"/> 
    </message> 
    <message name="getAllJobs"> 
     <part name="parameters" element="tns:getAllJobs"/> 
    </message> 
    <message name="getAllJobsResponse"> 
     <part name="parameters" element="tns:getAllJobsResponse"/> 
    </message> 
    <message name="updateJob"> 
     <part name="parameters" element="tns:updateJob"/> 
    </message> 
    <message name="updateJobResponse"> 
     <part name="parameters" element="tns:updateJobResponse"/> 
    </message> 
    <portType name="HelloWorldWS"> 
     <operation name="findById"> 
     <input wsam:Action="http://ws.mkyong.com/HelloWorldWS/findByIdRequest" message="tns:findById"/> 
     <output wsam:Action="http://ws.mkyong.com/HelloWorldWS/findByIdResponse" message="tns:findByIdResponse"/> 
     </operation> 
     <operation name="saveJob"> 
     <input wsam:Action="http://ws.mkyong.com/HelloWorldWS/saveJobRequest" message="tns:saveJob"/> 
     <output wsam:Action="http://ws.mkyong.com/HelloWorldWS/saveJobResponse" message="tns:saveJobResponse"/> 
     </operation> 
     <operation name="findJobByName"> 
     <input wsam:Action="http://ws.mkyong.com/HelloWorldWS/findJobByNameRequest" message="tns:findJobByName"/> 
     <output wsam:Action="http://ws.mkyong.com/HelloWorldWS/findJobByNameResponse" message="tns:findJobByNameResponse"/> 
     </operation> 
     <operation name="findJobByRole"> 
     <input wsam:Action="http://ws.mkyong.com/HelloWorldWS/findJobByRoleRequest" message="tns:findJobByRole"/> 
     <output wsam:Action="http://ws.mkyong.com/HelloWorldWS/findJobByRoleResponse" message="tns:findJobByRoleResponse"/> 
     </operation> 
     <operation name="deleteJob"> 
     <input wsam:Action="http://ws.mkyong.com/HelloWorldWS/deleteJobRequest" message="tns:deleteJob"/> 
     <output wsam:Action="http://ws.mkyong.com/HelloWorldWS/deleteJobResponse" message="tns:deleteJobResponse"/> 
     </operation> 
     <operation name="getAllJobs"> 
     <input wsam:Action="http://ws.mkyong.com/HelloWorldWS/getAllJobsRequest" message="tns:getAllJobs"/> 
     <output wsam:Action="http://ws.mkyong.com/HelloWorldWS/getAllJobsResponse" message="tns:getAllJobsResponse"/> 
     </operation> 
     <operation name="updateJob"> 
     <input wsam:Action="http://ws.mkyong.com/HelloWorldWS/updateJobRequest" message="tns:updateJob"/> 
     <output wsam:Action="http://ws.mkyong.com/HelloWorldWS/updateJobResponse" message="tns:updateJobResponse"/> 
     </operation> 
    </portType> 
    <binding name="HelloWorldWSPortBinding" type="tns:HelloWorldWS"> 
     <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> 
     <operation name="findById"> 
     <soap:operation soapAction=""/> 
     <input> 
      <soap:body use="literal"/> 
     </input> 
     <output> 
      <soap:body use="literal"/> 
     </output> 
     </operation> 
     <operation name="saveJob"> 
     <soap:operation soapAction=""/> 
     <input> 
      <soap:body use="literal"/> 
     </input> 
     <output> 
      <soap:body use="literal"/> 
     </output> 
     </operation> 
     <operation name="findJobByName"> 
     <soap:operation soapAction=""/> 
     <input> 
      <soap:body use="literal"/> 
     </input> 
     <output> 
      <soap:body use="literal"/> 
     </output> 
     </operation> 
     <operation name="findJobByRole"> 
     <soap:operation soapAction=""/> 
     <input> 
      <soap:body use="literal"/> 
     </input> 
     <output> 
      <soap:body use="literal"/> 
     </output> 
     </operation> 
     <operation name="deleteJob"> 
     <soap:operation soapAction=""/> 
     <input> 
      <soap:body use="literal"/> 
     </input> 
     <output> 
      <soap:body use="literal"/> 
     </output> 
     </operation> 
     <operation name="getAllJobs"> 
     <soap:operation soapAction=""/> 
     <input> 
      <soap:body use="literal"/> 
     </input> 
     <output> 
      <soap:body use="literal"/> 
     </output> 
     </operation> 
     <operation name="updateJob"> 
     <soap:operation soapAction=""/> 
     <input> 
      <soap:body use="literal"/> 
     </input> 
     <output> 
      <soap:body use="literal"/> 
     </output> 
     </operation> 
    </binding> 
    <service name="HelloWorldWSService"> 
     <port name="HelloWorldWSPort" binding="tns:HelloWorldWSPortBinding"> 
     <soap:address location="http://localhost:8080/web_services/hello"/> 
     </port> 
    </service> 
</definitions> 

ich möchte einen einfachen Client zu definieren, um es zu testen, mit einer Hauptmethode wäre großartig, sie mit SpringWS aufzurufen, wenn Sie mir einige Vorschläge oder Link geben, wäre es toll, vielleicht ein Beispiel darüber, wie man sie anruft und ein Objekt als Anfrageparameter sendet Senden einer leeren Eingabeanforderung, falls die WS-Methode ohne Parameter ist.

Jede Bezugnahme würde verbinden oder Code-Schnipsel eine große Hilfe sein, ich so viele verschiedene Beispiele gefunden, passt niemand meine Bedürfnisse, und im jetzt ein wenig verwirrt bekommen ..

Antwort

-1

würde ich vorschlagen, mit zu gehen Frühling WebServiceTemplate

WebServiceTemplate - die WebServiceTemplate ist die Kern-Klasse für die clientseitige Web-Service-Zugang in Spring-WS. Es enthält Methoden zum Senden von Quellobjekten und zum Empfangen von Antwortnachrichten als Quelle oder Ergebnis. Darüber hinaus kann es Objekte in XML mar- kieren, bevor sie über einen Transport gesendet werden, und jede Antwort-XML erneut in ein Objekt entpacken.

Schritt 1:

Beispiel Beispiel erzeugen Object WSDL verwendet:

1. Copy you are WSDL file into local directory 
    2. Open Command Promote 
    3. wsimport -p mypackage -keep -verbose myservice.wsdl 

This command generated object request and response 

Schritt 2: applicationContext.xml Konfiguration für SOAP-Nachricht Werks

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"> 
    <property name="soapVersion"> 
     <util:constant static-field="org.springframework.ws.soap.SoapVersion.SOAP_12" /> 
    </property> 
    </bean> 

Schritt 3: Marshaller Konfiguration

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> 
    <property name="contextPaths" value="package"/> 
    </bean> 

Schritt 4: WebServiceTemplate Konfiguration

<bean id="webServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate"> 
    <constructor-arg ref="messageFactory" /> 
    <property name="marshaller" ref="marshaller"></property> 
    <property name="unmarshaller" ref="marshaller"></property>    
    <property name="defaultUri" value="wsdlLocation" /> 
    </bean> 

Schritt 5:

Connection Client vorbereiten:

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.ws.client.core.WebServiceTemplate; 

class ClientConnection { 

    @Autowired 
    private WebServiceTemplate webServiceTemplate; 

    public synchronized Object sendRequestAndReceive(Object xmlRequest, 
      final String uri) { 
     webServiceTemplate.setDefaultUri(uri); 
     Object object = webServiceTemplate.marshalSendAndReceive(xmlRequest); 
     return object; 
    } 
} 

untenstehenden Link verweisen, für weitere Informationen.

Spring WS Template example