2010/04/13
GWT で、複数かつ個別に動作するモジュールを作ったときのメモ
モジュールは gwt.xml、EntryPoint(を実装したクラス)、HTML Page でひとつのセット。
このうち、EntryPoint は複数もつことができる。
gwt.xml に、以下のように複数記述するだけで、HTML Page に対して順番に実行される。
<module> <entry-point class='jp.drillbits.client.Foo' /> <entry-point class='jp.drillbits.client.Bar' /> </module>
それを踏まえて、あえて複数かつ EntryPoint の独立したモジュールを作りたいとき。
普通に考えれば各 gwt.xml にそれぞれの entry-point を書けばいいだけ。
<module> <entry-point class='jp.drillbits.client.Foo' /> </module>
<module> <entry-point class='jp.drillbits.client.Bar' /> </module>
ただし、GWT では gwt.xml のある階層の client パッケージ以外にあるクラスを使うときは、gwt.xml で inherit しないといけない。
上記の Foo モジュール・Bar モジュール は同じ client パッケージ配下にあるからいいのだけど、これが別だった場合…
たとえば jp.drillbits.bar.Bar で jp.drillbits.client パッケージにあるクラスを使いたい場合は以下のようになる。
<module> <entry-point class='jp.drillbits.client.Foo' /> </module>
<module> <inherits name='jp.drillbits.Foo' /> <entry-point class='jp.drillbits.bar.client.Bar' /> </module>
このとき、Bar モジュールを起動させると Foo の EntryPoint も Bar モジュールの HTML Page に対して実行されてしまう。
どうやら、inherits したモジュールの gwt.xml に entry-point があるとそれも実行されてしまうみたいだ。
かといって、Foo モジュールは Foo モジュールで動かしたいので entry-point を消すわけにもいかない…
というわけで、Foo モジュールの EntryPoint を実装したクラス(Foo.java)に以下のように書くことで上記の問題を回避した。
package jp.drillbits.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; public class Foo implements EntryPoint { @Override public void onModuleLoad() { if (!"jp.drillbits.Foo".equals(GWT.getModuleName())) { return; } : : } }
ちなみに、gwt.xml で <module rename-to='foo'> のようにリネームした場合は、if (!"foo".equals(GWT.getModuleName())) です。
この方がコンパイルされたときのフォルダ名もすっきりするし、今の Eclipse Plugin でプロジェクトやモジュール作るとデフォルトでリネームされてる気がする。
- 18 http://drillbits.jp/
- 3 http://d.hatena.ne.jp/keyword/GWT
- 3 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGLL_jaJP364JP365&q=gwt.codesvr
- 2 http://bit.ly/dxMcZm
- 2 http://search.minakoe.jp/rsss/rsss.asp?ics=euc&qry=java&multi=1
- 2 http://search.yahoo.co.jp/search?p=JavaScript++??????&ei=UTF-8&pstart=1&fr=top_ga1_sa&b=11
- 2 http://tweetbuzz.jp/entry/4054886/d.hatena.ne.jp/drillbits/20091217/gxt
- 2 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&q=ext+gwt+eclipse&lr=&aq=0&aqi=g1&aql=&oq=ext+GWT+e&gs_rfai=
- 2 http://www.google.co.jp/search?hl=ja&q=javascript+timezone&lr=lang_ja&aq=f&aqi=&aql=&oq=&gs_rfai=
- 2 http://www.google.co.jp/search?hl=ja&source=hp&q=gwt+entrypoint+茲????&lr=&aq=f&aqi=&aql=&oq=&gs_rfai=
