サーバとクライアント

S2RMIを使うと、クライアントはServiceのインタフェースのメソッドを呼ぶだけでOKなので、クライアント側にServiceのインタフェースとDtoのみを含ませたいんだけど。あとExceptionもかな。

この3つはサーバ側でも使うので、どう共有するかで悩み中。

  1. svn:externalsを使う。
  2. Maven2のマルチプロジェクトを使う

昨日はsvn:externalsを使ってやってみた。まずはserviceパッケージを指定して、チェックアウトしたらですな、その下のservice/implも取得しちゃうんですな〜そりゃそうか。

それだと困るのよ、実装クラスが依存してるクラスも持って来ないとコンパイル通らないし。サブディレクトリはexternals除外って方法を探したもののどうやら出来ないみたいだ。

それと、trunkでの開発中はexternalsも便利だなあと思うんだけど、タグ付けし始めると管理が大変そうで、にんともかんとも。

で、マルチプロジェクトとなると、構成を下記みたくする事になる。

  • 共通プロジェクト(serviceインタフェース、Dtoなどのみ入ってる)
  • サーバー側プロジェクト
  • クライアント側プロジェクト

これだとビルドは行けるんだけど、GUIを作る上でNetBeans使いたいなあとなるとどうにもこうにも面倒臭い。

Eclipseのm2pluginは、Eclipseの機能の上にM2サポート機能が乗っかる形なんだけど、NetBeansMaven2モジュールだともうまったく別ものになっちゃって、MainクラスをJavaアプリケーションとして実行とかまで出来なくなっちゃったり。mavenプラグインNetBeansのfreeformプロジェクト作るのがあったんだけど、それも同じ。NetBeansのうまみがごっそり欠落する。

そうなると、NetBeansGUIポトペタツールと割り切って、動作確認をサクっとやったりするのはEclipse側でやる、と云う使い方になりそう。S2Golfの作者さんもその方針みたいですね。

てな訳でMavenマルチプロジェクト形式を今日はためしてみる。

これはこれでまた、Eclipse上で別プロジェクト扱いにするか、seasar2のframeworkとextensionみたいな構成にするかで悩み中。