Define the Service

다음과 같이  int, String그리고 새로 생성한 MyObject Echo하는 서비스를 생성한다.(MyObject 코드는 별도의 클래스로 작성했다.)

 

 

package learningjava.service;

 

import javax.jws.WebMethod;

import javax.jws.WebService;

import javax.xml.ws.Endpoint;

 

@WebService

public class Echo

{

    @WebMethod

    public int echoInt( int value ) { return value; }

 

    @WebMethod

    public String echoString( String value ) { return value; }

 

    @WebMethod

    public MyObject echoMyObject( MyObject value ) { return value; }

 

    public static void main( String[] args )

    {

        Endpoint.publish( "http://localhost:8080/echo", new Echo() );

    }

}

 

 

 

package learningjava.service;

 

public class MyObject {

       int intValue;

       String stringValue;

 

       public MyObject() {

       }

 

       public MyObject(int i, String s) {

              this.intValue = i;

              this.stringValue = s;

       }

 

       public int getIntValue() {

              return intValue;

       }

 

       public void setIntValue(int intValue) {

              this.intValue = intValue;

       }

 

       public String getStringValue() {

              return stringValue;

       }

 

       public void setStringValue(String stringValue) {

              this.stringValue = stringValue;

       }

 

       public String toString() {

              return String.format("MyObject: %i, %s", intValue, stringValue);

       }

}

 

다음과 같이 서비스를 위하여 컴파일하고 웹서비스를 생성하기위하여 위의 두개의  클래스를 컴파일하고 컴파일된 Echo.class 실행하여 서비스를 시작(publish)한다.


            


그러면 다음과 같이 브라우저를 통해서 웹서비스 정보를 얻을수 있으며, WSDL 링크를 클릭하면 서비스 디스크립션 문서를 열람할 있다.


            


            

     

Using the Service

이젠 서비스에서  제공되는 WSDL 참조를 통해 클라이언트 소스를 다운받고(-p옵션을 통해 생성되는 소스의 패키지를 지정할수 있으며, -keep 옵션을 통해 소스파일도 함께 받을(다운로드) 있다.)


다음과 같이 해당 클래스와 소스를 확인할 있다. 이로서 클라이언트( 웹서비스를 사용하는 프로그램)에서 사용할 있는 또는 필요한 클래스 들이 확보되었다.



이제는 테스트(클라이언트)코드 생성해서 (필요한 클래스는 확보되었으므로) 서비스를 이요하면 되겠다. 다음과 같이 간단한 클라이언트 코드를 생성하여 컴파일한다.

 

 

package learningjava.client;

 

import learningjava.client.impl.*;

import learningjava.client.impl.Echo;

import learningjava.client.impl.MyObject;

 

public class EchoClient

{

       public static void main( String [] args ) throws java.rmi.RemoteException

       {

        Echo service = new EchoService().getEchoPort();

        int i = service.echoInt( 42 );

              System.out.println( i );

              String s = service.echoString( "Hello!" );

              System.out.println( s );

        MyObject myObject = new MyObject();

        myObject.setIntValue( 42 );

        myObject.setStringValue( "Foo!" );

        MyObject myObj = service.echoMyObject( myObject );

              System.out.println( myObj.getStringValue() );

 

        new learningjava.service.Echo();

       }

}

 

 

 

다음은 클라이언트 코드를 컴파일 하고 실행시킨 결과이다.


          



 

Posted by Steven J.S Min
,