13
VO VO ササササササササササ ササササササササササ デデデデデデデ デデデデ

VO サービスの立ち上げ方 データセンター 白崎裕治. SkyNode toolkit VO Interface に準拠したサービスの立ち上げ は結構難しい。 VO Interface に準拠したサービスの立ち上げ

  • View
    228

  • Download
    3

Embed Size (px)

Citation preview

Page 1: VO サービスの立ち上げ方 データセンター 白崎裕治. SkyNode toolkit VO Interface に準拠したサービスの立ち上げ は結構難しい。 VO Interface に準拠したサービスの立ち上げ

VOVO サービスの立ち上げ方サービスの立ち上げ方

データセンター 白崎裕治

Page 2: VO サービスの立ち上げ方 データセンター 白崎裕治. SkyNode toolkit VO Interface に準拠したサービスの立ち上げ は結構難しい。 VO Interface に準拠したサービスの立ち上げ

SkyNode toolkitSkyNode toolkit

VO Interface VO Interface に準拠したサービスの立ち上に準拠したサービスの立ち上げは結構難しい。げは結構難しい。

サービスのインターフェイス部分は出来合サービスのインターフェイス部分は出来合いのソフトウエアを使うのが妥当。いのソフトウエアを使うのが妥当。

JVO JVO では では SkyNode SkyNode サービスを簡単に立ちサービスを簡単に立ち上げるための 上げるための Toolkit Toolkit を開発し、公開してを開発し、公開している。いる。

http://jvo.nao.ac.jp/download/skynode-toolhttp://jvo.nao.ac.jp/download/skynode-toolkit/kit/

Page 3: VO サービスの立ち上げ方 データセンター 白崎裕治. SkyNode toolkit VO Interface に準拠したサービスの立ち上げ は結構難しい。 VO Interface に準拠したサービスの立ち上げ

JVO SkyNode ArchitectureJVO SkyNode Architecture

FormatterQL Converter

ADQL VOTableParame

terVOTable

SIAP/SSAP IN SkyNode IN SIAP/SSAP/SkyNode OUT

JDBC JDBC

upload

Inte

rfa

ceC

on

troll

er

Reso

ur

ce

SQL for backend

DB

ResultSet

Data

Metadata

Translator

ResultSetMetaData

Page 4: VO サービスの立ち上げ方 データセンター 白崎裕治. SkyNode toolkit VO Interface に準拠したサービスの立ち上げ は結構難しい。 VO Interface に準拠したサービスの立ち上げ

主要な 主要な Java ClassJava Class

org.apache.axis.transport.http.AxisServletorg.apache.axis.transport.http.AxisServlet jp.ac.nao.jvop3.service.skynode.SkyNodeSoapImpljp.ac.nao.jvop3.service.skynode.SkyNodeSoapImpl jp.ac.nao.jvop3.gateway.SOAPGatewaySkyNodejp.ac.nao.jvop3.gateway.SOAPGatewaySkyNode jp.ac.nao.jvop3.controller.skynode.SkyNodeImpljp.ac.nao.jvop3.controller.skynode.SkyNodeImpl jp.ac.nao.jvop3.controller.skynode.QuerySkyNodejp.ac.nao.jvop3.controller.skynode.QuerySkyNode

jp.ac.nao.jvop3.controller.skynode.ResultSetForSkyNodejp.ac.nao.jvop3.controller.skynode.ResultSetForSkyNode jp.ac.nao.jvop3.controller.skynode.ResultSetMetaDataForSkyNodejp.ac.nao.jvop3.controller.skynode.ResultSetMetaDataForSkyNode

jp.ac.nao.jvop3.controller.skynode.DataFormatterjp.ac.nao.jvop3.controller.skynode.DataFormatter

Page 5: VO サービスの立ち上げ方 データセンター 白崎裕治. SkyNode toolkit VO Interface に準拠したサービスの立ち上げ は結構難しい。 VO Interface に準拠したサービスの立ち上げ

SkyNodeSoapImplSkyNodeSoapImpl SOAP SOAP エンジンから直接呼び出されるクラス。エンジンから直接呼び出されるクラス。 http://jvo.nao.ac.jp/skynode/services/@serviceNahttp://jvo.nao.ac.jp/skynode/services/@serviceNa

