[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 メーリングリストの案内