[Seasar-user:17324] [S2RMI][S2BlazeDS]S2BlazeDSのServiceクラスをS2RMIで呼び出せない

Chihiro Fukiage [E-MAIL ADDRESS DELETED]
2009年 4月 27日 (月) 15:57:38 JST


はじめまして。
fukiと申します。

S2BlazeDSのサーバ側のサンプルをベースにHelloServiceクラスを作成して、
S2RMIを使用して呼び出そうとしています。
しかし、S2RMIのクライアント側の初期化の際にエラーが発生してしまい、
Serviceクラスをうまく呼び出せず、困っています。
良い知恵をご教示頂けないでしょうか。

# はじめて質問しますので、情報提示の加減が分かりません。
# 情報が不足していましたら、ご指摘お願いします。


【現状】
S2RMIのクライアント実行時に、

        SingletonS2ContainerFactory.init();

にて、以下の例外が発生しています。
直接的には、ServletContextが見つからない、とのことです。
まだ、HelloServlceクラスのコールに行き着く前の段階である認識です。


Exception in thread "main"
org.seasar.framework.container.ComponentNotFoundRuntimeException:
[ESSR0046]コンポーネント(interface javax.servlet.ServletContext)が見つか
りません
	at
org.seasar.framework.container.impl.S2ContainerBehavior$DefaultProvider.acquireFromGetComponentDef(S2ContainerBehavior.java:165)
	at
org.seasar.framework.container.impl.S2ContainerBehavior$DefaultProvider.acquireFromGetComponent(S2ContainerBehavior.java:158)
	at
org.seasar.framework.container.impl.S2ContainerBehavior.acquireFromGetComponent(S2ContainerBehavior.java:62)
	at
org.seasar.framework.container.impl.S2ContainerImpl.getComponent(S2ContainerImpl.java:124)
	at
org.seasar.framework.container.SingletonS2Container.getComponent(SingletonS2Container.java:43)
	at
org.seasar.struts.util.ServletContextUtil.getServletContext(ServletContextUtil.java:39)
	at
org.seasar.struts.util.S2ModuleConfigUtil.getModuleConfig(S2ModuleConfigUtil.java:38)
	at
org.seasar.struts.customizer.ActionCustomizer.customize(ActionCustomizer.java:70)
	at
org.seasar.framework.container.customizer.CustomizerChain.doCustomize(CustomizerChain.java:140)
	at
org.seasar.framework.container.customizer.AbstractCustomizer.customize(AbstractCustomizer.java:145)
	at
org.seasar.framework.container.creator.ComponentCreatorImpl.customize(ComponentCreatorImpl.java:309)
	at
org.seasar.framework.container.creator.ComponentCreatorImpl.createComponentDef(ComponentCreatorImpl.java:269)
	at
org.seasar.framework.container.cooldeploy.CoolComponentAutoRegister.createComponentDef(CoolComponentAutoRegister.java:253)
	at
org.seasar.framework.container.cooldeploy.CoolComponentAutoRegister.processClass(CoolComponentAutoRegister.java:232)
	at
org.seasar.framework.util.ClassTraversal.traverseFileSystem(ClassTraversal.java:121)
	at
org.seasar.framework.util.ClassTraversal.traverseFileSystem(ClassTraversal.java:115)
	at org.seasar.framework.util.ClassTraversal.forEach(ClassTraversal.java:73)
	at
org.seasar.framework.container.cooldeploy.CoolComponentAutoRegister$FileSystemStrategy.registerAll(CoolComponentAutoRegister.java:286)
	at
org.seasar.framework.container.cooldeploy.CoolComponentAutoRegister.registerAll(CoolComponentAutoRegister.java:180)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.seasar.framework.util.MethodUtil.invoke(MethodUtil.java:93)
	at
org.seasar.framework.container.assembler.AbstractMethodAssembler.invoke(AbstractMethodAssembler.java:94)
	at
org.seasar.framework.container.assembler.DefaultInitMethodAssembler.assemble(DefaultInitMethodAssembler.java:49)
	at
org.seasar.framework.container.deployer.SingletonComponentDeployer.assemble(SingletonComponentDeployer.java:69)
	at
org.seasar.framework.container.deployer.SingletonComponentDeployer.deploy(SingletonComponentDeployer.java:48)
	at
org.seasar.framework.container.deployer.SingletonComponentDeployer.init(SingletonComponentDeployer.java:76)
	at
org.seasar.framework.container.impl.ComponentDefImpl.init(ComponentDefImpl.java:236)
	at
org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:563)
	at
org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:560)
	at
org.seasar.framework.container.factory.SingletonS2ContainerFactory.init(SingletonS2ContainerFactory.java:150)
	at examples.s2rmi.client.S2RmiHelloClient.main(S2RmiHelloClient.java:24)



なお、S2RMIのクライアントにて、S2RMIのサーバ側のServiceクラスは呼び出せ
ます。
turnkey起動時にRMIサーバの起動にも成功しているログが出ています。
また、同HelloServiceクラスを、Flexからの呼び出しは正常に行なうことが出来
ます。


<サーバ側>
flex.samples.service
HelloService.java(新規)
⇒サーバ側にあるinterfaceクラス

flex.samples.service.impl
HelloServiceImpl.java(新規)
⇒HelloServiceクラスの実装部分

flex.samples.rmi.server
S2RmiServerMain.java(新規)
⇒RMIサーバ

<クライアント側>
s2-communication-clientをベースに作成。
※基本的にはdiconファイルのみ変更した程度。



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