[Seasar-user:18403] Re: [S2Axis2] Teeda+S2DaoのWebアプリを利用するクライアント

fukuyama [E-MAIL ADDRESS DELETED]
2009年 8月 30日 (日) 23:51:45 JST


福山です。
返信が遅くなってしまい申し訳ありません。


>質問がアバウトなので答えるのが難しいのですが,
>Web サービスクライアントを作成するなら Teeda も
>S2Dao も関係ないです.

>Web サービスとして公開するサービスクラスを元に,
>Java クライアントならサービスのインタフェース,
>非 Java クライアントなら WSDL 経由で,
>クライアントを作成すればよいかと.


的を射ない質問ですいません・・・。
ちょっと質問を変えます。

S2axis2-examplesを参考にして下記のようなS2Daoのサービスを作り、
テストクライアントを作成して実行しました。
で、一番下に書いたのですが、HogeDaoTest.java15行目の「service.getAll();」の
ところで「サービスの呼び出しに失敗しました」というエラーが出ます。
Tomcatにデプロイしたときにはエラーは出ていないですし、
http://localhost:8080/HOGE/services/HogeDao?wsdlも表示されます。
これはどこを修正すればよいのでしょうか?(それとも根本的に違うのか・・・
初歩的な質問ですみませんがよろしくお願いします。


----------------------------------------------------------------------------
-
〜サーバー側〜
・Hoge.java

public class Hoge{

  //マッピングするテーブル名(クラス名=テーブル名の場合は省略可)
    public static final String TABLE = "HogeTable";
    //マッピングするカラム名(プロパティ名=カラム名の場合は省略可)
    public static final String id_COLUMN = "id";

    private int id;
    private double data;

    public Hoge() {
    }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }

    public double getData () {
        return data;
    }
    public void setData (double data) {
        this.data =data;
    }
}
----------------------------------------------------------------------------
-

・HogeDao.java

public interface HogeDao {

    //関連付けるEntityの指定
    public Class BEAN =Hoge.class;

    //「insert*,add*,create*」メソッドはINSERT
    public int insert(Hoge hoge);

    //「update*,modify*,store*」メソッドはUPDATE
    public int update(Hoge hoge);

    //「delete*,remove*」メソッドはDELETE
    public int delete(Hoge hoge);

    //戻り値「List」型はSELECT
    public List getAll();
}
----------------------------------------------------------------------------
-
・s2axis2Deploy.dicon

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
	"http://www.seasar.org/dtd/components24.dtd">
<components>
    <component name="HogeDao" class="HOGE.hoge ">
        <meta name="axis-service"/>
    </component>
</components>





----------------------------------------------------------------------------
-
----------------------------------------------------------------------------
-





〜クライアント側〜
・HogeDaoTest.java

public class HogeDaoTest {
	private HogeDao service;

    public void execute() {
        List list = service.getAll();
        System.out.println(list);
    }

    public void setHoge (HogeDao hoge) {
        this.service = hoge;
    }

    public static void main(String[] args) {
        SingletonS2ContainerFactory.setConfigPath("HOGE/HogeDaoTest.dicon");
        SingletonS2ContainerFactory.init();

        S2Container container = SingletonS2ContainerFactory.getContainer();
        HogeDao hoge = (HogeDao)container.getComponent(HogeDao.class);

        HogeDaoTest client = new HogeDaoTest();
        client.setEcho(hoge);
        client.execute();
    }
}
----------------------------------------------------------------------------
-

・s2axis2-client.dicon

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
    "http://www.seasar.org/dtd/components21.dtd">
<components>

    <include path="s2axis2.dicon" />

    <!--
        Axis2のプロパティをカスタマイズしたい場合は、以下の定義を変更してく
ださい。

          AXIS2_REPO : サービスを配置するリポジトリのパス
          AXIS2_CONF : Axis2のデフォルト定義ファイルのパス
    -->
    <!--
    <component name="properties" class="java.util.Properties"
autoBinding="none">
        <initMethod name="setProperty">
            <arg>@[E-MAIL ADDRESS DELETED]</arg>
            <arg>"src/main/webapp/WEB-INF"</arg>
        </initMethod>
        <initMethod name="setProperty">
            <arg>@[E-MAIL ADDRESS DELETED]</arg>
            <arg>"src/main/webapp/WEB-INF/conf/axis2.xml"</arg>
        </initMethod>
    </component>
    -->

    <component name="ioRemoting"

class="org.seasar.remoting.common.interceptor.RemotingInterceptor">
        <property name="connector">ioConnector</property>
    </component>

    <component name="ioConnector"

class="org.seasar.remoting.axis2.connector.AxisInOutConnector">
        <property name="baseURL">baseURL</property>
        <property name="timeout">60000</property>
    </component>

    <component name="oneWayRemoting"

class="org.seasar.remoting.common.interceptor.RemotingInterceptor">
        <property name="connector">oneWayConnector</property>
    </component>

    <component name="oneWayConnector"

class="org.seasar.remoting.axis2.connector.AxisOnewayConnector">
        <property name="baseURL">baseURL</property>
    </component>

    <component name="baseURL" class="java.net.URL" autoBinding="none">
        <arg>"http://localhost:8080/HOGE/services/"</arg>
    </component>

</components>
----------------------------------------------------------------------------
-

・HogeDaoTest.dicon

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
	"http://www.seasar.org/dtd/components21.dtd">
<components>
	<include path="s2axis2-client.dicon"/>

    <component class="HOGE.HogeDao">
		<aspect>ioRemoting</aspect>
	</component>
</components>
----------------------------------------------------------------------------
-





