Webサービス II (第6回)
http://www.wakhok.ac.jp/~tatsuo/ws2/
2006年11月1日
植田龍男
JAX-WS




新しい Webサービスの枠組み
じゃ、古い Webサービスって?
JAX-RPC 1.0
JAX-RPC 2.0 = JAX-WS 2.0
JAXB を利用して実現
Webサービスのアノテーションの導入
Webサービスのアノテーション
import javax.jws.*;
@WebService
public class HelloImpl {
public String sayHello( String name ) {
return “Hello,” + name;
}
}
本当はこれだけになる
実装クラスを「ごく普通の Java」のプログラ
ムとして書く
( POJO = Plain Old Java Object )
 Webサービスのアノテーションを付ける
(最低限なら @WebService のみ)
 サーバに渡す(以上で終了)
 Webサービスも Java SE の守備範囲!

自動生成(wsgenツール)
javac -cp . hello\HelloImpl.java
wsgen -cp . -wsdl hello.HelloImpl
HelloService.wsdl, HelloServiceTypes.xsd
hello.jaxws 以下に sayHello.java,
sayHelloResponse.java
sayHello.class
sayHelloResponse.class
補足: JWSDP 2.0 での扱い


wsgen は JWSDP-2.0/jaxws/bin に
(環境変数 PATH に追加)
jax-ws 関連のパッケージ
JWSDP-2.0/jaxws/lib に
(環境変数 CLASSPATH に追加)
クライアントプログラムの作成(1)


自動生成ツール wsimport
wsimport HelloService.wsdl
wsimport http://localhost/Service?wsdl
HelloImpl.class, HelloServiceImpl.class,
ObjectFactory.class
SayHello.class, SayHelloResponse.class
クライアントプログラムの作成(2)
public class HelloClient {
public static void main ( String[] args ) {
HelloImpl port = new
HelloImplService().getHelloImplPort();
String message
=port.sayHello( "Tatsuo" );
System.out.printf ( message );
本日のビルドファイル(その1-1)
<project basedir="." default="run">
<property name="jwsdp.home"
value="/Sun/jwsdp-2.0" />
<path id="classpath">
<pathelement path="." />
<fileset dir="${jwsdp.home}“
includes="jaxws/lib/*.jar" />
<fileset dir="${jwsdp.home}"
includes="jaxb/lib/*.jar" />
本日のビルドファイル(その1-2)
<taskdef name="wsimport“
classname="com.sun.tools.ws.ant.WsImport">
<classpath refid="classpath"/>
</taskdef>
<target name="wsimport">
<wsimport destdir="."
wsdl="http://localhost/hello?wsdl">
</wsimport>
</target>
本日のビルドファイル(その1-3)
<target name="compile"
depends="wsimport">
<javac destdir="." debug="on">
<src path="./hello" />
<classpath refid="classpath" />
</javac>
</target>
本日のビルドファイル(その1-4)
<target name="run"
depends="compile" >
<java fork="true“
classname="hello.HelloClient">
<classpath refid="classpath" />
</java>
</target>
ダウンロード

JAX-WS その2