View
228
Download
3
Embed Size (px)
Citation preview
VOVO サービスの立ち上げ方サービスの立ち上げ方
データセンター 白崎裕治
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/
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
主要な 主要な 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
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@"/>
......
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 のバージョンアップしやすのバージョンアップしやすい。い。
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;
}}
QuerySkyNodeQuerySkyNode
ADQL ADQL を を Backend DBMS Backend DBMS が理解できる が理解できる SSQL QL に変換し検索を実行するクラス に変換し検索を実行するクラス (abstr(abstract)act) 。。
これを継承した これを継承した QuerySingle (QuerySingle ( 検索テーブ検索テーブルひとつの場合ルひとつの場合 ), QueryMulti (), QueryMulti ( クロスマックロスマッチ検索用チ検索用 ) ) が実際に使われる。が実際に使われる。
etc/jvo.properties etc/jvo.properties ファイルで指定できる。ファイルで指定できる。
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
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
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>
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>
ディレクトリ構成ディレクトリ構成 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 初期設定スクリプト初期設定スクリプト