2009-08-30 23:03:09,309 [main] DEBUG org.seasar.framework.env.Env - 環境変数
#Envにファイル(env.txt)から値(ct)が設定されました
2009-08-30 23:03:09,372 [main] DEBUG org.seasar.framework.container.factory.
S2ContainerFactory - S2Containerを作成します。path=hotdeploy.dicon
2009-08-30 23:03:09,372 [main] DEBUG org.seasar.framework.container.factory.
S2ContainerFactory - S2Containerを作成します。path=convention.dicon
2009-08-30 23:03:09,434 [main] DEBUG org.seasar.framework.container.factory.
S2ContainerFactory - S2Containerを作成しました。path=convention.dicon
2009-08-30 23:03:09,434 [main] DEBUG org.seasar.framework.container.factory.
S2ContainerFactory - S2Containerを作成します。path=customizer.dicon
2009-08-30 23:03:09,434 [main] DEBUG org.seasar.framework.container.factory.
S2ContainerFactory - S2Containerを作成します。path=default-customizer.dicon
2009-08-30 23:03:09,450 [main] DEBUG org.seasar.framework.container.factory.
S2ContainerFactory - S2Containerを作成します。path=std-customizer.dicon
2009-08-30 23:03:09,466 [main] DEBUG org.seasar.framework.container.factory.
S2ContainerFactory - S2Containerを作成しました。path=std-customizer.dicon
2009-08-30 23:03:09,481 [main] DEBUG org.seasar.framework.container.factory.
S2ContainerFactory - S2Containerを作成しました。
path=default-customizer.dicon
2009-08-30 23:03:09,481 [main] DEBUG org.seasar.framework.container.factory.
S2ContainerFactory - S2Containerを作成しました。path=customizer.dicon
2009-08-30 23:03:09,481 [main] DEBUG org.seasar.framework.container.factory.
S2ContainerFactory - S2Containerを作成します。path=creator.dicon
2009-08-30 23:03:09,497 [main] DEBUG org.seasar.framework.container.factory.
S2ContainerFactory - S2Containerを作成しました。path=creator.dicon
2009-08-30 23:03:09,497 [main] DEBUG org.seasar.framework.container.factory.
S2ContainerFactory - S2Containerを作成しました。path=hotdeploy.dicon
2009-08-30 23:03:09,528 [main] DEBUG org.seasar.framework.container.factory.
S2ContainerFactory - S2Containerを作成します。path=HOGE/HogeDaoTest.dicon
2009-08-30 23:03:09,528 [main] DEBUG org.seasar.framework.container.factory.
S2ContainerFactory - S2Containerを作成します。path=s2axis2-client.dicon
2009-08-30 23:03:09,528 [main] DEBUG org.seasar.framework.container.factory.
S2ContainerFactory - S2Containerを作成します。path=s2axis2.dicon
2009-08-30 23:03:09,575 [main] DEBUG org.seasar.framework.container.factory.
S2ContainerFactory - S2Containerを作成しました。path=s2axis2.dicon
2009-08-30 23:03:09,591 [main] DEBUG org.seasar.framework.container.factory.
S2ContainerFactory - S2Containerを作成しました。path=s2axis2-client.dicon
2009-08-30 23:03:09,591 [main] DEBUG org.seasar.framework.container.factory.
S2ContainerFactory - S2Containerを作成しました。path= HOGE/HogeDaoTest.dicon
2009-08-30 23:03:09,591 [main] WARN
org.seasar.framework.container.assembler.BindingTypeShouldDef -
org.seasar.remoting.axis2.deployer.AxisDeployerのプロパティ(servletContext)
が見つからないので設定をスキップします
2009-08-30 23:03:09,684 [main] INFO  org.seasar.framework.container.factory.
SingletonS2ContainerFactory - Running on [ENV]ct, [DEPLOY MODE]Hot Deploy
Exception in thread "main"
org.seasar.remoting.axis2.client.S2AxisClientException: [EAXS1002]サービスの
呼び出しに失敗しました : Address:
http://localhost:8080/HOGE/services/HogeDao
	at
org.seasar.remoting.axis2.connector.AbstractRPCConnector.invoke(AbstractRPCC
onnector.java:133)
	at
org.seasar.remoting.common.connector.impl.TargetSpecificURLBasedConnector.in
voke(TargetSpecificURLBasedConnector.java:105)
	at
org.seasar.remoting.common.interceptor.RemotingInterceptor.invoke(RemotingIn
terceptor.java:90)
	at HOGE.HogeDao$$EnhancedByS2AOP$$c8376b$$MethodInvocation$$getAll2.
proceed(MethodInvocationClassGenerator.java)
	at
HOGE.HogeDao$$EnhancedByS2AOP$$c8376b.getAll(HogeDao$$EnhancedByS2AOP$$c8376
b.java)
	at HOGE.HogeDaoTest.execute(HogeDaoTest.java:15)
	at HOGE.HogeDaoTest.main(HogeDaoTest.java:32)
Caused by: org.apache.axis2.AxisFault: The endpoint reference (EPR) for the
Operation not found is http://localhost:8080/HOGE/HogeDao and the WSA Action
= urn:getAll
	at
org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:486
)
	at
org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAx
isOperation.java:343)
	at
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperatio
n.java:389)
	at
org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisO
peration.java:211)
	at
org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
	at
org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:528)
	at
org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:508)
	at
org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient
.java:101)
	at
org.seasar.remoting.axis2.connector.AxisInOutConnector.execute(AxisInOutConn
ector.java:55)
	at
org.seasar.remoting.axis2.connector.AbstractRPCConnector.invoke(AbstractRPCC
onnector.java:131)
	... 6 more


























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