[Seasar-user:12057] [S2Axis2] Entityを返すサービス作成について教えてください.

Applied_MATSUDA Masaaki [E-MAIL ADDRESS DELETED]
2007年 12月 12日 (水) 16:20:14 JST


TigerCatです.いつもお世話になっております.


現状,問題の状況がよく把握できていないので,質問ベースと
なってしまいますが,お付き合いください.


Seasar2プロダクトをベースとした稼働中のシステムがあるの
ですが,それで動いているDBアクセスがらみのサービスクラス
を新規開発のシステムから利用しようと考えております.

このサービスクラス(仮にHogeService/HogeServiceImpl)は,
DB検索用のメソッドを実行すると,List<HogeEntity> を返す
ことになっています.

ということでこれなる定義でS2Axis2にディプロイしました.
  <component
    name="HogeService"
    class="hoge.service.impl.HogeServiceImpl">
      <meta name="axis-service"/>
  </component>


新規開発のシステムでは,ちょっと省略しますがプロキシの
ところに関してはこんなふうに設定しています.
  <component
    name="HogeService"
    class="hoge.service.HogeService">
      <aspect>ioRemoting</aspect>
  </component>

そして利用している部分は
  List<HogeEntity> hogeEntities
    = hogeService.findFuga();
  for(int index=0;index<hogeEntities.size();index++) {
    HogeEntity hogeEntity
      = (HogeEntity)hogeEntities.get(index);
    String a = hogeEntity.getId().getFugaId();
    String b = hogeEntity.getNote();
    ...
  }
という具合です.

では,この新規開発のほうを動かしますと,ちゃんと既存
システムのhogeServiceのメソッドが動いて,結果を返して
くれているところまで確認できています.
しかし,新規のほうで受け取ったところあたりでException
が発生してしまうのです.

ERROR
org.apache.axis2.rpc.receivers.RPCMessageReceiver -
  Exception occurred while trying to invoke service
    method findFuga
org.apache.axiom.om.OMException:
  java.lang.RuntimeException:
    org.apache.axis2.AxisFault:
      Mapping qname not found for the package:
        hoge.entity

これは一体・・・

S2Axis2のドキュメント
http://s2axis.seasar.org/ja/s2axis2/examples.html
の「引数/戻り値としてBeanを使用する」には
|プリミティブ型(およびそのラッパクラス型)を使用して
|いる場合は、特に何も指定しなくても動作します。
と書いてあるわけですが,このあたりがひっかかります.

HogeEntityは,ManyToOneでマスタと外部キーの関係を
持っているのですが,そういう場合だとHogeEntityの
中には
private Master id;
public Master getId(){
  return this.id;
}
というようなMasterエンティティのクラスもあちこちで
登場しているので,そのあたりが怒られポイントなのか
なぁ,などと悩んでいるところです・・・

そんな感じでして,このようにEntityを返すサービスを
S2Axis2でリモート提供する場合に注意すべき点などが
ありましたら教えてください.

環境:S2Container 2.4.17, S2Axis2 0.3.0


何卒よろしくお願い致します.


p.s.
メソッドをオーバーロードしているサービスクラスは,
WSDLの制限上,利用できないんですね・・・
代替方法とかで,なんとかできたりしませんでしょうか?
既存クラスがそうなっちゃってるのでオーバーロードを
なんとかせいといわれても・・・(汗) ですよね.



Seasar-user メーリングリストの案内