me@me@ wsdd file wsdd file または または web GUI web GUI で指定。で指定。 アクセス先 アクセス先 DB DB 名は 名は wsdd file 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@"/>

......

Page 6: VO サービスの立ち上げ方 データセンター 白崎裕治. SkyNode toolkit VO Interface に準拠したサービスの立ち上げ は結構難しい。 VO Interface に準拠したサービスの立ち上げ

SOAPGatewaySkyNodeSOAPGatewaySkyNode AXIS Java AXIS Java オブジェクトから オブジェクトから JAXB Java JAXB Java オブオブ

ジェクトへの変換ジェクトへの変換 AXIS SOAP AXIS SOAP エンジンは エンジンは SOAP SOAP メッセージを受け取るメッセージを受け取る

とと , , メッセージの解析を行い メッセージの解析を行い XML XML から から Java Java へのへのデータマッピングを行う。データマッピングを行う。

ADQL-x ADQL-x AXIS Java AXIS Java の の SelectType SelectType オブジェクトオブジェクト SkyNode SkyNode 内部の実装は 内部の実装は JAXB JAXB の の SelectType SelectType オブオブ

ジェクトを利用。(使いやすい、カスタマイズしやジェクトを利用。(使いやすい、カスタマイズしやすい)。すい)。

内部実装(内部実装( JAXBJAXB )をインターフェイス()をインターフェイス( AXIS) AXIS) からから独立にすることで、独立にすることで、 AXIS AXIS のバージョンアップしやすのバージョンアップしやすい。い。

Page 7: VO サービスの立ち上げ方 データセンター 白崎裕治. SkyNode toolkit VO Interface に準拠したサービスの立ち上げ は結構難しい。 VO Interface に準拠したサービスの立ち上げ

SkyNodeImplSkyNodeImpl 実際に検索を行うためのロジックを呼び出す。実際に検索を行うためのロジックを呼び出す。

ResultSet performQuery(SelectSQL select) {ResultSet performQuery(SelectSQL select) {

Connection conn = Connection conn =

connManager.getConnection(dbms, dbname, 10)connManager.getConnection(dbms, dbname, 10)

StatementForSkyNode st =StatementForSkyNode st =

(StatementForSkyNode) conn.createStatement()(StatementForSkyNode) conn.createStatement()

ResultSetForSkyNode rs = ResultSetForSkyNode rs = st.executeQueryst.executeQuery(selectType)(selectType)

VOTABLEType vot = VOTABLEType vot = DataFormmatter.getVOTableDataFormmatter.getVOTable(rs)(rs)

return vot;return vot;

}}

Page 8: VO サービスの立ち上げ方 データセンター 白崎裕治. SkyNode toolkit VO Interface に準拠したサービスの立ち上げ は結構難しい。 VO Interface に準拠したサービスの立ち上げ

QuerySkyNodeQuerySkyNode

ADQL ADQL を を Backend DBMS Backend DBMS が理解できる が理解できる SSQL QL に変換し検索を実行するクラス に変換し検索を実行するクラス (abstr(abstract)act) 。。

これを継承した これを継承した QuerySingle (QuerySingle ( 検索テーブ検索テーブルひとつの場合ルひとつの場合 ), QueryMulti (), QueryMulti ( クロスマックロスマッチ検索用チ検索用 ) ) が実際に使われる。が実際に使われる。

etc/jvo.properties etc/jvo.properties ファイルで指定できる。ファイルで指定できる。

Page 9: VO サービスの立ち上げ方 データセンター 白崎裕治. SkyNode toolkit VO Interface に準拠したサービスの立ち上げ は結構難しい。 VO Interface に準拠したサービスの立ち上げ

Region Region 検索検索id object crpx1 crpix2 … filter …

1 SXDS 300 150 … Image/fits …

… … … … … … …

qid rid low upp

1 1 1004 1005

1 1 1008 1009

… … … …

id htm

1 10045

1 10046

… …

REGION(‘BOX 30 10 0.1’)REGION(‘BOX 30 10 0.1’)t2 t3

(1)

