1 / 25

SOAP 실전예제

SOAP 실전예제. Internet Computing Laboratory @ KUT http://icl.kut.ac.kr Youn-Hee Han. 웹 서비스 구현 절차. 초기 작업 – 디렉토리 설정. 원격 인터페이스 및 Java Bean 작성 (BookStoreIF.java). 서비스 구현 클래스 작성 (BookStoreImpl.java). 인터페이스 정의 파일 작성 (config-interface.xml). 자바 파일 컴파일과 WSDL 및 mapping 파일 생성. 배치 기술자 작성

tauret
Download Presentation

SOAP 실전예제

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SOAP 실전예제 Internet Computing Laboratory @ KUT http://icl.kut.ac.kr Youn-Hee Han

  2. 웹 서비스 구현 절차 초기 작업 – 디렉토리 설정 원격 인터페이스 및 Java Bean 작성 (BookStoreIF.java) 서비스 구현 클래스 작성 (BookStoreImpl.java) 인터페이스 정의 파일 작성 (config-interface.xml) 자바 파일 컴파일과 WSDL 및 mapping 파일 생성 배치 기술자 작성 (Deployment Descripter) web.xml, sun-web.xml, webservices.xml WAR 파일 생성 배포 및 WSDL 확인

  3. 초기 작업 • J2EE 설치 및 실행 확인 • 실행 및 종료방법 • cmd 창에서 asadmin start-domain domain1 • cmd 창에서 asadmin stop-domain domain1 • 실행확인 • http://localhost:8080/ • http://localhost:4848/ • 작업디렉토리 생성 • 서비스 root 디렉토리 • D:/SOAPExample/BookService/server • 서비스 src 및 war 디렉토리 • D:/SOAPExample/BookService/server/src • D:/SOAPExample/BookService/server/war • 클라이언트 root 디렉토리 • D:/SOAPExample/BookService/client • 클라이언트 src 및 build 디렉토리 • D:/SOAPExample/BookService/client/src • D:/SOAPExample/BookService/client/build

  4. 원격 인터페이스 및 Java Bean 작성 • 원격 인터페이스 • D:/SOAPExample/BookService/server/src/BookServiceIF.java package bookservice; import java.rmi.*; import java.util.*; public interface BookServiceIF extends Remote { public String registerBook1(String title, int price) throws RemoteException; public String registerBook2(String title[], int price[]) throws RemoteException; public HashMap getBooks() throws RemoteException; } Client: 점원 Server: 책관리 웹서비스시스템 제목, 가격 registerBook1(String, int) 제목, 가격 제목, 가격 registerBook2(String[], int[]) getBooks() Book 리스트 요청

  5. 서비스구현 클래스 작성 • 서비스 구현 클래스 – 1/2 • D:/SOAPExample/BookService/server/src/BookServiceImpl.java package bookservice; import java.util.*; public class BookServiceImpl implements BookServiceIF { private HashMap bookList; public BookServiceImpl() { bookList = new HashMap(); } public String registerBook1(String title, int price) { bookList.put(title, price); String result = "입력완료! - [" + title + ", " + price + "]"; return result; }

  6. 서비스구현 클래스 작성 • 서비스 구현 클래스 – 2/2 • D:/SOAPExample/BookService/server/src/BookServiceImpl.java public String registerBook2(String titles[], int price[]) { String result = "입력완료! - "; for(int i=0; i<titles.length; i++) { bookList.put(titles[i], price[i]); result += "[" + titles[i] + ", " + price[i] + "] "; } return result; } public HashMap getBooks() { return bookList; } }

  7. 인터페이스 정의 파일 작성 • 인터페이스 정의 파일 • D:/SOAPExample/BookService/server/config-interface.xml <?xml version="1.0" encoding="UTF-8" ?> <configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config"> <service name="BookService" targetNamespace="http://localhost:8080" typeNamespace="http://localhost:8080" packageName="bookservice"> <interface name="bookservice.BookServiceIF" /> </service> </configuration> Java 패키지명 스스로 서비스 이름을 정함 Java 패키지명을포함한 원격 인터페이스 이름

  8. 자바 파일 컴파일과 WSDL 및 mapping 파일 생성 • wsbuild.bat 생성 • D:/SOAPExample/BookService/server/wsbuild.bat rem *************************************************************** rem This file should be executed in the Web Service Root Directory. rem rem The Web Service Root Directory should have the followings: rem 1) src directory which has the all *.java files: rem 2) config-interface.xml rem *************************************************************** mkdir war cd war mkdir build mkdir WEB-INF cd WEB-INF mkdir classes mkdir wsdl cd ../.. javac -d war/WEB-INF/classes src/*.java wscompile -define -d war/WEB-INF/wsdl -mapping war/build/mapping.xml -classpath war/WEB-INF/classes config-interface.xml

  9. 자바 파일 컴파일과 WSDL 및 mapping 파일 생성 • 컴파일 및 WSDL/mapping 파일 생성 • webuild.bat 수행 전 파일 배치 모습 • cmd 창에서 wsbuild.bat 수행 • D:/SOAPExample/BookService/server/ 에서수행 • wsbuild.bat 수행 이후 war 디렉토리구성 모습 BookService server src BookServiceIF.java BookServiceImpl.java war config-interface.xml wsbuild.bat BookService server src BookServiceIF.java BookServiceImpl.java war build mapping.xml WEB-INF classes bookservice BookServiceIF.class BookServiceImpl.class wsdl BookService.wsdl config-interface.xml wsbuild.bat

  10. 배치 기술자 작성 • web.xml 작성 • war/WEB-INF 밑에 저장 • D:/SOAPExample/BookService/server/war/WEB-INF/web.xml <?xml version="1.0" encoding="UTF-8" ?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>BookService</display-name> <servlet> <servlet-name>BookServiceImpl</servlet-name> <servlet-class>bookservice.BookServiceImpl</servlet-class> </servlet> <servlet-mapping> <servlet-name>BookServiceImpl</servlet-name> <url-pattern>/bookservice</url-pattern> </servlet-mapping> </web-app> 반드시 일치 Java 패키지명을포함한 서비스 구현 클래스 이름 서비스 접근 URL에 영향 스스로 이름을 정함 10

  11. 배치 기술자 작성 • sun-web.xml 작성 • war/WEB-INF 밑에 저장 • D:/SOAPExample/BookService/server/war/WEB-INF/sun-web.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 8.1 Servlet 2.4//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_4-1.dtd"> <sun-web-app> <context-root>bookws</context-root> <servlet> <servlet-name>BookServiceImpl</servlet-name> <webservice-endpoint> <port-component-name>BookServiceIF</port-component-name> <endpoint-address-uri>bookservice</endpoint-address-uri> </webservice-endpoint> </servlet> </sun-web-app> web.xml에 있는 내용과 반드시 일치 원격 인터페이스 이름 web.xml에 정의한 url-pattern과 일치 스스로 이름을 정함, 서비스 접근 URL에 영향 11

  12. 배치 기술자 작성 • webservices.xml 작성 • war/WEB-INF 밑에 저장 • D:/SOAPExample/BookService/server/war/WEB-INF/webservices.xml <?xml version="1.0" encoding="UTF-8" ?> <webservices xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd"> <webservice-description> <display-name>BookService</display-name> <webservice-description-name>BookService</webservice-description-name> <wsdl-file>WEB-INF/wsdl/BookService.wsdl</wsdl-file> <jaxrpc-mapping-file>build/mapping.xml</jaxrpc-mapping-file> <port-component> <display-name>BookServiceIF</display-name> <port-component-name>BookServiceIF</port-component-name> <wsdl-port xmlns:wsdl-port_ns__="http://localhost:8080">wsdl-port_ns__:BookServiceIFPort</wsdl-port> <service-endpoint-interface>bookservice.BookServiceIF</service-endpoint-interface> <service-impl-bean> <servlet-link>BookServiceImpl</servlet-link> </service-impl-bean> </port-component> </webservice-description> </webservices> 12

  13. WAR 파일 생성 • WAR 파일 생성 • cmd창에서 war 디렉토리로 옮김 • 다음 명령 수행 • jar –cvf BookService.war . • 현재까지의 파일 배치 모습 BookService server src BookServiceIF.java BookServiceImpl.java war build mapping.xml WEB-INF classes bookservice BookServiceIF.class BookServiceImpl.class wsdl BookService.wsdl sun-web.xml web.xml webservices.xml BookService.war config-interface.xml wsbuild.bat

  14. 배포및 WSDL 확인 • 배포 (deploy) • 생성된 BookService.war 파일을 다음디렉토리에 Copy • D:\Sun\SDK\domains\domain1\autodeploy • 아래그림처럼 BookService.war_deployed 라는 파일이 생성됨을 확인 • WSDL 확인 • 브라우저에서다음 URL로 생성된 WSDL 확인 • http://localhost:8080/bookws/bookservice?WSDL

  15. 웹 서비스 클라이언트 구현 절차 • 클라이언트 root 디렉토리 • D:/SOAPExample/BookService/client • 클라이언트 src 및 build 디렉토리 • D:/SOAPExample/BookService/client/src • D:/SOAPExample/BookService/client/build 초기 작업 – 디렉토리 설정 config.xml 및 스텁 클래스 생성 (wscompile) 클라이언트 프로그램 작성 Programmer가 수행할 일 XML Web Services Server 클라이언트 코드 작성 코드 컴파일 WSDL WSDL 문서로부터 스텁 클래스 생성 소스 코드 컴파일 클라이언트 실행 Stub 객체 XML Web Services 실행

  16. 스텁 클래스 생성 • config.xml 생성 • wscompile을 이용한 스텁생성 • cmd 창에서 D:/SOAPExample/BookService/client 디렉토리로 이동 • 다음의 명령을 수행 • wscompile –gen:client –d build config.xml • build/bookclient디렉토리에 생성된 스텁 확인 • D:/SOAPExample/BookService/client/config.xml <?xml version="1.0" encoding="UTF-8"?> <configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config"> <wsdl location="http://localhost:8080/bookws/bookservice?WSDL" packageName="bookclient"/> </configuration>

  17. 클라이언트 프로그램 작성 • 클라이언트 프로그램 작성 – 1/2 • D:/SOAPExample/BookService/client/src/BookServiceClient.java package bookclient; import javax.xml.rpc.*; import java.util.*; public class BookServiceClient { public static void main(String[] args) { try { BookService_Impl bookService = new BookService_Impl(); BookServiceIF bookIF = (BookServiceIF)bookService.getBookServiceIFPort(); String result1 = bookIF.registerBook1("XML 기초와 실무", 29000); System.out.println(result1); String titles[] = new String[] {"Java", "C++", "C#"}; int prices[] = new int[] {30000, 25000, 27000}; String result2 = bookIF.registerBook2(titles, prices); System.out.println(result2);

  18. 클라이언트 프로그램 작성 • 클라이언트 프로그램 작성 – 2/2 • D:/SOAPExample/BookService/client/src/BookServiceClient.java System.out.println("- Current Book List -"); HashMap bookList = bookIF.getBooks(); Iterator t_titles = bookList.keySet().iterator(); while (t_titles.hasNext()) { String title = (String)t_titles.next(); System.out.println(title + " : " + bookList.get(title)); } } catch (Exception ex) { ex.printStackTrace(); } } }

  19. 컴파일및 실행 • 컴파일 • cmd 창에서 D:/SOAPExample/BookService/client 로이동 • 다음 명령어 수행 • javac -d build –cp build;D:\Sun\SDK\lib\javaee.jar;d:\Sun\SDK\lib\appserv-ws.jar src\*.java • 실행 • D:/SOAPExample/BookService/client 에서 여전히 수행 • 다음 명령어 수행 • java -cp build;d:\Sun\SDK\lib\j2ee.jar;d:\Sun\SDK\lib\appserv-ws.jar bookclient.BookServiceClient

  20. JavaEE 5 이후의 웹서비스 개발 방법 • 새로운 폴더 생성 • 서비스 root 디렉토리 • D:/SOAPExample/Hello2Service/server • 서비스 src 및 war 디렉토리 • D:/SOAPExample/Hello2Service/server/src • 서버 소스 개발 • D:/SOAPExample/Hello2Service/server/src/Hello2.java package hello2service; import javax.jws.WebService; @WebService public class Hello2 { public String getHello(String name) { return "Hello " + name + "!"; } }

  21. JavaEE 5 이후의 웹서비스 개발 방법 • 컴파일 • D:/SOAPExample/Hello2Service/server 에서 다음 명령 수행 • javac -d D:\Sun\SDK\domains\domain1\autodeploy –cp D:\Sun\SDK\lib\javaee.jar src\*.java • 웹서비스 확인 • 브라우저에서 http://localhost:4848로 접속 • 설치시 입력한 ID, Passwd 입력 • Web Services 목록 확인

  22. JavaEE 5 이후의 웹서비스 개발 방법 • WSDL 확인 (2) (1) WSDL URL 확인 (3)

  23. JavaEE 5 이후의 웹서비스 개발 방법 • Book2Service 를 위한 새로운 폴더 생성 • 서비스 root 디렉토리 • D:/SOAPExample/Book2Service/server • 서비스 src 및 war 디렉토리 • D:/SOAPExample/Book2Service/server/src • 서버 소스 개발 • D:/SOAPExample/Book2Service/server/src/Book2Service.java package book2service; import java.util.*; import javax.jws.WebService; @WebService public class Book2Service { private List bookList; public Book2Service() { bookList = new LinkedList(); } // 이하 BookServiceImpl.java와 동일

  24. JavaEE 5 이후의 웹서비스 개발 방법 • 컴파일 • D:/SOAPExample/Book2Service/server 에서 다음 명령 수행 • javac -d D:\Sun\SDK\domains\domain1\autodeploy –cp D:\Sun\SDK\lib\javaee.jar src\*.java • 웹서비스 확인 • 브라우저에서 http://localhost:4848로 접속 • 설치시 입력한 ID, Passwd 입력 • Web Services 목록 확인

  25. JavaEE 5 이후의 웹서비스 개발 방법 • WSDL 확인 (2) (1) WSDL URL 확인 (3)

More Related