読者です 読者をやめる 読者になる 読者になる

たぷつきません

おなかがでてきた。もうたぷついてるやん。

RPCサービスの共通ライブラリ化

 GWTはモジュール毎に、JSにコンパイルされるクライアントコード領域を切ることになるが、サーバーサービスが同じ場合、モジュール毎にRPCのコピーを持つのは、なんとも愚策。
 で、これの回避は、別プロジェクトで共通モジュールを作成すれば良い事が分かった。
 web.xmlに書く場合も、url-patternを複数用意すれば良い。

package ....common.client.service;

@RemoteServiceRelativePath("shareService")
public interface ShareService extends RemoteService {
  // ...
}
<servlet>
  <servlet-name>shareService</servlet-name>
  <servlet-class>....common.server.service.ShareServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>shareService</servlet-name>
  <url-pattern>/gadget1/shareService</url-pattern>
  <url-pattern>/gadget2/shareService</url-pattern>
</servlet-mapping>

 ちなみに別のプロジェクトでは、jarを作成する時に、copy-resourcesでクライアントjavaソースコードのtarget/classesへのコピーが必要。なんで別プロジェクトにするかというと、GWTビルドがソースパス上のモジュールだとentry-pointを探そうとして無い!とエラーを吐くため。無いなら放っておきゃ良いのに。