본문 바로가기

웹서비스

SOAP 서비스 개발

출처 : http://mimul.com/pebble/default/2008/04/25/1209128760000.html

1. Axis2 설치 및 설정
- Axis2 사이트에서 다운 로드(http://ws.apache.org/axis2
- 이클립스 : Window>Preferences>Axis2 Preferences 클릭 Axis2 Runtime Location에 Axis2설치 디렉토리 추가(D:\Work\KTHWork\WorkGroup\axis2-1.3)하여 "Axis2 runtime loaded successfully !!!" 메세지 나오면 OK!

2. Axis2용 Eclipse plugin 설치
- Code Generator Wizard 다운 로드
- Eclipse 설치 디렉토리의 plugin 디렉토리에 카피
- File>New>Other로 Axis2 Code Gaenrator 활용 가능

3. Spring, Hibernate기반의 사용자 조회 프로그램 개발
- User.hbm.xml 구성(테이블은 User, 칼런은 userid(키), name, password, nickname으로 구성
- User.java 모델 구성
- UserDAO.java(extends HibernateDaoSupport) 구성

 	public User getUserByName(String name){
StringBuffer strBuf=new StringBuffer();
strBuf.append("select u from User as u where u.name='");
strBuf.append(name);
strBuf.append("'");
List tempList=getHibernateTemplate().find(strBuf.toString());
if (tempList!=null && tempList.size() >0) {
return (User) tempList.get(0);
} else {
return null;
}
}
- interface UserManager.java 구성
       public User getUserByName(String name);

- UserManagerImpl.java(implements UserManager) 구성
 	public User getUserByName(String name) {
return userDAO.getUserByName(name);
}

- data-config.xml
. mysql 설정 관련 정보 저장
. dataSource_MYSQL
. sessionFactory
. transactionManager

- spring-dao.xml
 <beans>
<bean id="userDAO" class="com.mimul.dao.UserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
</beans>

- spring-service.xml
 <beans>
<bean id="userManager"
class="com.mimul.service.impl.UserManagerImpl">
<property name="userDAO">
<ref bean="userDAO" />
</property>
</bean>
</beans>

- web.xml 추가
. AxisServlet
. AxisAdminServlet
. Spring용 contextConfigLocation 추가(data-config.xml, spring-dao.xml, spring-service.xml)
- WEB-INF/lib에 axis2, spring관련 jar 패키지 카피

4. Create Web Services
- UserManagerImpl.java 소스 오른쪽 마우스 클릭 후 Web Services>Create Web Services 클릭, type은 Bottom Up선택, Next>default services,.xml file 선택, Next
- WEN-INF/services 파일 생성이 되고 StartServer를 클릭하여 Tomcat을 구동한다.
- WEN-INF/services/UserManagerImpl/META-INF/services.xml파일 수정
   <service name="UserManagerImpl">
<description>
Customer Spring POJO Axis2 AAR deployment
</description>
<parameter name="ServiceClass">
com.mimul.service.impl.UserManagerImpl
</parameter>
<parameter name="ServiceObjectSupplier">
org.apache.axis2.extensions.spring.
receivers.SpringAppContextAwareObjectSupplier
</parameter>
<parameter name="SpringBeanName">
userDAO
</parameter>
<messageReceivers>
<messageReceiver
mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>
</service>
- http://localhost:8080/axis2user/services/UserManagerImpl?wsdl 호출하면 WSDL내용이 나옴

5. 클라이언트 스텁 구성
- Ctrl + N >Axis2 Wizard>Axis2 Code Generator>Ganerate Java Source code from a WSDL file
- WSDL파일 입력(http://localhost:8080/axis2user/services/UserManagerImpl?wsdl)
- Service Name, Port Name 확인
- 스텁 소스 코드 출력 디렉토리 지정
- 완료를 눌러서 소스 확인

6. SpringRPCClient.java 클라이언트 프로그램 작성
 public class SpringRPCClient {
@SuppressWarnings("unchecked")
public static void main(String[] args1) throws AxisFault {
UserManagerImplStub.User user = null;
try {
user = new UserManagerImplStub.User();
UserManagerImplStub stub =
new UserManagerImplStub();
UserManagerImplStub.GetUserByName para =
new UserManagerImplStub.GetUserByName();
para.setUserName("pepsi");
UserManagerImplStub.GetUserByNameResponse adb =
stub.getUserByName(para);
user = adb.get_return();
if (user == null) {
System.out.println("User don't exist");
} else {
System.out.println("getName : " +
user.getNickName());
System.out.println("getPassword : " +
user.getPassword());
}
} catch (AxisFault e) { e.printStackTrace();
} catch (RemoteException e) { e.printStackTrace();
} catch (Exception e) { e.printStackTrace();
}
}
}

이상 프로그램을 클라이언트에 실행하면 원하는 값을 얻어올 수 있습니다.
다음은 REST, SAML로 확장해 보도록 하겠습니다.