[Seasar-user:14072] Re: [s2axis2]戻り値が enum クラスのサービスについて

Takanori Suzuki [E-MAIL ADDRESS DELETED]
2008年 5月 3日 (土) 16:51:18 JST


たかのりです。

2008/05/01 15:25 Chihiro Ueta <[E-MAIL ADDRESS DELETED]>:
> お世話になります。植田と申します。
>
> S2Axis2Examples 0.5.0を参考にさせて頂き、enum クラスを返すサービスをデプ
> ロイしてクライアントプログラムから実行すると、下のような例外が発生しました。
>
> org.apache.axis2.AxisFault: java.lang.RuntimeException:
> org.apache.axis2.AxisFault: Mapping qname not fond for the package:
> org.apache.catalina.loader
>
> どのような原因が考えられますでしょうか?

Axis2 1.3(S2Axis2 0.5.0で使用) では、enum型は未サポートです。

enum型を利用する場合は、
サービスの戻り値を、enum型ではなくString型とし、
クライアントで、enum型に変換してやる必要があります。

以下のような実装になります。
------------------------------------
【サービスのインタフェース】
------------------------------------
public interface Abc {

    public enum Type {
        A,B
    }

    public Type getType();
}
------------------------------------
【サービスの実装クラス】
------------------------------------
public class AbcImpl implements Abc {

    public String getType() {
        return Type.A.toString();
    }
}
------------------------------------
【クライアントのクラス】
------------------------------------

    JDK15Service service;

    ・・・

    String typeValue = service.getType();
    Type type = Type.valueOf(colorTypeValue);


-- 
====
Takanori Suzuki


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