VOサービスの立ち上げ方 データセンター 白崎裕治 SkyNode toolkit VO Interface に準拠したサービスの立ち上げは 結構難しい。 サービスのインターフェイス部分は出来合いの ソフトウエアを使うのが妥当。 JVO では SkyNode サービスを簡単に立ち上げ るための Toolkit を開発し、公開している。 http://jvo.nao.ac.jp/download/skynode-toolkit/ JVO SkyNode Architecture Controller Resource Parameter Translator Interface SIAP/SSAP IN SkyNode IN ADQL QL Converter SQL for backend DB SIAP/SSAP/SkyNode OUT VOTable VOTable upload JDBC JDBC Data Metadata Formatter ResultSet ResultSetMetaData 主要な Java Class org.apache.axis.transport.http.AxisServlet jp.ac.nao.jvop3.service.skynode.SkyNodeSoapImpl jp.ac.nao.jvop3.gateway.SOAPGatewaySkyNode jp.ac.nao.jvop3.controller.skynode.SkyNodeImpl jp.ac.nao.jvop3.controller.skynode.QuerySkyNode jp.ac.nao.jvop3.controller.skynode.ResultSetForSkyNode jp.ac.nao.jvop3.controller.skynode.ResultSetMetaDataForSkyNode jp.ac.nao.jvop3.controller.skynode.DataFormatter SkyNodeSoapImpl SOAP エンジンから直接呼び出されるクラス。 http://jvo.nao.ac.jp/skynode/services/@serviceName@ wsdd file または web GUI で指定。 アクセス先 DB 名は wsdd file にパラメータとして定義 etc/deploy-template.wsdd … <service name="@serviceName@" provider="java:RPC" style="wrapped" use="literal"> <parameter name="skynode.db" value="@DB@"/> <parameter name="className" value="@serviceClass@"/> ... SOAPGatewaySkyNode AXIS Java オブジェクトから JAXB Java オブジェクト への変換 AXIS SOAP エンジンは SOAP メッセージを受け取ると, メッセージの解析を行い XML から Java へのデータ マッピングを行う。 ADQL-x AXIS Java の SelectType オブジェクト SkyNode 内部の実装は JAXB の SelectType オブジェ クトを利用。(使いやすい、カスタマイズしやすい)。 内部実装(JAXB)をインターフェイス(AXIS) から独立 にすることで、AXIS のバージョンアップしやすい。 SkyNodeImpl 実際に検索を行うためのロジックを呼び出す。 ResultSet performQuery(SelectSQL select) { Connection conn = connManager.getConnection(dbms, dbname, 10) StatementForSkyNode st = (StatementForSkyNode) conn.createStatement() ResultSetForSkyNode rs = st.executeQuery(selectType) VOTABLEType vot = DataFormmatter.getVOTable(rs) return vot; } QuerySkyNode ADQL を Backend DBMS が理解できる SQL に変換し検索を実行するクラス (abstract)。 これを継承した QuerySingle (検索テーブルひと つの場合), QueryMulti (クロスマッチ検索用) が 実際に使われる。 etc/jvo.properties ファイルで指定できる。 Region 検索 t1 id 1 (2) … t2 id 1 1 … object crpx1 crpix2 SXDS 300 150 … htm 10045 10046 … … … … … filter Image/fits … … … … … REGION(‘BOX 30 t3 qid rid low upp 1 1 1004 1005 1 1 1008 1009 … (1) … … … 10 0.1’) Select * from (select t2.id from t2, t3 where t2.htm between t3.low and t3.upp) t4 natural join t1 (1) Select “id” from t2 with t2.htm between t3.low and t3.upp (2) Select records from t1 corresponding to the selected “id” jvo.properties prefix=/usr/local/skynode/ work.dir=work tmp.dir=tmp deploy.template=etc/deploy-template.wsdd jdbc.driver.pgsql=org.postgresql.Driver jdbc.url.pgsql=jdbc:postgresql://localhost:5432/ jdbc.user.pgsql=yshirasa jdbc.passwd.pgsql= metadata.db.name=metadb dbms.metadb=pgsql connection.max=10 query.class.default=jp.ac.nao.jvop3.controller.skynode.QueryMulti logger.properties=etc/log4j.properties struts-config.xml <plug-in className="jp.ac.nao.jvop3.controller.skynode.PlugInForSkyNode"> <set-property property="jvoProperties" value="/usr/local/skynode/etc/jvo.properties"/> </plug-in> web.xml <servlet> <servlet-name>AxisServlet</servlet-name> <display-name>Apache-Axis Servlet</display-name> <servlet-class> org.apache.axis.transport.http.AxisServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> … <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> ディレクトリ構成 Skynode_dev src ソースコード lib ライブラリ (jar ファイル) doc ドキュメント (instruction.txt) etc コンフィギュレーションファイル sample サンプルデータ、サンプルSQL等 war SkyNode service war file build*.* コンパイル用のファイル init-cshrc 初期設定スクリプト
© Copyright 2024 ExpyDoc