dasのサービスをgoogle app engineに作ってみた。

http://wstestgae.appspot.com/das/dsn

本家にあるチュートリアルを参考に作ってみた。
本家との違いは、cssとかxslとかかまされてるので、まぁdazzleのサイトだなってかんじの見た目になっているところかな。

自分も、googleにdataをいれれるようにしたいなぁ。

以下、作り方

本家のチュートリアルが、
http://www.biojava.org/wiki/Dazzle:deployment_google_app_engine
ここにあったので、そこを参考にしてみた

まずは、レポジトリをチェックアウト(数ヶ所いじるので)

svn checkout http://www.derkholm.net/svn/repos/dazzle/trunk dazzle

1.Google App Engine project from Eclipseでプロジェクトを作る

1.プロジェクト名を決める。
2.パッケージ名を決める
3.Google Web Toolkitのチェックを外す

作ると

サーブレットが1つできている。
このとき、syntax エラーが1つでているようなので、

SuppressWararningの上で、Ctrl+1

change project compilance and JRE 1.5

を選択する。

2.ライブラリの追加

チェックアウトしたプロジェクトの jars/ から

biojava.jar
bytecode.jar
dasmi-model.jar
servlet-api-2.3.jar


war/WEB-INF/lib

を追加する

3. リソースなどをコピー

resourcesとdazzole-webappを適当なディレクトリにコピーして

mkdir tmp
cd tmp
cp -Rp ../resources .
cp -Rp ../dazzle-webapp .
rm -rf `find . | grep \.svn`

ウェブで必要なファイルのコピー

dazzle-webappの中の、WEB-INF以外(*.htmlとか*.xslとか)をコピーすればよいようなので
コピーする

cssのコピー

resources/cssディレクトリごと srcにコピー

dtdをコピー(いらないかも)

srcにorg.biodas.das1というパッケージを作る
そこに、
resources/org/biodas.das1の中のdtdファイルをコピーする

META-INF/servicesをコピー

ハンドラ関係について書いてあるので
resoucres/META-INF/servicesをsrc/META-INFにコピー

ソースのコピー

svnディレクトリの、src/orgをsrcにコピーする

チュートリアルにあるように
Comment: you should have 3 errors due to the use of Context in 'MysqlFeatureCache'. For now, I just commented the 2 lines involved.

たしかにエラーが3つでる

public MysqlFeatureCache()
こんなメソッドなかなので、チュートリアルどおり、2行コメントアウトする。

//Context env = (Context) new InitialContext().lookup("java:comp/env");

//dataSource = (DataSource) env.lookup(DATASOURCE_NAME);
DazzleResponse.java

DazzleResponse.java
の中の

displayXSL=false;

displayXSL=true;

これで、xslが読まれるようになる。

DazzleServlet.java

DazzleServlet.java

private void sendStylesheet(HttpServletRequest req,
			HttpServletResponse resp,
			String command) 

の先頭に、cssを正しく返すように

resp.setContentType("text/css");

を追加、ソースコードはこんな感じに見える。

	private void sendStylesheet(HttpServletRequest req,
			HttpServletResponse resp,
			String command) 
	throws IOException,ServletException{
		resp.setContentType("text/css");
		String cssPath = "css/" + command;
		InputStream is = getClass().getClassLoader().getResourceAsStream(cssPath);

dazzle.cfgの編集(いらないかも)

port番号が8080になっていたので、起動するポートに変更

<string name="mapMaster" value="http://localhost:8888/das/tss/" />

web.xmlに追加

         <servlet>
         <servlet-name>Dazzle</servlet-name>
        <servlet-class>org.biojava.servlets.dazzle.DazzleServlet</servlet-class>
        </servlet>
        <servlet-mapping>
        <servlet-name>Dazzle</servlet-name>
        <url-pattern>/das/*</url-pattern>
        </servlet-mapping>
       <welcome-file-list>
               <welcome-file>das_welcome.html</welcome-file>
       </welcome-file-list>

welcome-file-listは適当に。

runしてうまく動けばOK