Download presentation
Presentation is loading. Please wait.
Published byJudith Grace McDowell Modified over 9 years ago
1
SOAP 실전예제 Internet Computing Laboratory @ KUT http://icl.kut.ac.kr Youn-Hee Han
2
2 웹 서비스 구현 절차 원격 인터페이스 및 Java Bean 작성 (BookStoreIF.java) 서비스 구현 클래스 작성 (BookStoreImpl.java) 인터페이스 정의 파일 작성 (config-interface.xml) 자바 파일 컴파일과 WSDL 및 mapping 파일 생성 배치 기술자 작성 (Deployment Descripter) web.xml, sun-web.xml, webservices.xml WAR 파일 생성 배포 및 WSDL 확인 초기 작업 – 디렉토리 설정
3
3 초기 작업 J2EE 설치 및 실행 확인 실행 및 종료방법 cmd 창에서 asadmin start-domain domain1 cmd 창에서 asadmin stop-domain domain1 실행확인 http://localhost:8080/ http://localhost:8080/ http://localhost:4848/ 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
4 원격 인터페이스 및 Java Bean 작성 원격 인터페이스 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; } D:/SOAPExample/BookService/server/src/BookServiceIF.java Client: 점원 Server: 책관리 웹서비스시스템 제목, 가격 registerBook1(String, int) 제목, 가격 registerBook2(String[], int[]) getBooks() Book 리스트 요청
5
5 서비스 구현 클래스 작성 서비스 구현 클래스 – 1/2 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; } D:/SOAPExample/BookService/server/src/BookServiceImpl.java
6
6 서비스 구현 클래스 작성 서비스 구현 클래스 – 2/2 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; } D:/SOAPExample/BookService/server/src/BookServiceImpl.java
7
7 인터페이스 정의 파일 작성 인터페이스 정의 파일 <service name="BookService" targetNamespace="http://localhost:8080" typeNamespace="http://localhost:8080" packageName="bookservice"> D:/SOAPExample/BookService/server/config-interface.xml 스스로 서비스 이름을 정함 Java 패키지명 Java 패키지명을 포함한 원격 인터페이스 이름
8
8 자바 파일 컴파일과 WSDL 및 mapping 파일 생성 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 D:/SOAPExample/BookService/server/wsbuild.bat
9
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
10 배치 기술자 작성 web.xml 작성 war/WEB-INF 밑에 저장 10 <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"> BookService BookServiceImpl bookservice.BookServiceImpl BookServiceImpl /bookservice D:/SOAPExample/BookService/server/war/WEB-INF/web.xml 반드시 일치 Java 패키지명을 포함한 서비스 구현 클래스 이름 서비스 접근 URL 에 영향 스스로 이름을 정함
11
11 배치 기술자 작성 sun-web.xml 작성 war/WEB-INF 밑에 저장 11 <!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"> bookws BookServiceImpl BookServiceIF bookservice D:/SOAPExample/BookService/server/war/WEB-INF/sun-web.xml web.xml 에 있는 내용과 반드시 일치 스스로 이름을 정함, 서비스 접근 URL 에 영향 web.xml 에 정의한 url-pattern 과 일치 원격 인터페이스 이름
12
12 배치 기술자 작성 webservices.xml 작성 war/WEB-INF 밑에 저장 12 <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.xsdhttp://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd"> BookService WEB-INF/wsdl/BookService.wsdl build/mapping.xml BookServiceIF wsdl-port_ns__:BookServiceIFPort bookservice.BookServiceIF BookServiceImpl D:/SOAPExample/BookService/server/war/WEB-INF/webservices.xml
13
13 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
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
15 웹 서비스 클라이언트 구현 절차 초기 작업 – 디렉토리 설정 config.xml 및 스텁 클래스 생성 (wscompile) 클라이언트 프로그램 작성 코드 컴파일 클라이언트 실행 Programmer 가 수행할 일 클라이언트 코드 작성 WSDL 문서로부터 스텁 클래스 생성 소스 코드 컴파일 실행 XML Web Services Server WSDL XML Web Services Stub 객체 클라이언트 root 디렉토리 D:/SOAPExample/BookService/client 클라이언트 src 및 build 디렉토리 D:/SOAPExample/BookService/client/src D:/SOAPExample/BookService/client/build
16
16 스텁 클래스 생성 config.xml 생성 wscompile 을 이용한 스텁 생성 cmd 창에서 D:/SOAPExample/BookService/client 디렉토리로 이동 다음의 명령을 수행 wscompile –gen:client –d build config.xml build/bookclient 디렉토리에 생성된 스텁 확인 <wsdl location="http://localhost:8080/bookws/bookservice?WSDL" packageName="bookclient"/> D:/SOAPExample/BookService/client/config.xml
17
17 클라이언트 프로그램 작성 클라이언트 프로그램 작성 – 1/2 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); D:/SOAPExample/BookService/client/src/BookServiceClient.java
18
18 클라이언트 프로그램 작성 클라이언트 프로그램 작성 – 2/2 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(); } D:/SOAPExample/BookService/client/src/BookServiceClient.java
19
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
20 JavaEE 5 이후의 웹서비스 개발 방법 새로운 폴더 생성 서비스 root 디렉토리 D:/SOAPExample/Hello2Service/server 서비스 src 및 war 디렉토리 D:/SOAPExample/Hello2Service/server/src 서버 소스 개발 package hello2service; import javax.jws.WebService; @WebService public class Hello2 { public String getHello(String name) { return "Hello " + name + "!"; } D:/SOAPExample/Hello2Service/server/src/Hello2.java
21
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 로 접속http://localhost:4848 설치시 입력한 ID, Passwd 입력 Web Services 목록 확인
22
22 JavaEE 5 이후의 웹서비스 개발 방법 WSDL 확인 (1) (2) (3) WSDL URL 확인
23
23 JavaEE 5 이후의 웹서비스 개발 방법 Book2Service 를 위한 새로운 폴더 생성 서비스 root 디렉토리 D:/SOAPExample/Book2Service/server 서비스 src 및 war 디렉토리 D:/SOAPExample/Book2Service/server/src 서버 소스 개발 package book2service; import java.util.*; import javax.jws.WebService; @WebService public class Book2Service { private List bookList; public Book2Service() { bookList = new LinkedList(); } // 이하 BookServiceImpl.java 와 동일 D:/SOAPExample/Book2Service/server/src/Book2Service.java
24
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 로 접속http://localhost:4848 설치시 입력한 ID, Passwd 입력 Web Services 목록 확인
25
25 JavaEE 5 이후의 웹서비스 개발 방법 WSDL 확인 (1) (2) (3) WSDL URL 확인
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.