(2)

(1) Select “id” from t2 with t2.htm between t3.low and t3.upp

(2) Select records from t1 corresponding to the selected “id”

t1

Select * from (select t2.id from t2, t3 where t2.htm between t3.low and t3.upp) t4 natural join t1

Page 10: VO サービスの立ち上げ方 データセンター 白崎裕治. SkyNode toolkit VO Interface に準拠したサービスの立ち上げ は結構難しい。 VO Interface に準拠したサービスの立ち上げ

jvo.propertiesjvo.properties prefix=/usr/local/skynode/prefix=/usr/local/skynode/ work.dir=workwork.dir=work tmp.dir=tmptmp.dir=tmp deploy.template=etc/deploy-template.wsdddeploy.template=etc/deploy-template.wsdd jdbc.driver.pgsql=org.postgresql.Driverjdbc.driver.pgsql=org.postgresql.Driver jdbc.url.pgsql=jdbc:postgresql://localhost:5432/jdbc.url.pgsql=jdbc:postgresql://localhost:5432/ jdbc.user.pgsql=yshirasajdbc.user.pgsql=yshirasa jdbc.passwd.pgsql=jdbc.passwd.pgsql= metadata.db.name=metadbmetadata.db.name=metadb dbms.metadb=pgsqldbms.metadb=pgsql connection.max=10connection.max=10 query.class.default=jp.ac.nao.jvop3.controller.skynode.QueryMquery.class.default=jp.ac.nao.jvop3.controller.skynode.QueryM

ultiulti logger.properties=etc/log4j.propertieslogger.properties=etc/log4j.properties

Page 11: VO サービスの立ち上げ方 データセンター 白崎裕治. SkyNode toolkit VO Interface に準拠したサービスの立ち上げ は結構難しい。 VO Interface に準拠したサービスの立ち上げ

struts-config.xmlstruts-config.xml

<plug-in className="jp.ac.nao.jvop3.controller.skynode.PlugInForSkyNode"<plug-in className="jp.ac.nao.jvop3.controller.skynode.PlugInForSkyNode">>

<set-property property="jvoProperties"<set-property property="jvoProperties" value="/usr/local/skynode/etc/jvo.properties"/>value="/usr/local/skynode/etc/jvo.properties"/> </plug-in></plug-in>

Page 12: VO サービスの立ち上げ方 データセンター 白崎裕治. SkyNode toolkit VO Interface に準拠したサービスの立ち上げ は結構難しい。 VO Interface に準拠したサービスの立ち上げ

web.xmlweb.xml<servlet><servlet> <servlet-name>AxisServlet</servlet-name><servlet-name>AxisServlet</servlet-name> <display-name>Apache-Axis Servlet</display-name><display-name>Apache-Axis Servlet</display-name> <servlet-class> <servlet-class>

org.apache.axis.transport.http.AxisServletorg.apache.axis.transport.http.AxisServlet </servlet-class></servlet-class> <load-on-startup>1</load-on-startup><load-on-startup>1</load-on-startup></servlet></servlet>……<servlet-mapping><servlet-mapping> <servlet-name>AxisServlet</servlet-name><servlet-name>AxisServlet</servlet-name> <url-pattern><url-pattern>/services/*/services/*</url-pattern></url-pattern></servlet-mapping></servlet-mapping>

Page 13: VO サービスの立ち上げ方 データセンター 白崎裕治. SkyNode toolkit VO Interface に準拠したサービスの立ち上げ は結構難しい。 VO Interface に準拠したサービスの立ち上げ

ディレクトリ構成ディレクトリ構成 Skynode_devSkynode_dev

src src ソースコードソースコード lib lib ライブラリ ライブラリ (jar (jar ファイルファイル )) doc doc ドキュメント ドキュメント (instruction.txt)(instruction.txt) etc etc コンフィギュレーションファイルコンフィギュレーションファイル sample sample サンプルデータ、サンプルサンプルデータ、サンプル SQLSQL 等等 war SkyNode service war filewar SkyNode service war file build*.* build*.* コンパイル用のファイルコンパイル用のファイル init-cshrc init-cshrc 初期設定スクリプト初期設定スクリプト