#freeze
*[[WebService]]
最近巷で騒がれているもの。何がいいかわからないので、とりあえず環境を作って試してみましょう。
よく本では3種の神器、SOAP,WSDL,UDDIがうんたらかんたらと書かれていますが、はたしてほんとにこれは使い物になるのか、またwebサービスにすることによってどう変わるか検証していきます。
間単に説明すると
SOAP:Simple object Access Protocol データ交換の為のプロトコル
WSDL:Web Services Description Language インターフェースなどの仕様記述言語
UDDI:Universal Description,Discover and Integration Webサービスのgoogleみたいなもの。
**まずは環境設定
[[AXIS>http://ws.apache.org/axis/]] SOAPとWSDLを実装しているらしい。TOMCATと連携して動かして見ましょう。
・axis-1_1.zipを適当なとろろに解凍します。解凍後、c:\axis-1_1\webapps\axisをCATALINA_HOMEのwebappsにコピーしましょう。
ではTomcat起動して、http://localhost:8080/axis/index.htmlにアクセスしてみてください。
[[Apache-AXIS>http://hidekazu.dhs1.sst.ne.jp/axis/index.html]]
と書かれたページが でればOKです。
Tomcatが4の場合、jaxrpc.jar と saaj.jarを CATALINA_HOME/webapps/axis/WEB-INF/lib から CATALINA_HOME/common/lib にコピーし、
CATALINA_HOME/conf/web.xmlの
<!-- The mapping for the invoker servlet -->
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
がコメントされている場合はコメントを削除してください。
またhttp://xml.apache.org/security/dist/java-library/のxml-security-bin-1_1_0.zipをダウンロードして、xmlsec.jarを CATALINA_HOME/webapps/axis/WEB-INF/libにコピーしましょう。
ではTomcat を再起動して、今度はhttp://localhost:8080/axis/happyaxis.jspにアクセスしてみてください。
Axis Happiness Page
と表示されればOKです。xmlsec.jarがないとWarningが表示されます。
またxmlを処理するためのjarが必要になりますので、http://xml.apache.org/xerces2-j/index.htmlから左にあるメニューのDownloadを選択し、archive download site. からXerces-J-bin.2.6.2.zipをダウンロードしましょう。その中にあるjarをclasspathにセットしておきます。このあたりは、後にサンプルを作る際に説明していきます。
これは、Webサービスのプログラムを作ったときに、それをAxisにそのプログラムを教えてやる必要があります。その作業がデプロイなんですが、WSDD(Web Service Deployment Descripter)というファイルを作成して、デプロイを行う際に必要となるclassになります。
**作成
とりあえず、Javaでプログラムを作りましょう。作ったファイルをCATALINA_HOMEのwebappsにコピーします。その後、そのクラスを公開するので、wsddファイルを作成します。
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="urn:YubintblService" provider="java:RPC">
<parameter name="className" value="com.hidekazu.proutil.bean.data.YubintblService"/>
<parameter name="allowedMethods" value="*"/>
<parameter name="scope" value="session"/>
</service>
<beanMapping qname="ns:YubintblBean" xmlns:ns="urn:yubintblBean"
languageSpecificType="java:com.hidekazu.proutil.bean.entity.YubintblBean"/>
</deployment>
その後、
java org.apache.axis.client.AdminClient -p 8080 deploy.wsdd
でデプロイします。-pはtomcatのポートです。この後、
http://localhost:8080/axis/servlet/AxisServlet
にアクセスして、先ほどデプロイしたサービスが見えていればOKです。
たまにAnd now... Some Servicesだけが表示されて、なにも見えないことがあります。そのときは、CATALINA_HOMEのlogを見てください。localhost_logに何かメッセージがでているはずです。
**データマッピング
Axisのサポートする標準マッピング (WSDL -> Java)
xsd:base64Binary byte[]
xsd:boolean boolean
xsd:byte byte
xsd:dateTime java.util.Calendar
xsd:decimal java.math.BigDecimal
xsd:double double
xsd:float float
xsd:hexBinary byte[]
xsd:int int
xsd:integer java.math.BigInteger
xsd:long long
xsd:QName javax.xml.namespace.QName
xsd:short short
xsd:string java.lang.String
AxisはJAX-RPC互換です。そこで、JAX-RPC仕様や、Sunの参照実装も参照してください。相互運用性の高い実装を提供する上で、参考になるでしょう。
**JWS
Java Web Service の略です。javaでプログラムを作り、その拡張子をjwsにして、tomcatのwebapps\axisに配置してやるとそれだけで、サービスを公開できるそうです。大変簡単らしいのですが、目的はSOAP,WSDLについて知りたいので、パスします。