Spring WebService#

Spring WebService의 핵심 인터페이스는 WebServiceMessage이다. SoapMessage는 SOAP관련 WebServiceMessage의 하위클래스이다.

실제 WebServiceMessage를 생성하는 메소드는 WebServiceMessageFactory에 들어있다.

SaajSoapMessageFactory

SOAP with Attachments API for Java를 사용한다.

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory" />

<div class="information"> SAAJ는 DOM에 기초한다. 이 말은 메모리에 저장된다는 것을 뜻하기 때문에 좀더 큰 SOAP메시지의 경우 적절하지 않다고 볼수 있다. 이 경우 AxiomSoapMessageFactory가 더 적절하다. </div>

AxiomSoapMessageFactory

StAX(Streaming API for XML)에 기초한 AXis 2 Object Model를 사용한다.

<bean id="messageFactory" class="org.springframework.ws.soap.axiom.AxiomSoapMessageFactory">
    <property name="payloadCaching" value="true"/>
</bean>

SOAP 버전 현재 1.1, 1.2 버전을 지원한다. 디폴트는 1.1이다.

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
       http://www.springframework.org/schema/util
       http://www.springframework.org/schema/util/spring-util-2.0.xsd">

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

</beans>

MessageContext#

요청(클라이언트측)과 응답(서버측)이라는 두가지를 포함하는 객체이다.

클라이언트 측

클라이언트에서는 webServiceTemplate를 통해 MessageContext가 생성한다.

import java.io.StringReader;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import org.springframework.ws.WebServiceMessageFactory;
import org.springframework.ws.client.core.WebServiceTemplate;
import org.springframework.ws.transport.WebServiceMessageSender;

public class WebServiceClient {

    private static final String MESSAGE = "<message xmlns=\"http://tempuri.org\">Hello Web Service World</message>";

    private final WebServiceTemplate webServiceTemplate = new WebServiceTemplate();

    public void setDefaultUri(String defaultUri) {
        webServiceTemplate.setDefaultUri(defaultUri);
    }

    // send to the configured default URI
    public void simpleSendAndReceive() {
        StreamSource source = new StreamSource(new StringReader(MESSAGE));
        StreamResult result = new StreamResult(System.out);
        webServiceTemplate.sendSourceAndReceiveToResult(source, result);
    }

    // send to an explicit URI
    public void customSendAndReceive() {
        StreamSource source = new StreamSource(new StringReader(MESSAGE));
        StreamResult result = new StreamResult(System.out);
        webServiceTemplate.sendSourceAndReceiveToResult("http://localhost:8080/AnotherWebService", source, result);
    }

}

<beans xmlns="http://www.springframework.org/schema/beans">

    <bean id="webServiceClient" class="WebServiceClient">
        <property name="defaultUri" value="http://localhost:8080/WebService"/>
    </bean>
</beans>

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-2) was last changed on 28-Oct-2007 19:58 by DongGukLee