::: 강좌/소스/문서 :::

강좌/소스/문서 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-17 22:26:26, Hit : 15789, Vote : 2013
 [강좌] SOAP,WSDL,UDDI 설치하고 실습하기

// 안녕하세요  김영대 ( http://www.howto.pe.kr ) 입니다
// 아래는 JAVA 환경에서 SOAP,WSDL,UDDI 과 관련된 파일을 설치하고 실습하는
// 내용으로 JWSDP 또는 Apache Tomcat 이 설치되어 있으며 XML파서 Xerces 가
// 설치되어 있다고 가정하고 진행됩니다


[SOAP - axis]

1.http://xml.apache.org/axis/dist/1_0/ 에서 xml-axis-10.zip 파일을 다운받아 임의의
  디렉토리에 압축을 푼다(압축을 푼 디렉토리가 이하 "<압축을 푼 axis>" 를 의미한다)


2.<압축을 푼 axis>webappsaxislib 디렉토리에 있는 모든 jar 파일들을
  <Apache Tomcat>commonlib 디렉토리로 복사한다 - 생략가능

  
3.<압축을 푼 axis>lib 디렉토리의 모든 jar 파일들을 <J2SDK>jrelibext 디렉토리에 복사한다


4.<Apache Tomcat>comminlib 의 servlet.jar 를 <J2SDK>jrelibext 디렉토리에 복사한다
  
  
5.<압축을 푼 axis>webapps의 axis 디렉토리를 <Apache Tomcat>webapps 디렉토리에 아래에 복사한다.


6.<Apache Tomcat>confserver.xml 파일을 일반 에디터로 열어 265 행을 아래처럼 고친다
          <Context path="" docBase="ROOT" debug="0"/>
          <Context path="/axis" docBase="axis" debug="0" reloadable="true" />  
            
            
7.Apache Tomcat을 실행한다


8.http://localhost:8080/axis/index.html 를 방문하여 "Hello! Welcome to Apache-Axis"
  를 확인, 화면의 "Validate the local installation's configuration" 부분을 클릭한다
  이것은 axis 를 위한 core 라이브러리와 옵션 콤포넌트가 정확히 설치되었는지
  검사하는것으로 core 는 반드시 설치되어 있어야 하며 옵션이라 하더라도 일부 실행이 안되는
  경우가 있으므로 에러 메시지를 참고하여 라이브러리를 확인한 후 설치한다
  (아래는 정확히 설치된 경우의 메시지이다)

  The core axis libraries are present. The optional components are present.

  (라이브러리 추가설치가 필요하면)
    1.XML Security API: http://xml.apache.org/security/index.html 에서
      xml-security-bin-1_0_4.zip 를 다운받아 압축을 풀고, xmlsec.jar 파일을
      <J2SDK>jrelibext 디렉토리에 복사한다
    2.설치후 axis 관련 프로그램을 실행할 때 activation.jar, mail.jar, servlet.jar,
      xerces.jar 등을 못 찾는 메시지가 나올 때는 해당 파일을 찾아 <J2SDK>jrelibext
      에 복사해 넣는다


9.웹서비스 서버 프로그램 만들기
  아래의 웹서비스 서버 프로그램 예제를 편집하여 Factorial.jws 로
  <Apache Tomcat>webappsaxis 에 저장한다

  public class Factorial {
    public long getFactorial(int n) {
      if(n <= 0)
        return 1;
      else
        return n * getFactorial(n-1);
    }
        
    public String getVersion() {
      return "1.0.0";
    }
  }

  그 다음 http://localhost:8080/axis/Factorial.jws?method=getVersion 을 방문하여
  Factorial.jws의 getVersion 메소드를 호출하면 아래와 같은 응답이 오면 정상이다
  
  <?xml version="1.0" encoding="UTF-8" ?>
  <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
  <getVersionResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <getVersionReturn xsi:type="xsd:string">1.0.0</getVersionReturn>
  </getVersionResponse>
  </soapenv:Body>
  </soapenv:Envelope>  



[WSDL - axis]

1.테스트를 위하여 임의의 디렉토리를 만든다(여기서는 c:factorial 이라함)
  그 하위에 server 와 client 디렉토리를 만든다
  

2.http://localhost:8080/axis/Factorial.jws?wsdl 을 방문하여 자동 생성된 WSDL 문서를
  확인한 후 웹브라우저의 "View Source" 메뉴를 이용하여 c:factorial 에 Factorial.wsdl
  이라는 이름으로 저장한다


3.WSDL 파일을 자바 프로그램으로 자동 생성시키는 배치파일 wsdl2java.bat 을 만들어
  <J2SDK>bin 에 복사한다

  @echo off
  rem WSDL -> Java
  rem 사용법: wsdl2java <WSDL파일>
  java org.apache.axis.wsdl.WSDL2Java %1 %2 %3 %4 %5 %6 %7 %8


