[Seasar-user:4174] [s2axis2] axisサービスへDIできない

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2006年 7月 25日 (火) 12:35:39 JST


関です。

S2Axis2で公開しているWEBサービスへ、自動バインディングを使って
Logicを埋込みたいのですが期待通りにDIされません。

TOMCATの起動時に以下のような警告ログが表示されます

>[WARN] ContainerBackgroundProcessor[StandardEngine[Catalina]] org.seasar.framework.container.assembler.BindingTypeShouldDef
>    org.seasar.remoting.axis2.examples.service.ServiceImplのプロパティ(logic)が見つからないので設定をスキップします

また、JUnit テストを実行した際も以下のようなエラーとなります。

>java.lang.reflect.UndeclaredThrowableException
>	at org.seasar.remoting.axis2.examples.service.Service$$EnhancedByS2AOP$$1700391.echo(Service$$EnhancedByS2AOP$$1700391.java)
>	at org.seasar.remoting.axis2.examples.axis.AxisTest.testEcho(AxisTest.java:35)
>	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> ・・・以下沢山のログ・・・・

もしかして根本的にこういう事は出来ない?等、ご助言を頂ければと思いメール致しました。
(なんとなく、ex02がそういうことを出来ることを表しているのかとも思うのですが理解できません。)
似たようなことをしているサンプルなどご存じでしたらお教え下さい、よろしくお願い致します。

-----------------------------------------------------------------------
■実装したい理由

もともとやりたい事は、S2JSFの構造である action,logic,dao,dto の構成の元、
Daoを含んだLogic部分を他のサーバーにWebサービスとして実装したいと考えています。

そこでAxis2を利用してWebサービスを呼び出すことは出来たのですが
WebサービスにLogicやDaoをDI出来ない問題が出てきました。

そこで、簡単なサンプルを作ってみたところ、それも動作しないため
メールにてお聞きしようという流れになりました。

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

※参考
s2axis2-examples へ追加する形で以下のようにサンプルを作成しました。

-----------------------------------------------------------------------
■ ファイル構成

org/seasar/remoting/axis2/examples/service/deploy.dicon
org/seasar/remoting/axis2/examples/service/Service.java
org/seasar/remoting/axis2/examples/service/ServiceImpl.java
org/seasar/remoting/axis2/examples/logic/Logic.java
org/seasar/remoting/axis2/examples/logic/LogicImpl.java

-----------------------------------------------------------------------
■app.dicon の中身

<components>
    <include path="s2-axis.dicon"/>
    <include path="org/seasar/remoting/axis2/examples/ex01/deploy.dicon"/>
    <include path="org/seasar/remoting/axis2/examples/ex02/deploy.dicon"/>
    <include path="org/seasar/remoting/axis2/examples/ex03/deploy.dicon"/>
    <include path="org/seasar/remoting/axis2/examples/service/deploy.dicon"/>

	<component
		class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister"
	>
		<initMethod name="addClassPattern">
			<arg>"org.seasar.remoting.axis2.examples.logic"</arg>
			<arg>".*LogicImpl"</arg>
		</initMethod>
	</component>

</components>
-----------------------------------------------------------------------
■deploy.dicon の中身

<components>
	<component name="Service" class="org.seasar.remoting.axis2.examples.service.ServiceImpl">
		<meta name="axis-service"/>
	</component>
</components>

-----------------------------------------------------------------------
■ ServiceImpl.javaの中身

package org.seasar.remoting.axis2.examples.service;
import org.seasar.remoting.axis2.examples.logic.Logic;
public class ServiceImpl implements Service {

	private Logic logic;

	public String echo(int id, String message) {

        return logic.runLogic();
    }

	public void setLogic(Logic logic) {
		this.logic = logic;
	}

}





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