[Seasar-user:11136] Re: Sun ONE Application Server 7でのS2Txの利用方法について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 10月 19日 (金) 15:00:16 JST


小林 (koichik) です.

Date:    Fri, 19 Oct 2007 12:32:19 +0900
From:    [E-MAIL ADDRESS DELETED]
To:       [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:11133] Re: Sun ONE Application Server 7でのS2Txの利用方法について

> さて、本題ですが、教えて頂いたことを踏まえ、以下のパターンで検証してみました。
> が、上手くいきませんでした。

そうでしたか...

> ○設定例(1)
> <component name="transactionManager"
>     class="org.seasar.extension.j2ee.JndiTransactionManager">
>   <arg>initialContext</arg>
>   <arg>"java:appserver/TransactionManager"</arg>
> </component>
> 
> ・結果: ×(下記はエラーメッセージの一部)
> org.seasar.framework.exception.InvocationTargetRuntimeException: [ESSR0043]org.seasar.extension.j2ee.JndiTransactionManagerが呼び出した対象が不正です。理由はorg.seasar.framework.exception.NamingRuntimeException: [ESSR0066]JNDIで例外が発生しました。理由はjavax.naming.NameNotFoundException: No object bound to name java:appserver/TransactionManager

ちょっとバージョンが違いますが,Glassfish の
ドキュメントでは,上記の方法で TransactionManager を
取得できることになっています.

https://glassfish.dev.java.net/javaee5/docs/DG/beanr.html

Sun ONE Application Server 7 でもドキュメントに
同等の記載があるんじゃないかと思うので,そちらを
確認していただけないでしょうか.

もし 7 でも上記のように JNDI から取得可能と
記載されていれば,問題は InitialContext かも
しれません.

<component name="initialContext" class="javax.naming.InitialContext">
  <arg>
    #@java.util.Hashtable@{
      "java.naming.factory.initial" : "com.sun.jndi.cosnaming.CNCtxFactory"
    }
  </arg>
</component>

のようにしてみてください.

> ○設定例(2)
> <component name="transactionManager" class="javax.transaction.TransactionManager">
>   @[E-MAIL ADDRESS DELETED]()
> </component>
> 
> ・結果: ×(下記はエラーメッセージの一部)
> org.seasar.framework.container.ClassUnmatchRuntimeException: [ESSR0069]定義されたクラス(javax.transaction.TransactionManager)に実際のクラス(com.sun.jts.jta.TransactionManagerImpl)を適用できません

これちょっと惜しいですね.
TransactionManagerImpl が TransactionManager を
実装していないとは思えないので,おそらく
geronimo-jta_1.1_spec-1.1.jar が WEB-INF/lib に
置いてあると思われます.

Seasar2 のセットアップのドキュメントに不備があり,
J2EE 準拠の AP サーバでも geronimo-jta_1.1_spec-1.1.jar が
必要となっていますが,実際には問題がありました.

geronimo-jta_1.1_spec-1.1.jar は WEB-INF/lib から
削除して,代わりに geronimo-jta_1.1_spec-1.1-tsr.jar を
WEB-INF/lib に置いてください.
geronimo-jta_1.1_spec-1.1-tsr.jar は現在の
Seasar2 の配布ファイルには含まれていませんので,
添付したものをお使いください.

geronimo-jta_1.1_spec-1.1-tsr.jar は,
geronimo-jta_1.1_spec-1.1.jar から
TransactionSynchronizationRegistry 以外を
削除したもので,Seasar2.4.18 からはバンドル
されます.ドキュメントも修正します
# というかコミット済み.



--
<signature>
   <name>Koichi Kobayashi</name>
   <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: geronimo-jta_1.1_spec-1.0-tsr.jar
型:         application/octet-stream
サイズ:     7329 バイト
説明:       無し
URL:        http://ml.seasar.org/archives/seasar-user/attachments/20071019/367b860d/attachment.obj 


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