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