PDB Web Services  

PDBのWebサーバはWebサービス(β版)も提供しており、Java、C++、Python、Perlなどからも使えるようです。たまたまJavaでのクライアントを試す機会がありましたので紹介します。-- 2008/07/17

PDB Web Services for Java  

PDBのWebサービスを使うためのクライアントを作成するためにはWSDL(Web Services Description Language)から必要なクラスを作成します。ここではJavaで使うための手順を記述します。

必要なもの  

Apache Axisに付属のWSDL2Javaを実行するための環境を準備します。

Apache Axisのサイトからaxis-bin-1_4.tar.gzを適当な作業ディレクトリにダウンロードします。

% tar zxvf axis-bin-1_4.tar.gz
% java -classpath "axis-1_4/lib/axis.jar:axis-1_4/lib/commons-logging-1.0.4.jar:axis-1_4/lib/commons-discovery-0.2.jar:axis-1_4/lib/jaxrpc.jar:axis-1_4/lib/saaj.jar:axis-1_4/lib/wsdl4j-1.5.1.jar" org.apache.axis.wsdl.WSDL2Java "http://www.pdb.org/pdb/services/pdbws?WSDL"

長いコマンドラインですがコピーして実行して下さい。PDBヘルプにはAntやEclipseを使えば楽にできると書いてありますが、やり方がよくわかりませんでした [huh]。なお、classpathオプションはUNIX環境なら区切り文字は:(コロン)、Windows環境なら;(セミコロン)なので気をつけて下さい。普段Javaをコマンドラインで使わないのでかなり悩みました・・・
私の環境では、

2008/07/16 14:25:58 org.apache.axis.utils.JavaUtils isAttachmentSupported
警告: 要求されたクラス(javax.activation.DataHandler と javax.mail.internet.MimeMultipart)が見つかりません。Attachmentサポートが利用できません。 / [en]-(Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.)

というような警告が表示されましたがこの時点では無視して問題なさそうです。
成功すれば作業ディレクトリ以下にorg/pdb/webservicesディレクトリが作成され、いくつかの.javaファイルが生成されます。 これらをプロジェクトに追加して使います。実際にクラスを呼ぶときはAxisをCLASSPATHに追加しておく必要があります。

使ってみました  

が、あまり大したことはできなさそうです・・・BLASTとかできるみたいですが。もうちょっとドキュメント読んでから試したらよかった・・・(Advanced searchと同じようなことがしたかったのですが・・・仕方がないので別の方法でAdvanced searchの実装を試すことになりました。機会があれば解説します)

警告が出る  

PdbWebServicesクラスを利用するときにWSDL2Java実行時と同じ警告が出ました(要求されたクラス〜)。いちいち出るのが鬱陶しいので以下のライブラリをCLASSPATHに追加することで回避しました。

Axis2でも試してみた  

Caused by: org.apache.axis2.schema.SchemaCompilationException: can not find type {http://schemas.xmlsoap.org/soap/encoding/}Array from the parent schema webservices.pdb.org

こんなエラーが出ました・・・
ちょっと調べたところAxis2はRPC/encodedには対応していないらしくAxisを使えとのことです。なお、Axis2ではアーカイブに同梱されているbin/wsdl2java.shを使ってみました。

感想  

Webで検索してみてもPDB Webサービスの記事はほとんど見つかりませんし、ありがちな「作ってみたけどほったらかし」な感じがします [smile]。私の目的には適合しませんでしたが、自動でBLASTとかFASTA検索をしたい場合には案外利用できるかもしれません。