JAX-WS とは
JAX-WS は Java API for XML-Based Web Services.
SOAP(Simple Object Access Protocol) な Web Services のクライアントプログラムやサーバプログラムをさくさく作れるらしい Java のライブラリ。
JAX-WS は JAX-RPC の後継仕様。
たぶんこんな感じの進化: JAX-RPC 1.0 -> JAX-RPC 1.1 -> JAX-WS 2.0
JAX-WS 仕様はここ → The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 224
Web サービスが登場してからしばらく経ちました。最初に SOAP がありましたが、SOAP は、メッセージがどのように見えるのかを記述できるのみでした。次に WSDL が登場しましたが、WSDL は、Web サービスを Java で作成する方法を記述していませんでした。次に JAX-RPC 1.0 が登場しましたが、数ヶ月使われた後、この仕様を作成した JCP (Java Community Process) の人達は JAX-RPC 1.0 に少し細工が必要なことに気付き、その結果 JAX-RPC 1.1 が登場しました。この仕様が 1 年ほど使われた後、JCP の人達は、もっと良い、JAX-RPC 2.0 を作ろうとしました。主な目的は業界の方向性と整合させることでしたが、業界は RPC による Web サービスだけではなく、メッセージ指向の Web サービスも行っていました。そこで名前から「RPC」が消され、「WS」(もちろん Web サービスを表します) で置き換えられました。というわけで、JAX-RPC 1.1 の後継は JAX-WS 2.0、つまり Java API for XML-based Web services なのです。
IBM Web サービスのヒント: JAX-RPC と JAX-WS - Japan
JAX-WS のパッケージ
-javax.xml.ws
-javax.xml.ws.handler
-javax.xml.ws.handler.soap
-javax.xml.ws.http
-javax.xml.ws.soap
-javax.xml.ws.spi
JAX-WS の API リファレンス
jax-ws.dev.java.net にある JAX-WS 2.1 とか、
実は Java SE 6 (JDK 6) に搭載されているから Java Platform, Standard Edition 6 API 仕様 とか。
JAX-WS の実装をダウンロードする
jax-ws: JAX-WS Reference Implementation からリファレンス実装がダウンロードできる。
今回は、バージョンナンバーが 2.1.2M1 (JAXWS2.1.2M1_20070614.jar) というのをダウンロードした。
解凍(伸張)またはセットアップの方法
jar ファイルは zip みたいなものだから、といってそのまま JAXWS2.1.2M1_20070614.jar を解凍しても Main.class のようなファイルぐらいしか出てこない。
ダウンロードページに書いてあるように
java -jar JAXWS2.1.2M1_20070614.jar
とする必要がある。
(java は 1.4.2 では動作しないっぽい。1.5 以降が必要(たぶん))
「ライセンス同意してくださいウィンドウ」が出てくるので[accept]を選択すると、jaxws-ri ディレクトリが作られていろいろとファイルが解凍されて出てくる。
JAXWS2.1.2M1_20070614.jar の中身
C:\jaxws-ri>tree /F
フォルダ パスの一覧
ボリューム シリアル番号は 00001234 CAFE:BABE です
C:.
│ build.xml
│ CDDL-1.0-license.txt
│ distributionREADME_WMforJava2.0.txt
│ README
│ ThirdPartyLicense.txt
│ tree.txt
│
├─bin
│ wsgen.bat
│ wsgen.sh
│ wsimport.bat
│ wsimport.sh
│
├─docs
│ │ annotations.html
│ │ apt.html
│ │ asynch.html
│ │ asyncprovider.html
│ │ catalog-support.html
│ │ catalog.html
│ │ CDDL-1.0-license.txt
│ │ changelog.html
│ │ community.html
│ │ Copyright.txt
│ │ customizations.html
│ │ dispatch.html
│ │ distributionREADME_WMforJava2.0.txt
│ │ endpoint.html
│ │ handlers.html
│ │ index.html
│ │ interop.html
│ │ jaxws-tools.html
│ │ jaxws-war.html
│ │ mtom-swaref.html
│ │ provider.html
│ │ ReleaseNotes.html
│ │ ri-features.html
│ │ samples.html
│ │ soap12.html
│ │ statefulWebservice.html
│ │ sun-jaxws.xsd
│ │ ThirdPartyLicense.txt
│ │ UsersGuide.html
│ │ why-wsaddressing.html
│ │ wsaddressing.html
│ │ wsgen.html
│ │ wsgenant.html
│ │ wsimport.html
│ │ wsimportant.html
│ │
│ └─style
│ a2_corner_tr.gif
│ bg_titlebar.gif
│ corner_navblue_tr.gif
│ d7_tab_bg.gif
│ default.css
│ sunlogo.gif
│ Thumbs.db
│
├─lib
│ activation.jar
│ FastInfoset.jar
│ http.jar
│ jaxb-api.jar
│ jaxb-impl.jar
│ jaxb-xjc.jar
│ jaxws-api.jar
│ jaxws-rt.jar
│ jaxws-tools.jar
│ jsr173_api.jar
│ jsr181-api.jar
│ jsr250-api.jar
│ resolver.jar
│ saaj-api.jar
│ saaj-impl.jar
│ sjsxp.jar
│ stax-ex.jar
│ streambuffer.jar
│
└─samples
├─annotations
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ deploy-targets.xml
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─annotations
│ ├─client
│ │ AddNumbersClient.java
│ │
│ └─server
│ AddNumbersException.java
│ AddNumbersIF.java
│ AddNumbersImpl.java
│
├─async
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ custom-client.xml
│ │ deploy-targets.xml
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─async
│ ├─client
│ │ AddNumbersClient.java
│ │
│ └─server
│ AddNumbersImpl.java
│
├─asyncprovider
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ deploy-targets.xml
│ │ hello_literal.wsdl
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─asyncprovider
│ ├─client
│ │ AsyncClient.java
│ │
│ └─server
│ HelloAsyncImpl.java
│
├─catalog
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ │ AddNumbers.wsdl
│ │ │ deploy-targets.xml
│ │ │ sun-jaxws.xml
│ │ │ web.xml
│ │ │
│ │ └─META-INF
│ │ jax-ws-catalog.xml
│ │
│ └─src
│ └─catalog
│ ├─client
│ │ AddNumbersClient.java
│ │
│ └─server
│ AddNumbersImpl.java
│
├─dispatch
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ AddNumbers.wsdl
│ │ deploy-targets.xml
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─dispatch
│ ├─client
│ │ AddNumbersClient.java
│ │
│ └─server
│ AddNumbersImpl.java
│
├─docs
│ │ index.html
│ │
│ └─style
│ default.css
│
├─external-customize
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ custom-client.xml
│ │ custom-schema.xml
│ │ deploy-targets.xml
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─external_customize
│ ├─client
│ │ AddNumbersClient.java
│ │
│ └─server
│ AddNumbersException.java
│ AddNumbersImpl.java
│
├─fromjava
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ deploy-targets.xml
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─fromjava
│ ├─client
│ │ AddNumbersClient.java
│ │
│ └─server
│ AddNumbersException.java
│ AddNumbersImpl.java
│ AddWebservice.java
│ EndpointStopper.java
│
├─fromjava-soap12
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ deploy-targets.xml
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─fromjava_soap12
│ ├─client
│ │ AddNumbersClient.java
│ │
│ └─server
│ AddNumbersException.java
│ AddNumbersImpl.java
│
├─fromjava-wsaddressing
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ deploy-targets.xml
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─fromjava_wsaddressing
│ ├─client
│ │ AddNumbersClient.java
│ │
│ └─server
│ AddNumbersException.java
│ AddNumbersImpl.java
│
├─fromjavahandler
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ custom-client.xml
│ │ deploy-targets.xml
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─fromjavahandler
│ ├─client
│ │ AddNumbersClient.java
│ │
│ ├─common
│ │ LoggingHandler.java
│ │
│ └─server
│ AddNumbersException.java
│ AddNumbersImpl.java
│ handlers.xml
│
├─fromwsdl
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ AddNumbers.wsdl
│ │ deploy-targets.xml
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─fromwsdl
│ ├─client
│ │ AddNumbersClient.java
│ │
│ └─server
│ AddNumbersImpl.java
│
├─fromwsdl-soap12
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ AddNumbers.wsdl
│ │ deploy-targets.xml
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─fromwsdl_soap12
│ ├─client
│ │ AddNumbersClient.java
│ │
│ └─server
│ AddNumbersImpl.java
│
├─fromwsdl-wsaddressing
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ AddNumbers.wsdl
│ │ deploy-targets.xml
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─fromwsdl_wsaddressing
│ ├─client
│ │ AddNumbersClient.java
│ │
│ └─server
│ AddNumbersImpl.java
│
├─fromwsdlhandler
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ AddNumbers.wsdl
│ │ custom-client.xml
│ │ custom-server.xml
│ │ deploy-targets.xml
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─fromwsdlhandler
│ ├─client
│ │ AddNumbersClient.java
│ │
│ ├─common
│ │ LoggingHandler.java
│ │
│ └─server
│ AddNumbersImpl.java
│
├─fromwsdl_secure
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ │ AddNumbers.wsdl
│ │ │ deploy-targets.xml
│ │ │ sun-jaxws.xml
│ │ │ web.xml
│ │ │
│ │ └─certs
│ │ client.keystore
│ │ tomcat.certificate
│ │ tomcat.keystore
│ │
│ └─src
│ └─fromwsdl_secure
│ ├─client
│ │ AddNumbersClient.java
│ │
│ └─server
│ AddNumbersImpl.java
│
├─inline-customize
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ AddNumbers.wsdl
│ │ deploy-targets.xml
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─inline_customize
│ ├─client
│ │ AddNumbersClient.java
│ │
│ └─server
│ AddNumbersImpl.java
│
├─mime
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─common_resources
│ │ java.jpg
│ │
│ ├─etc
│ │ custom-client.xml
│ │ custom-server.xml
│ │ deploy-targets.xml
│ │ hello.wsdl
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─mime
│ ├─client
│ │ AttachmentHelper.java
│ │ MimeApp.java
│ │
│ └─server
│ HelloImpl.java
│
├─mtom
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─common_resources
│ │ gpsXml.xml
│ │ java.jpg
│ │
│ ├─etc
│ │ deploy-targets.xml
│ │ hello.wsdl
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─mtom
│ ├─client
│ │ AttachmentHelper.java
│ │ MtomApp.java
│ │
│ └─server
│ HelloImpl.java
│
├─mtom-soap12
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─common_resources
│ │ gpsXml.xml
│ │ java.jpg
│ │
│ ├─etc
│ │ deploy-targets.xml
│ │ hello.wsdl
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─mtom_soap12
│ ├─client
│ │ AttachmentHelper.java
│ │ MtomApp.java
│ │
│ └─server
│ HelloImpl.java
│
├─provider
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ AddNumbers.wsdl
│ │ deploy-targets.xml
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─provider
│ ├─client
│ │ AddNumbersClient.java
│ │
│ └─server
│ AddNumbersImpl.java
│
├─restful
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ deploy-targets.xml
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─restful
│ ├─client
│ │ AddNumbersClient.java
│ │ DispatchAddNumbersClient.java
│ │
│ └─server
│ AddNumbersImpl.java
│
├─stateful
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ deploy-targets.xml
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─stateful
│ ├─client
│ │ Main.java
│ │
│ └─server
│ Book.java
│ BookStore.java
│
├─supplychain
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ deploy-targets.xml
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─supplychain
│ ├─client
│ │ RetailerClient.java
│ │
│ └─server
│ EndpointStopper.java
│ InvalidPOException.java
│ Item.java
│ PurchaseOrder.java
│ ShipmentNotice.java
│ WarehouseImpl.java
│ WarehouseLightWeight.java
│
├─type_substitution
│ │ build.xml
│ │ Readme.txt
│ │
│ ├─etc
│ │ deploy-targets.xml
│ │ sun-jaxws.xml
│ │ web.xml
│ │
│ └─src
│ └─type_substitution
│ ├─client
│ │ CarBuyerApp.java
│ │
│ └─server
│ Car.java
│ CarDealer.java
│ Toyota.java
│ Vehicle.java
│
└─wsimport_catalog
build.xml
HelloService.wsdl
HelloTypes.xsd
Readme.txt
wsdlcatalog.xml
WsimportCatalogTester.java
ライブラリとなる JAR ファイルが 18個もあるからちょっとげんなり。
tags: zlashdot WebServices JAXWS Java SOAP WebServices
Posted by NI-Lab. (@nilab)