4.c:factorial 로 이동하여 아래 명령어로 자바 파일들을 만든다
  > wsdl2java -o client Factorial.wsdl
  
  4 개의 파일들이 clientlocalhost 에 생성된다
    Factorial.java
    FactorialService.java
    FactorialServiceLocator.java
    FactorialSoapBindingStub.java
  
  client 디렉토리로 이동하여 컴파일한다
  > javac -d . localhost/*.java
  

5.아래의 예제를 편집하여 FactClient.java 라는 이름으로 client 디렉토리에 저장하여
  컴파일한 후 실행하여 http://localhost:8080/axis/Factorial.jws
  getFactorial() 메소드가 호출되고 결과가 나타나는지 확인한다
  
  import localhost.*;
  public class FactClient {
    public static void main(String[] args) {
      if (args.length < 1) {
        System.out.println("usage: java FactClient <num>");
        System.exit(1);
      }
    
      try {
        FactorialServiceLocator locator = new FactorialServiceLocator();
        Factorial service = locator.getFactorial();
        int n = Integer.parseInt(args[0]);
        long value = service.getFactorial(n);
        System.out.println(args[0] + " != " + value);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }

  실행결과
  > javac FactClient.java
  > java FactClient 6
  6 != 720
  

  
[UDDI - uddi4j]
1.IBM 테스트 레지스트리(https://uddi.ibm.com/testregistry/registry.html) 에서
  테스트 ID을 받아 Business 를 검색/등록해본다
    

2.http://oss.software.ibm.com/developerworks/downloads/?group_id=13 에서
  uddi4j-bin-v2beta.zip 를 다운받아 임의의 디렉토리에 압축을 푼다
  <UDDI4J>lib 의 uddi4j.jar 파일을 <J2SDK>jrelibext 디렉토리에 복사한다
  톰캣을 다시 실행한다
    
    
3.<UDDI4J>samplessamples.prop 를 열어 해당 UDDI 서버의 inquiryURL, publishURL
  registry URL을 아래표를 참고하여 변경한다(여기서는 IBM Test registry 를 사용함)
    
    IBM
      Public registry
        Registration: https://uddi.ibm.com/ubr/registry.html
        inquiryURL= https://uddi.ibm.com/ubr/inquiryapi
        publishURL= https://uddi.ibm.com/ubr/publishapi
      Test registry
        Registration: https://uddi.ibm.com/testregistry/registry.html
        inquiryURL= https://uddi.ibm.com/testregistry/inquiryapi
        publishURL= https://uddi.ibm.com/testregistry/publishapi
    HP
        Registration: http://uddi.hp.com
        inquiryURL = http://uddi.hp.com/ubr/inquire
        publishURL = https://uddi.hp.com/ubr/publish
    Microsoft
        Registration: http://uddi.rte.microsoft.com
        inquiryURL=http://uddi.rte.microsoft.com/inquire
        publishURL=https://uddi.rte.microsoft.com/publish
    SAP
        Registration: http://udditest.sap.com
        inquiryURL=http://uddi.sap.com/UDDI/api/inquiry/
        publishURL=https://uddi.sap.com/UDDI/api/publish/

  받은 ID 정보를 추가한다(publish 시만 필요)
    userid = ????
    password = ????


  그리고 soap 전송방식을 ApacheAxisTransport 으로 바꾼다(주석 바꿈)
    #TransportClassName=org.uddi4j.transport.ApacheSOAPTransport
    TransportClassName=org.uddi4j.transport.ApacheAxisTransport
    # TransportClassName=org.uddi4j.transport.HPSOAPTransport
    
    
4.<UDDI4J>samples 에서
  > javac -d . Configurator.java 를 실행한다


5.<UDDI4J>samples 의 FindBusinessExample.java 를 열어 다음과 같이 수정하여
  특정 문자열로 시작하는 비즈니스 목록을 검색한다
  
    // "S" 부분에 검색하고자 하는 Busibess 명의 match 로 바꾼다
    names.add(new Name("S"));

    // 숫자 "5" 를 검색 갯수가 많으므로 크 숫자로 수정한다
    BusinessList businessList =
              proxy.find_business(names, null, null, null,null,findQualifiers, 5);

6.<UDDI4J>samples 에서
  > javac FindBusinessExample.java
  > java FindBusinessExample 를 실행하여 검색결과를 확인한다


7.UDDI 참고문서
  .IBM 웹서비스 개발자 사이트 => http://www.ibm.com/developerworks/webservices/
  .uddi4j API Classes => <UDDI4J>uddi4jdocsapiDocsindex.html
  
  
* 이 강좌의 자바예제 일부는 "자바개발자를 위한 XML/홍릉과학/최종명" 책의 예제를 참고하였습니다





5   [웹서비스] [강좌] 단문전송(SMS) 을 웹서비스로 시뮬레이션하기  김영대 2003/03/20 11360 2090
  [웹서비스] [강좌] SOAP,WSDL,UDDI 설치하고 실습하기  김영대 2003/03/17 15789 2013
3   [웹서비스] [XML] 회원등록 XML Parsing & DB 저장  김영대 2003/03/14 9324 2182
2   [웹서비스] [XML] Schema/XSLT를 이용한 회원등록 XML 만들기  김영대 2003/03/14 9274 3920
1   [웹서비스] [XML] DTD/XSLT를 이용한 회원등록 XML 만들기  김영대 2003/03/14 7229 1663

1
 

Copyright 1999-2017 Zeroboard / skin by zero