[Seasar-user:11730] Re: 【S2RMI】 Implファイルがあるとリモート実行されない

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2007年 11月 20日 (火) 18:53:58 JST


関修康です。

> > > ■1.対応不要な箇所
> > > # [Seasar-user:11692] の対応は不要です.
> > は私が独自の RemotingInterceptorCustomizer を作成した設定の事でしょうか?
> はい.

了解です。

> > ■2.[customizer.dicon]について
> > [customizer.dicon]の内容は以下の3エレメントだけで動作しますか?
> はい.
> こちらでは全く同じで動いています.

こちらも了解しました。

> > ■3."remotingInterceptor"について
> 質問の意味がよく分かりませんが,ここでは
> remotingInterceptor という名前のインターセプタを
> 設定するカスタマイザを追加しています.

カスタマイザの登録方法は addCustomizer だけなのかと考えていました。
よく見たら addAspectCustomizer と異なったメソッドでしたね。
その場合はコンポーネント名(?)の文字列を渡すことが可能と言うことですね。

> インクルードされている dicon に設定されたコンポーネントより,
> インクルードしている dicon に設定されたコンポーネントの方が
> 優先的に使用されます.

なるほど、分かりました。

> > また、そもそも "remotingInterceptor" はどこでコンポーネント化されているの
> でしょうか?
> > [s2rmi-customizer.dicon]の中ではしていないように見えるのです・・・。
> SMART deploy によって自動登録されます.
> そのためには convention.dicon に独自 RemotingInterceptor の
> ルートパッケージが登録されている必要があります.

すみません、よく考えたら[creator.dicon]にInterceptorCreatorの定義がありました。
なぜかrmi用に特別に設定しなければと考えていました。
しかも、問題はコンポーネント化ではなく、アスペクトされないところが問題のようです。

> convention.dicon が怪しいように思います.

[convention.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 xmlns:xi="http://www.w3.org/2001/XInclude">
 <component class="org.seasar.framework.convention.impl.NamingConventionImpl">
  <initMethod name="addRootPackageName">
   <arg>"examples.common"</arg>
  </initMethod>
  <initMethod name="addRootPackageName">
   <arg>"examples.rmi"</arg>
  </initMethod>
  <initMethod name="addRootPackageName">
   <arg>"org.seasar.remoting.common"</arg>
  </initMethod>
  <initMethod name="addRootPackageName">
   <arg>"org.seasar.remoting.rmi"</arg>
  </initMethod>
	</component>
</components>

> [Seasar-user:11690] の時点では独自 RemotingInterceptor が
> 使われようとしていたので,その後に何か変更したのでは
> ないでしょうか.

この時のエラーは、コンポーネント化する際のエラーであり、
Aspectされて実行された時に発生するたぐいの物では無いような認識でいます。

現状も、
<initMethod name="addRootPackageName">
  <arg>"examples.common"</arg>
</initMethod>
※ 小林さんに合わせて commons → common に変更しました
の部分をコメントアウトすると

2007-11-20 17:27:52.095 [DEBUG] main org.seasar.framework.container.util.S2ContainerUtil
    クラス(examples.common.interceptor.RemotingInterceptor[remotingInterceptor])のコンポーネント定義を登録します
org.seasar.framework.exception.OgnlRuntimeException: [ESSR0073]OGNLで例外が発生しました。理由は[ESSR0080]クラス(examples.common.interceptor.RemotingInterceptor)のプロパティ(connector)の自動設定に失敗しました
	at org.seasar.framework.util.OgnlUtil.getValue(OgnlUtil.java:103)
	at org.seasar.framework.container.ognl.OgnlExpression.evaluate(OgnlExpression.java:64)

となり、通信時と言うよりは、初期化段階でのエラーに見えます。

なぜAspectされないのかはTiger等のソースをブレークポイントで進めながら
見ておりますが当たりが付いていない状態です。

また、何かお気づきの点がございましたらよろしくお願い致します。





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