설명 드렸습니다. 이번 Part는 웹 서비스 클라이언트 코딩
방법에 대해서 말씀 드리겠습니다.
- 클라어인측에서 필요한 리소스
- 서비스 노출을 위한 interface
- 통신을 위한 도메인 클래스
- 호출할 클라어인트 클래스
- 스프링 빈 xml 파일
- 서비스 노출을 위한 interface
- 통신을 위한 도메인 클래스
- 호출할 클라어인트 클래스
클라이언트에서는 반드시 서버에서 배포된 interface와 도메인이 존재
해야 합니다. "private SampleWS sampleWS;" 를 보면 마치
로컬에 있는 스프링 빈인것 처럼 사용합니다.
package org.beyond.j2ee.SampleWSClient;
public class SampleWSClient {
private SampleWS sampleWS;
public void setSampleWS(SampleWS sampleWS) {
this.sampleWS = sampleWS;
}
public void viewMember() throws Exception {
SampleWSBean bean = new SampleWSBean();
bean.setId("cxf");
bean.setName("webservice");
System.out.println("====send message======");
System.out.println("id:" + bean.getId());
System.out.println("name:" + bean.getName());
SampleWSBean bean2 = sampleWS.viewMember(bean);
System.out.println("====receive message======");
System.out.println("id:" + bean2.getId());
System.out.println("name:" + bean2.getName());
}
}
- 스프링 빈 설정 파일
"clientSampleWSFactory" 빈 :
- address 속성:서버에서 노출된 wsdl 주소를 설정 합니다.
- serviceClass 속성:서비스 노출된 서버 interface 경로를 설정 합니다.
"clientSampleWS" 빈 : "clientSampleWSFactory" 팩토리빈을 injection
하고 method="create"속성을 명시 합니다. 이부분은 곧
wdsl에 정의된 서비스 interface를 실제로 구현체로
바꾸는 부분입니다.
"memberWSClient" 빈: 위에서 작성된 클라이언트 입니다.
마치 Service 빈에서 DAO빈을 injection 하는 것과
같습니다.
<bean id="memberWSClient" class="org.beyond.j2ee.SampleWSClient">
<property name="sampleWS" ref="clientSampleWS" />
</bean>
<bean id="clientSampleWS" class="org.beyond.j2ee.SampleWS" bean="clientSampleWSFactory"
method="create" />
<bean id="clientSampleWSFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="org.beyond.j2ee.SampleWS">
<property name="address" value="http://localhost:8080/services/SampleWS" />
</property>
</bean>
- 웹 서비스 협업 하기
interface와 도메인 클래스로 만 구성된
이클립스 프로젝트를 별도로 생성 합니다.
이해를 돕기 위해서 위의 프로젝트를 webservice-interface
프로젝트라고 하겠습니다.
즉 이클립스에서 프로젝트가 3개가 생성 되어야 합니다.
webservice-interface : 공용 interface,도메인 프로젝트
webservice-server : 서비스할 프로젝트
webservice-client: 클라언트 프로젝트
그래서 webservice-server 와 webservice-client
프로젝트에서 webservice-interface를 classpath를
설정 합니다.
이렇게 개발하는 이유는 어차피 서버와 클라언트는
서비스 interface와 도메인이 있어야 서로간의 통신을
하기때문에 별로 프로젝트를 빼서 서버 개발자들이
interface 와 도메인 클래스를 만들고 클라언트 개발자에게
연동문서를 배포하고 클라이언트 측은 svn에서 업데이트
받고 개발 하면 되기 때문입니다.
댓글 없음:
댓글 쓰기