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個もあるからちょっとげんなり。

参考: JAX-WS (NI-Lab.'s MemoWiki - JaxWs)

tags: zlashdot WebServices JAXWS Java SOAP WebServices

Posted by NI-Lab. (@nilab)