1 2 Previous Next 16 Replies Latest reply on May 15, 2012 8:56 PM by takuyaaa

    WebLogic 11gからJBossAS7.1.0Finalへの移行で生じる、ドロップダウン項目の並び順について

    takuyaaa

      いつもお世話になっております。

      質問させていただきます。

       

      現在、WebLogic 11gからJBossAS7.1.0Finalへの移行を行っているのですが、
      JBossAS7.1.0Finalに移行したことで、画面のドロップダウン項目の並び順が
      変わってしまいました。


       【WebLogic 11g時】   :コード値の昇順
       【JBossAS7.1.0Final 時】:ランダム(JBossAS7.1.0Finalを再起動する度に並び順が変わる。)

       

      呼び出し側(JSP)では、ドロップダウン項目をArrayListで扱っており、単純にIteratorで
      取得した順にドロップダウンの選択肢に設定しているのですが、呼び出し側で取得した時点
      で既にArrayListの中身の順が「コード値の昇順」となっておりません。

       

      javaプログラムを確認したところ、EJBオブジェクトの中で、DB検索し、一つずつ取得し、
      ドロップダウンの選択肢をArrayListにaddしているようでした。

       

      そこで、WebLogic 11gとJBossAS7.1.0Finalの、ArrayListの仕様の差異が影響しているの
      ではないかと考えております。
      (「WebLogic 11gではArrayListはaddした順序でiterator取得することができるが、
       JBossAS7.1.0Finalではaddした順序は保持しない」などといった仕様の差異。)

      心当たりのある方いらっしゃいましたら、ご教示いただけたらと思います。

      よろしくお願い致します。

        • 1. Re: WebLogic 11gからJBossAS7.1.0Finalへの移行で生じる、ドロップダウン項目の並び順について
          t-minami

          nakamura takuyaさんはじめまして。

           

          そこで、WebLogic 11gとJBossAS7.1.0Finalの、ArrayListの仕様の差異が影響しているの
          ではないかと考えております。
          (「WebLogic 11gではArrayListはaddした順序でiterator取得することができるが、
           JBossAS7.1.0Finalではaddした順序は保持しない」などといった仕様の差異。)

          心当たりのある方いらっしゃいましたら、ご教示いただけたらと思います。

          よろしくお願い致します。

           

          まずArrayListについてですが、WebLogicやJBoss固有のクラスではなく、通常のJavaAPIのArrayList(java.util.ArrayList)をお使いなのであれば、

          iterator()メソッドの実行結果として順序が変わる、ということは考えにくいと思います。

           

          http://java.sun.com/javase/ja/6/docs/ja/api/java/util/AbstractList.html#iterator()

          上記のjavadocにも「このリスト内の要素を適切な順序で繰り返し処理する反復子を返します。この実装は、反復子インタフェースの簡単な実装を返します。

          この処理では、基になるリストの size()、get(int)、および remove(int) といった各メソッドを利用します。」

          と記載されています。

           

          今回の場合、

           

          javaプログラムを確認したところ、EJBオブジェクトの中で、DB検索し、一つずつ取得し、
          ドロップダウンの選択肢をArrayListにaddしているようでした。

           

          上記DBから取得する箇所で、ArrayListにaddする時点で既に順序が変わっている、というケースが可能性として最も高いと思います。

           

          EJBからどのようにDB検索を行っているかはご質問内容からは読み取れませんでしたが、まずはArrayListにaddしている値をデバッガやログ等で

          表示するなどして、正しい順序で取得できているかどうかを確認してみてはいかがでしょうか。

           

          また、EJBからSQLを発行しているのであれば、そのSQLを直接DBに発行し、結果が常にコード値の昇順で取得できるかを

          確認してみるのも良いと思います。

          • 2. Re: WebLogic 11gからJBossAS7.1.0Finalへの移行で生じる、ドロップダウン項目の並び順について
            takuyaaa

            Minami Takayuki様

             

            返信ありがとうございます。

             

             

            EJBからどのようにDB検索を行っているかはご質問内容からは読み取れませんでしたが、まずはArrayListにaddしている値をデバッガやログ等で

            表示するなどして、正しい順序で取得できているかどうかを確認してみてはいかがでしょうか。

             

            また、EJBからSQLを発行しているのであれば、そのSQLを直接DBに発行し、結果が常にコード値の昇順で取得できるかを

            確認してみるのも良いと思います。

             

            上記の方法で早速検証してみたいと思います。

            ありがとうございます。

             

            結果がわかり次第、当ディスカッションに再度報告させていただきます。

            • 3. Re: WebLogic 11gからJBossAS7.1.0Finalへの移行で生じる、ドロップダウン項目の並び順について
              takuyaaa

              上記の件を調査し、新たに詳細が判明致しましたので、現状を整理し追記いたします。

               

               

               

               

              【事象】
              EJBオブジェクトの処理にてエンティティーBeanでデータベースから検索した内容を、
              ArrayListに詰め込んで呼び出し側のBeanに返却する時点で、戻されたArrayListの
              並び順が、エンティティーBeanが追加した順ではなく、ランダムな並び順になって
              返却される。
              返却された値を最終的にそのままJSPのドロップダウンリストに表示している為、
              その表示が異常な並び順になってしまう。


              処理の流れについては、以下の通りとなります。

               

               

               

              Step1.JSP側からEJBを呼び出し、その中でリスト取得用Bean.javaからエンティティーBean.javaの検索メソッドを呼び出す。

               

               

               

              Step2.Step1により、エンティティーBean.java内で、データベースに対して検索処理を行う。

               

               

               

              Step3.データベースの検索結果を件数分繰り返し、取得した値をArrayListに対して順にaddしていく。

               

               

               

              Step4.Step3で取得したArrayListを呼び出し元のリスト取得用Beanに返却する。

               

               

               

              Step5.返却された中身を、JSP側で表示させる。

               

               

              上記の通りの仕組みのプログラムを実行したところ、Step4で取得できたArrayListの中身を確認すると、Step3でaddした並び順と
              一致せず、ランダムな並びでセットされて結果が返却されました。

              検証のため、Step3でaddしたArrayListの内容をデバッグ出力させて中身を確認すると、addした順に正しく並んでいました。
              Step4でも同様にデバッグ出力させて中身を確認すると、順序がランダムになっていました。

              結論的に、リスト取得用Bean.javaがエンティティーBean.javaから返却値を受け取る際に、並び順が異常になっているのではないか
              と考えています。

               

              このような事象は考えうるでしょうか。基本的に、ArrayListは、addした順序は保持されるはずと考えておりますが・・。
              また、ご存知であれば、原因及び対策を教えていただけないでしょうか。
              宜しくお願いします。

               

               

               

               

              補足事項として、

              返却に使ったリストクラスでArrayList以外でも試してみましたが、結果は変わりませんでした。

               

               

              LinkedList
              CopyOnWriteArrayList
              Collections.synchronizedList(new ArrayList());

              • 4. Re: WebLogic 11gからJBossAS7.1.0Finalへの移行で生じる、ドロップダウン項目の並び順について
                t-minami

                nakamura takuyaさん、こんにちは。

                 

                 

                このような事象は考えうるでしょうか。基本的に、ArrayListは、addした順序は保持されるはずと考えておりますが・・。
                また、ご存知であれば、原因及び対策を教えていただけないでしょうか。
                宜しくお願いします。

                 

                基本的に、ArrayListはaddした順序を保持するはずです。

                残念ながら、私自身はこのようなケースに遭遇した経験はなく、申し訳ないのですが

                現状の情報だけでは直接的な回答は差し上げられません。

                (どなたかご存知の方いらっしゃいましたら、ご助力いただけますと幸いです)

                 

                疑いのあるポイントとしては、

                 

                1. リスト取得用Bean.javaとエンティティーBean.javaでリモートの通信を行う際のシリアライズ時に、

                何かしらArrayListの順序に影響を与えるような動作が行われている

                2. エンティティーBean.java内のArrayListの保持の仕方に問題がある

                 

                などが考えられます。

                 

                当方にて、お話から分かる範囲で実装したサンプルにて試験をしましたが、

                servlet <-> session bean <-> entity beanで問題なくArrayListの受け渡しができているようです。

                (サンプルはソースコード含めて添付しましたので、可能であればそちらの環境でも動作をご確認下さい)

                 

                あくまでサンプルですので、Entity Beanの実装方法がいい加減である点はご容赦下さい。

                実行は、ブラウザなどからhttp://localhost:8080/listtest_war/TestArrayListServletにリクエストを投げるだけです。

                標準出力にArrayListに詰めた要素を出力します。

                 

                動作させた端末はWindowsXP SP3環境です。

                その他の環境情報と実行時のログは添付ファイル内にあります。

                 

                このような簡単なサンプルを足がかりとして、もう少し事象が発生するケースを切り分けていただければ

                何か分かるかも知れません。

                • 5. Re: WebLogic 11gからJBossAS7.1.0Finalへの移行で生じる、ドロップダウン項目の並び順について
                  takuyaaa

                  Minami Takayuki様

                   

                  返信ありがとうございます。


                  また、サンプルまで添付いただき、まことに恐縮です。

                   

                  早速なのですが、ご報告としまして
                  サンプルを動作させてみて、確かに、並び順は変わることなく処理されるということを確認することができました。

                  移行を行おうとしている資産の並び順がおかしくなる現象については、色々ソールから調査をしておりますが、
                  具体的にどのあたりが問題の原因となっているのかの個所について、さらに調べを進めています。

                   

                  1つ分かったことがありまして、

                  前回お伝えした現象の生じるまでのステップで、

                   

                  |Step4.Step3で取得したArrayListを呼び出し元のリスト取得用Beanに返却する。

                   

                  この時点でEntityBean側で、getClass().getName()させてみると、java.util.ArrayListと表示されます。
                  (当然ArrayListを配列としているため)

                  が、SessionBeanに、その値が戻った時点で、再度getClass().getName()させてみると、なんと、型が
                  java.util.HashSetと表示されることが分かりました。

                   

                  御存じの通り、HashSetクラスは、順序が維持されない種類のクラスになるので、順序が狂うという理屈は
                  確かに納得できますが、元々ArrayListで作られた配列が、いきなりHashSetに変わってしまうという事象
                  というのが生じるものなのかは、全く不明です。

                   

                  頂いたサンプルも、試してみました。

                  EntityBeanで、ArrayListを作っているところをHashSetに変えたところ、同じような動きをしました。
                  が、これは、HashSetがそういうクラスなので、発生する現象は、仕様通りといえますので、当事象とは別の話
                  と考えます。

                   

                  頂いた御指摘の中で、

                   

                  |1. リスト取得用Bean.javaとエンティティーBean.javaでリモートの通信を行う際のシリアライズ時に、
                  |何かしらArrayListの順序に影響を与えるような動作が行われている
                  |2. エンティティーBean.java内のArrayListの保持の仕方に問題がある

                   

                  シリアライズされて通信されるということでしたが、EJBのメソッド呼び出し間で内部的に
                  配列の構造が変化してしまうような動きをしている個所があるのかとも思いましたが、
                  やはり実装上なにか問題があって、おかしくなっているのではないかといったところです。

                  あと、2.に絡む件かどうかですが、
                  頂いたサンプルですと、Listのインターフェイスを実装されておりましたが、こちらの資産では、
                  すべてCollectionでインターフェイスととっております。

                   

                  EntityBeanからの受け取りは、
                  Collection collection = bean.getDBResultList();
                  という感じで取り出しております。

                   

                  現状

                  EJBメソッドを、Collectionインターフェイス経由でArrayListを保持させた内容を受け取ると、
                  HashSetで帰ってくる

                  という状況です。

                   

                  JBoss内部で何か起きているのでしょうか・・・。

                  • 6. Re: WebLogic 11gからJBossAS7.1.0Finalへの移行で生じる、ドロップダウン項目の並び順について
                    t-minami

                    nakamura takuyaさん、こんにちは。

                     

                    この時点でEntityBean側で、getClass().getName()させてみると、java.util.ArrayListと表示されます。
                    (当然ArrayListを配列としているため)

                    が、SessionBeanに、その値が戻った時点で、再度getClass().getName()させてみると、なんと、型が
                    java.util.HashSetと表示されることが分かりました。

                     

                    御存じの通り、HashSetクラスは、順序が維持されない種類のクラスになるので、順序が狂うという理屈は
                    確かに納得できますが、元々ArrayListで作られた配列が、いきなりHashSetに変わってしまうという事象
                    というのが生じるものなのかは、全く不明です。

                     

                    まずは一歩前進だと思います。少なくともArrayListの順序が入れ替わっているのではなく、

                    HashSetに変換されていることが問題である、ということが分かりました。

                     

                    HashSetに変わっているのだとすれば、プログラム的に変換が加えられているという可能性が最も高いでしょう。

                    どのプログラムが変換を加えているのかということは現時点では何とも言えませんが。

                     

                    |1. リスト取得用Bean.javaとエンティティーBean.javaでリモートの通信を行う際のシリアライズ時に、
                    |何かしらArrayListの順序に影響を与えるような動作が行われている
                    |2. エンティティーBean.java内のArrayListの保持の仕方に問題がある

                     

                    シリアライズされて通信されるということでしたが、EJBのメソッド呼び出し間で内部的に
                    配列の構造が変化してしまうような動きをしている個所があるのかとも思いましたが、
                    やはり実装上なにか問題があって、おかしくなっているのではないかといったところです。

                     

                    こちらはおっしゃる通り、通信時の問題ではないと思います。

                    シリアライズ、デシリアライズでインスタンスが変わることは考えにくいので、

                    1の可能性はひとまず忘れて良いと思います。

                     

                    |2. エンティティーBean.java内のArrayListの保持の仕方に問題がある

                     

                    あと、2.に絡む件かどうかですが、
                    頂いたサンプルですと、Listのインターフェイスを実装されておりましたが、こちらの資産では、
                    すべてCollectionでインターフェイスととっております。

                     

                    一応こちらでも、Listインタフェースの部分を全てCollectionインタフェースに変更して

                    再度サンプルを実行してみましたが、問題なくArrayListで取得できております。

                     

                    Collectionインタフェースのiterator()メソッドの仕様にも

                    「コレクションの要素の反復子を返します。要素が返される順序についての保証はありません。

                    ただし、このコレクションが、保証を提供するクラスのインスタンスである場合は例外です。」

                    と記載されておりますので、インスタンスがArrayListであれば、Collectionインタフェースから

                    Iteratorを取得するという実装にも動作上問題は無いかと思います。

                     

                    http://java.sun.com/javase/ja/6/docs/ja/api/java/util/Collection.html#iterator()

                     

                     

                    現状

                    EJBメソッドを、Collectionインターフェイス経由でArrayListを保持させた内容を受け取ると、
                    HashSetで帰ってくる

                    という状況です。

                     

                    JBoss内部で何か起きているのでしょうか・・・。

                     

                    サンプル実装をそちらの環境で実行して頂いた時に、特に問題なく動作するということですので、

                    現状JBossの動作を疑ってかかるのは後回しにした方が良いと思います。

                    (現時点では可能性が低い上、調べ出すと一番時間がかかる観点だと思いますので)

                     

                    こちらで現象が再現しないので、以下に私ならどうするか、というポイントを記載させていただきます。

                    調査のヒントになれば幸いです。

                     

                    1. 本当にJBossとWebLogicの動作の差異であるか確認する

                      ・WebLogicとJBossを動作させているマシンのH/W、OS環境は同じか?

                      ・WebLogicとJBossが動作しているJDKのバージョンは同じか?

                        (java -versionで表示されるバージョンが一緒でも、環境変数の設定ミスで違うJDKで実行していないか)

                     

                    2. 共通処理、フレームワークなどが影響していないか

                    ・WebLogic環境では、SessionBeanで取得できるインスタンスはArrayListであるか?

                       (WebLogic環境でもHashSetになっていた可能性は無いか)

                    ・ユーザアプリケーション以外の共通フレームワークなどのバージョンを更新していないか?

                    ・共通処理やアプリケーションでnew HashSet()をコールしている箇所を全検索

                       Collection a = new ArrayList();

                       Collection b = new HashSet(a);

                       上記のような処理をすると変換が行われてしまうので、このような処理が存在しないか確認。

                     

                    3. リファクタリングや移行時に置換ミス等は無かったか

                    ・ソースや設定ファイルを一括置換した場合などに定義が誤って書き換わっており、

                       SessionBeanから意図しないEntityBeanが呼び出されていないか。

                       (ArrayListに入っている内容と、SessionBeanで取得したHashSetの内容・要素数が本当に一致しているか

                       確認してみるのも良いと思います)

                     

                    ここまで調査して問題が無いのであれば、デバッガなどを使って、ArrayListがSessionBeanに

                    返却される箇所の処理を追跡すると良いでしょう。

                    • 7. Re: WebLogic 11gからJBossAS7.1.0Finalへの移行で生じる、ドロップダウン項目の並び順について
                      takuyaaa

                      Minami Takayuki さん。

                      こんにちは。

                       

                      いろいろなご指摘、恐れ入ります。

                       


                      確認の結果を下記にインラインにて書き出させていただきます。

                       

                      > 1. 本当にJBossとWebLogicの動作の差異であるか確認する
                      >   ・WebLogicとJBossを動作させているマシンのH/W、OS環境は同じか?

                       

                      これについては、

                      同じマシン、同じOSになります。

                       

                      >   ・WebLogicとJBossが動作しているJDKのバージョンは同じか?

                       

                      基本的に、WebLogic環境と同一マシンにてJBoss移行作業をしているため
                      JDKのバージョンは一致しております。

                       

                      >     (java -versionで表示されるバージョンが一緒でも、環境変数の設定ミスで違うJDKで実行していないか)

                       

                      WebLogicのログにも導入しております、JDK7のバージョン表記(1.7.0_02)が出ていますので、間違いないと思います。

                       

                      > 2. 共通処理、フレームワークなどが影響していないか
                      >
                      > ・WebLogic環境では、SessionBeanで取得できるインスタンスはArrayListであるか?
                      >    (WebLogic環境でもHashSetになっていた可能性は無いか)

                       

                      確認しました。WebLogic環境にて、同じモジュールを動作させデバッグ出力させましたところ、
                      ArrayListと表示されましたので、型のずれは起きていないように思えます。

                       

                      > ・ユーザアプリケーション以外の共通フレームワークなどのバージョンを更新していないか?
                      > ・共通処理やアプリケーションでnew HashSet()をコールしている箇所を全検索
                      >    Collection a = new ArrayList();
                      >    Collection b = new HashSet(a);
                      >    上記のような処理をすると変換が行われてしまうので、このような処理が存在しないか確認。

                       

                      全ソースコードを総なめしてみましたが、HashSetを取り扱っているコードは発見できません。

                       

                      > 3. リファクタリングや移行時に置換ミス等は無かったか
                      > ・ソースや設定ファイルを一括置換した場合などに定義が誤って書き換わっており、
                      >    SessionBeanから意図しないEntityBeanが呼び出されていないか。
                      >    (ArrayListに入っている内容と、SessionBeanで取得したHashSetの内容・要素数が本当に一致しているか
                      >    確認してみるのも良いと思います)

                       

                      今回の移行では、資産は
                      Javaのコードについては、変更は基本的に行っておらず、
                      DD(ejb-jar.xml)の書き換え(グローバルJNDIに変わったことで修正しなくてはならない記述があった)
                      が主たる移行の作業となっておりますので、一括置換するような改修作業は実施しておりません。

                       

                       

                      といった状況になりますので、やはりSessionBeanの廻りをもう少し調査する必要がありそうです。

                      取り急ぎご連絡です。

                      • 8. Re: WebLogic 11gからJBossAS7.1.0Finalへの移行で生じる、ドロップダウン項目の並び順について
                        takuyaaa


                        続報です。

                         

                        意図的に、例外を発生させ、スタックトレースを取得し、呼び出し階層情報を一気に取り出してみました。
                        その結果、呼び出し元と呼び出し先との間には、JBossのEJB関連のモジュールを相当通過してから
                        返却されているのがわかります。

                         

                        2012-05-01 15:47:01,994 - 当メソッドの呼び出し元(0) = ClassName:jp.Test.TestEntityBean,MethodName:ejbFindList,Line:61
                        2012-05-01 15:47:02,000 - 当メソッドの呼び出し元(1) = ClassName:sun.reflect.NativeMethodAccessorImpl,MethodName:invoke0,Line:-2
                        2012-05-01 15:47:02,001 - 当メソッドの呼び出し元(2) = ClassName:sun.reflect.NativeMethodAccessorImpl,MethodName:invoke,Line:57
                        2012-05-01 15:47:02,001 - 当メソッドの呼び出し元(3) = ClassName:sun.reflect.DelegatingMethodAccessorImpl,MethodName:invoke,Line:43
                        2012-05-01 15:47:02,001 - 当メソッドの呼び出し元(4) = ClassName:java.lang.reflect.Method,MethodName:invoke,Line:601
                        2012-05-01 15:47:02,001 - 当メソッドの呼び出し元(5) = ClassName:org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor,MethodName:processInvocation,Line:72
                        2012-05-01 15:47:02,002 - 当メソッドの呼び出し元(6) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        2012-05-01 15:47:02,002 - 当メソッドの呼び出し元(7) = ClassName:org.jboss.invocation.WeavedInterceptor,MethodName:processInvocation,Line:53
                        2012-05-01 15:47:02,002 - 当メソッドの呼び出し元(8) = ClassName:org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1,MethodName:processInvocation,Line:36
                        2012-05-01 15:47:02,002 - 当メソッドの呼び出し元(9) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        2012-05-01 15:47:02,003 - 当メソッドの呼び出し元(10) = ClassName:org.jboss.as.ejb3.component.entity.interceptors.EntityBeanReentrancyInterceptor,MethodName:processInvocation,Line:50
                        2012-05-01 15:47:02,003 - 当メソッドの呼び出し元(11) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        2012-05-01 15:47:02,003 - 当メソッドの呼び出し元(12) = ClassName:org.jboss.as.ejb3.component.entity.interceptors.EntityBeanSynchronizationInterceptor,MethodName:processInvocation,Line:68
                        2012-05-01 15:47:02,003 - 当メソッドの呼び出し元(13) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        2012-05-01 15:47:02,004 - 当メソッドの呼び出し元(14) = ClassName:org.jboss.invocation.InitialInterceptor,MethodName:processInvocation,Line:21
                        2012-05-01 15:47:02,004 - 当メソッドの呼び出し元(15) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        2012-05-01 15:47:02,005 - 当メソッドの呼び出し元(16) = ClassName:org.jboss.invocation.ChainedInterceptor,MethodName:processInvocation,Line:61
                        2012-05-01 15:47:02,005 - 当メソッドの呼び出し元(17) = ClassName:org.jboss.as.ejb3.component.entity.interceptors.EntityBeanHomeFinderInterceptorFactory,MethodName:invokeFind,Line:153
                        2012-05-01 15:47:02,005 - 当メソッドの呼び出し元(18) = ClassName:org.jboss.as.ejb3.component.entity.interceptors.EntityBeanHomeFinderInterceptorFactory$1,MethodName:processInvocation,Line:92
                        2012-05-01 15:47:02,005 - 当メソッドの呼び出し元(19) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        2012-05-01 15:47:02,006 - 当メソッドの呼び出し元(20) = ClassName:org.jboss.as.ejb3.tx.CMTTxInterceptor,MethodName:invokeInCallerTx,Line:202
                        2012-05-01 15:47:02,006 - 当メソッドの呼び出し元(21) = ClassName:org.jboss.as.ejb3.tx.CMTTxInterceptor,MethodName:required,Line:306
                        2012-05-01 15:47:02,006 - 当メソッドの呼び出し元(22) = ClassName:org.jboss.as.ejb3.tx.CMTTxInterceptor,MethodName:processInvocation,Line:190
                        2012-05-01 15:47:02,006 - 当メソッドの呼び出し元(23) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        2012-05-01 15:47:02,007 - 当メソッドの呼び出し元(24) = ClassName:org.jboss.as.ejb3.remote.EJBRemoteTransactionPropogatingInterceptor,MethodName:processInvocation,Line:80
                        2012-05-01 15:47:02,007 - 当メソッドの呼び出し元(25) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        2012-05-01 15:47:02,007 - 当メソッドの呼び出し元(26) = ClassName:org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor,MethodName:processInvocation,Line:41
                        2012-05-01 15:47:02,007 - 当メソッドの呼び出し元(27) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        2012-05-01 15:47:02,008 - 当メソッドの呼び出し元(28) = ClassName:org.jboss.as.ejb3.component.interceptors.LoggingInterceptor,MethodName:processInvocation,Line:59
                        2012-05-01 15:47:02,008 - 当メソッドの呼び出し元(29) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        2012-05-01 15:47:02,009 - 当メソッドの呼び出し元(30) = ClassName:org.jboss.as.ejb3.component.interceptors.EjbExceptionTransformingInterceptorFactories$1,MethodName:processInvocation,Line:65
                        2012-05-01 15:47:02,009 - 当メソッドの呼び出し元(31) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        2012-05-01 15:47:02,009 - 当メソッドの呼び出し元(32) = ClassName:org.jboss.as.ee.component.NamespaceContextInterceptor,MethodName:processInvocation,Line:50
                        2012-05-01 15:47:02,009 - 当メソッドの呼び出し元(33) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        2012-05-01 15:47:02,010 - 当メソッドの呼び出し元(34) = ClassName:org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor,MethodName:processInvocation,Line:32
                        2012-05-01 15:47:02,010 - 当メソッドの呼び出し元(35) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        2012-05-01 15:47:02,010 - 当メソッドの呼び出し元(36) = ClassName:org.jboss.as.ee.component.TCCLInterceptor,MethodName:processInvocation,Line:45
                        2012-05-01 15:47:02,010 - 当メソッドの呼び出し元(37) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        2012-05-01 15:47:02,010 - 当メソッドの呼び出し元(38) = ClassName:org.jboss.invocation.ChainedInterceptor,MethodName:processInvocation,Line:61
                        2012-05-01 15:47:02,011 - 当メソッドの呼び出し元(39) = ClassName:org.jboss.as.ee.component.ViewService$View,MethodName:invoke,Line:165
                        2012-05-01 15:47:02,011 - 当メソッドの呼び出し元(40) = ClassName:org.jboss.as.ejb3.remote.LocalEjbReceiver,MethodName:processInvocation,Line:179
                        2012-05-01 15:47:02,011 - 当メソッドの呼び出し元(41) = ClassName:org.jboss.ejb.client.EJBClientInvocationContext,MethodName:sendRequest,Line:173
                        2012-05-01 15:47:02,011 - 当メソッドの呼び出し元(42) = ClassName:org.jboss.ejb.client.TransactionInterceptor,MethodName:handleInvocation,Line:43
                        2012-05-01 15:47:02,011 - 当メソッドの呼び出し元(43) = ClassName:org.jboss.ejb.client.EJBClientInvocationContext,MethodName:sendRequest,Line:175
                        2012-05-01 15:47:02,012 - 当メソッドの呼び出し元(44) = ClassName:org.jboss.ejb.client.ReceiverInterceptor,MethodName:handleInvocation,Line:92
                        2012-05-01 15:47:02,012 - 当メソッドの呼び出し元(45) = ClassName:org.jboss.ejb.client.EJBClientInvocationContext,MethodName:sendRequest,Line:175
                        2012-05-01 15:47:02,012 - 当メソッドの呼び出し元(46) = ClassName:org.jboss.ejb.client.EJBInvocationHandler,MethodName:doInvoke,Line:136
                        2012-05-01 15:47:02,012 - 当メソッドの呼び出し元(47) = ClassName:org.jboss.ejb.client.EJBInvocationHandler,MethodName:doInvoke,Line:121
                        2012-05-01 15:47:02,012 - 当メソッドの呼び出し元(48) = ClassName:org.jboss.ejb.client.EJBInvocationHandler,MethodName:invoke,Line:104
                        2012-05-01 15:47:02,013 - 当メソッドの呼び出し元(49) = ClassName:$Proxy273,MethodName:findKikanList,Line:-1
                        2012-05-01 15:47:02,013 - 当メソッドの呼び出し元(50) = ClassName:jp.Test.GetListBean,MethodName:getList,Line:248

                         

                        その中で、唯一HashSetをnewしているソースが合致しまして

                        EntityBeanHomeFinderInterceptorFactory

                        クラスなるものが、有ります。(当メソッドの呼び出し元(17)の箇所です。)


                        の107行目で、switch文があり、その中で、COLLECTION型かどうかを聞いている個所があり、
                        返却値を返すところの処理でHashSetをnewしているところがprepareResultsメソッド内にあり、スタックトレースからみると、
                        この処理を通過している感じです。この処理にて、返却値を生成しているのだとすると、確実にHashSetになる気がしますが

                        その意図はわかりませんが、JBoss内部のEntity廻りのモジュールの仕様ということになってしまいますかね。

                         

                        参考
                        https://github.com/jbossas/jboss-as/blob/master/ejb3/src/main/java/org/jboss/as/ejb3/component/entity/interceptors/EntityBeanHomeFinderInterceptorFactory.java

                         

                        頂いたサンプルの方も、スタックトレースを取り出してみました。

                        TestEntityBean上に、getDBResultList()関数を呼び出す際、当該のEntityBeanHomeFinderInterceptorFactory
                        を通っていない事がわかります。

                         

                        メソッドの名前の付け方?(ejbで始まるような)等起因する点があるのでしょうか。

                         

                        16:26:37,209 INFO 当メソッドの呼び出し元(0) = ClassName:test.TestEntityBean,MethodName:getDBResultList,Line:32
                        16:26:37,212 INFO 当メソッドの呼び出し元(1) = ClassName:sun.reflect.NativeMethodAccessorImpl,MethodName:invoke0,Line:-2
                        16:26:37,214 INFO 当メソッドの呼び出し元(2) = ClassName:sun.reflect.NativeMethodAccessorImpl,MethodName:invoke,Line:57
                        16:26:37,216 INFO 当メソッドの呼び出し元(3) = ClassName:sun.reflect.DelegatingMethodAccessorImpl,MethodName:invoke,Line:43
                        16:26:37,218 INFO 当メソッドの呼び出し元(4) = ClassName:java.lang.reflect.Method,MethodName:invoke,Line:601
                        16:26:37,220 INFO 当メソッドの呼び出し元(5) = ClassName:org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor,MethodName:processInvocation,Line:72
                        16:26:37,224 INFO 当メソッドの呼び出し元(6) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,226 INFO 当メソッドの呼び出し元(7) = ClassName:org.jboss.invocation.WeavedInterceptor,MethodName:processInvocation,Line:53
                        16:26:37,228 INFO 当メソッドの呼び出し元(8) = ClassName:org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1,MethodName:processInvocation,Line:36
                        16:26:37,231 INFO 当メソッドの呼び出し元(9) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,233 INFO 当メソッドの呼び出し元(10) = ClassName:org.jboss.as.ejb3.component.entity.interceptors.EntityBeanReentrancyInterceptor,MethodName:processInvocation,Line:50
                        16:26:37,236 INFO 当メソッドの呼び出し元(11) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,239 INFO 当メソッドの呼び出し元(12) = ClassName:org.jboss.as.ejb3.component.entity.interceptors.EntityBeanSynchronizationInterceptor,MethodName:processInvocation,Line:117
                        16:26:37,242 INFO 当メソッドの呼び出し元(13) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,244 INFO 当メソッドの呼び出し元(14) = ClassName:org.jboss.invocation.InitialInterceptor,MethodName:processInvocation,Line:21
                        16:26:37,246 INFO 当メソッドの呼び出し元(15) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,249 INFO 当メソッドの呼び出し元(16) = ClassName:org.jboss.invocation.ChainedInterceptor,MethodName:processInvocation,Line:61
                        16:26:37,251 INFO 当メソッドの呼び出し元(17) = ClassName:org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor,MethodName:processInvocation,Line:53
                        16:26:37,254 INFO 当メソッドの呼び出し元(18) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,256 INFO 当メソッドの呼び出し元(19) = ClassName:org.jboss.as.ejb3.component.entity.interceptors.EntityBeanAssociatingInterceptorFactory$1,MethodName:processInvocation,Line:87
                        16:26:37,260 INFO 当メソッドの呼び出し元(20) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,262 INFO 当メソッドの呼び出し元(21) = ClassName:org.jboss.as.ejb3.tx.CMTTxInterceptor,MethodName:invokeInCallerTx,Line:202
                        16:26:37,264 INFO 当メソッドの呼び出し元(22) = ClassName:org.jboss.as.ejb3.tx.CMTTxInterceptor,MethodName:required,Line:306
                        16:26:37,267 INFO 当メソッドの呼び出し元(23) = ClassName:org.jboss.as.ejb3.tx.CMTTxInterceptor,MethodName:processInvocation,Line:190
                        16:26:37,269 INFO 当メソッドの呼び出し元(24) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,271 INFO 当メソッドの呼び出し元(25) = ClassName:org.jboss.as.ejb3.remote.EJBRemoteTransactionPropogatingInterceptor,MethodName:processInvocation,Line:80
                        16:26:37,274 INFO 当メソッドの呼び出し元(26) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,276 INFO 当メソッドの呼び出し元(27) = ClassName:org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor,MethodName:processInvocation,Line:41
                        16:26:37,279 INFO 当メソッドの呼び出し元(28) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,282 INFO 当メソッドの呼び出し元(29) = ClassName:org.jboss.as.ejb3.component.interceptors.LoggingInterceptor,MethodName:processInvocation,Line:59
                        16:26:37,284 INFO 当メソッドの呼び出し元(30) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,287 INFO 当メソッドの呼び出し元(31) = ClassName:org.jboss.as.ejb3.component.interceptors.EjbExceptionTransformingInterceptorFactories$1,MethodName:processInvocation,Line:65
                        16:26:37,290 INFO 当メソッドの呼び出し元(32) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,292 INFO 当メソッドの呼び出し元(33) = ClassName:org.jboss.as.ee.component.NamespaceContextInterceptor,MethodName:processInvocation,Line:50
                        16:26:37,295 INFO 当メソッドの呼び出し元(34) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,297 INFO 当メソッドの呼び出し元(35) = ClassName:org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor,MethodName:processInvocation,Line:32
                        16:26:37,300 INFO 当メソッドの呼び出し元(36) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,302 INFO 当メソッドの呼び出し元(37) = ClassName:org.jboss.as.ee.component.TCCLInterceptor,MethodName:processInvocation,Line:45
                        16:26:37,306 INFO 当メソッドの呼び出し元(38) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,308 INFO 当メソッドの呼び出し元(39) = ClassName:org.jboss.invocation.ChainedInterceptor,MethodName:processInvocation,Line:61
                        16:26:37,310 INFO 当メソッドの呼び出し元(40) = ClassName:org.jboss.as.ee.component.ViewService$View,MethodName:invoke,Line:165
                        16:26:37,313 INFO 当メソッドの呼び出し元(41) = ClassName:org.jboss.as.ejb3.remote.LocalEjbReceiver,MethodName:processInvocation,Line:179
                        16:26:37,315 INFO 当メソッドの呼び出し元(42) = ClassName:org.jboss.ejb.client.EJBClientInvocationContext,MethodName:sendRequest,Line:173
                        16:26:37,318 INFO 当メソッドの呼び出し元(43) = ClassName:org.jboss.ejb.client.TransactionInterceptor,MethodName:handleInvocation,Line:43
                        16:26:37,320 INFO 当メソッドの呼び出し元(44) = ClassName:org.jboss.ejb.client.EJBClientInvocationContext,MethodName:sendRequest,Line:175
                        16:26:37,323 INFO 当メソッドの呼び出し元(45) = ClassName:org.jboss.ejb.client.ReceiverInterceptor,MethodName:handleInvocation,Line:92
                        16:26:37,325 INFO 当メソッドの呼び出し元(46) = ClassName:org.jboss.ejb.client.EJBClientInvocationContext,MethodName:sendRequest,Line:175
                        16:26:37,328 INFO 当メソッドの呼び出し元(47) = ClassName:org.jboss.ejb.client.EJBInvocationHandler,MethodName:doInvoke,Line:136
                        16:26:37,330 INFO 当メソッドの呼び出し元(48) = ClassName:org.jboss.ejb.client.EJBInvocationHandler,MethodName:doInvoke,Line:121
                        16:26:37,332 INFO 当メソッドの呼び出し元(49) = ClassName:org.jboss.ejb.client.EJBInvocationHandler,MethodName:invoke,Line:104
                        16:26:37,335 INFO 当メソッドの呼び出し元(50) = ClassName:$Proxy285,MethodName:getDBResultList,Line:-1
                        16:26:37,337 INFO 当メソッドの呼び出し元(51) = ClassName:test.GetListBean,MethodName:getList,Line:30
                        16:26:37,339 INFO 当メソッドの呼び出し元(52) = ClassName:sun.reflect.NativeMethodAccessorImpl,MethodName:invoke0,Line:-2
                        16:26:37,341 INFO 当メソッドの呼び出し元(53) = ClassName:sun.reflect.NativeMethodAccessorImpl,MethodName:invoke,Line:57
                        16:26:37,343 INFO 当メソッドの呼び出し元(54) = ClassName:sun.reflect.DelegatingMethodAccessorImpl,MethodName:invoke,Line:43
                        16:26:37,345 INFO 当メソッドの呼び出し元(55) = ClassName:java.lang.reflect.Method,MethodName:invoke,Line:601
                        16:26:37,348 INFO 当メソッドの呼び出し元(56) = ClassName:org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor,MethodName:processInvocation,Line:72
                        16:26:37,351 INFO 当メソッドの呼び出し元(57) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,354 INFO 当メソッドの呼び出し元(58) = ClassName:org.jboss.invocation.WeavedInterceptor,MethodName:processInvocation,Line:53
                        16:26:37,356 INFO 当メソッドの呼び出し元(59) = ClassName:org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1,MethodName:processInvocation,Line:36
                        16:26:37,359 INFO 当メソッドの呼び出し元(60) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,361 INFO 当メソッドの呼び出し元(61) = ClassName:org.jboss.as.jpa.interceptor.SBInvocationInterceptor,MethodName:processInvocation,Line:47
                        16:26:37,364 INFO 当メソッドの呼び出し元(62) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,366 INFO 当メソッドの呼び出し元(63) = ClassName:org.jboss.invocation.InitialInterceptor,MethodName:processInvocation,Line:21
                        16:26:37,369 INFO 当メソッドの呼び出し元(64) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,371 INFO 当メソッドの呼び出し元(65) = ClassName:org.jboss.invocation.ChainedInterceptor,MethodName:processInvocation,Line:61
                        16:26:37,373 INFO 当メソッドの呼び出し元(66) = ClassName:org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor,MethodName:processInvocation,Line:53
                        16:26:37,376 INFO 当メソッドの呼び出し元(67) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,379 INFO 当メソッドの呼び出し元(68) = ClassName:org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor,MethodName:processInvocation,Line:51
                        16:26:37,381 INFO 当メソッドの呼び出し元(69) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,384 INFO 当メソッドの呼び出し元(70) = ClassName:org.jboss.as.ejb3.tx.CMTTxInterceptor,MethodName:invokeInOurTx,Line:228
                        16:26:37,386 INFO 当メソッドの呼び出し元(71) = ClassName:org.jboss.as.ejb3.tx.CMTTxInterceptor,MethodName:required,Line:304
                        16:26:37,388 INFO 当メソッドの呼び出し元(72) = ClassName:org.jboss.as.ejb3.tx.CMTTxInterceptor,MethodName:processInvocation,Line:190
                        16:26:37,391 INFO 当メソッドの呼び出し元(73) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,393 INFO 当メソッドの呼び出し元(74) = ClassName:org.jboss.as.ejb3.remote.EJBRemoteTransactionPropogatingInterceptor,MethodName:processInvocation,Line:80
                        16:26:37,396 INFO 当メソッドの呼び出し元(75) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,398 INFO 当メソッドの呼び出し元(76) = ClassName:org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor,MethodName:processInvocation,Line:41
                        16:26:37,401 INFO 当メソッドの呼び出し元(77) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,403 INFO 当メソッドの呼び出し元(78) = ClassName:org.jboss.as.ejb3.component.interceptors.LoggingInterceptor,MethodName:processInvocation,Line:59
                        16:26:37,407 INFO 当メソッドの呼び出し元(79) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,409 INFO 当メソッドの呼び出し元(80) = ClassName:org.jboss.as.ejb3.component.interceptors.EjbExceptionTransformingInterceptorFactories$1,MethodName:processInvocation,Line:65
                        16:26:37,412 INFO 当メソッドの呼び出し元(81) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,415 INFO 当メソッドの呼び出し元(82) = ClassName:org.jboss.as.ee.component.NamespaceContextInterceptor,MethodName:processInvocation,Line:50
                        16:26:37,417 INFO 当メソッドの呼び出し元(83) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,419 INFO 当メソッドの呼び出し元(84) = ClassName:org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor,MethodName:processInvocation,Line:32
                        16:26:37,422 INFO 当メソッドの呼び出し元(85) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,425 INFO 当メソッドの呼び出し元(86) = ClassName:org.jboss.as.ee.component.TCCLInterceptor,MethodName:processInvocation,Line:45
                        16:26:37,427 INFO 当メソッドの呼び出し元(87) = ClassName:org.jboss.invocation.InterceptorContext,MethodName:proceed,Line:288
                        16:26:37,430 INFO 当メソッドの呼び出し元(88) = ClassName:org.jboss.invocation.ChainedInterceptor,MethodName:processInvocation,Line:61
                        16:26:37,432 INFO 当メソッドの呼び出し元(89) = ClassName:org.jboss.as.ee.component.ViewService$View,MethodName:invoke,Line:165
                        16:26:37,435 INFO 当メソッドの呼び出し元(90) = ClassName:org.jboss.as.ejb3.remote.LocalEjbReceiver,MethodName:processInvocation,Line:179
                        16:26:37,437 INFO 当メソッドの呼び出し元(91) = ClassName:org.jboss.ejb.client.EJBClientInvocationContext,MethodName:sendRequest,Line:173
                        16:26:37,440 INFO 当メソッドの呼び出し元(92) = ClassName:org.jboss.ejb.client.TransactionInterceptor,MethodName:handleInvocation,Line:43
                        16:26:37,442 INFO 当メソッドの呼び出し元(93) = ClassName:org.jboss.ejb.client.EJBClientInvocationContext,MethodName:sendRequest,Line:175
                        16:26:37,445 INFO 当メソッドの呼び出し元(94) = ClassName:org.jboss.ejb.client.ReceiverInterceptor,MethodName:handleInvocation,Line:92
                        16:26:37,447 INFO 当メソッドの呼び出し元(95) = ClassName:org.jboss.ejb.client.EJBClientInvocationContext,MethodName:sendRequest,Line:175
                        16:26:37,450 INFO 当メソッドの呼び出し元(96) = ClassName:org.jboss.ejb.client.EJBInvocationHandler,MethodName:doInvoke,Line:136
                        16:26:37,453 INFO 当メソッドの呼び出し元(97) = ClassName:org.jboss.ejb.client.EJBInvocationHandler,MethodName:doInvoke,Line:121
                        16:26:37,455 INFO 当メソッドの呼び出し元(98) = ClassName:org.jboss.ejb.client.EJBInvocationHandler,MethodName:invoke,Line:104
                        16:26:37,457 INFO 当メソッドの呼び出し元(99) = ClassName:$Proxy283,MethodName:getList,Line:-1
                        16:26:37,459 INFO 当メソッドの呼び出し元(100) = ClassName:test.TestArrayListServlet,MethodName:doGet,Line:37
                        16:26:37,461 INFO 当メソッドの呼び出し元(101) = ClassName:javax.servlet.http.HttpServlet,MethodName:service,Line:734
                        16:26:37,464 INFO 当メソッドの呼び出し元(102) = ClassName:javax.servlet.http.HttpServlet,MethodName:service,Line:847
                        16:26:37,466 INFO 当メソッドの呼び出し元(103) = ClassName:org.apache.catalina.core.ApplicationFilterChain,MethodName:internalDoFilter,Line:329
                        16:26:37,468 INFO 当メソッドの呼び出し元(104) = ClassName:org.apache.catalina.core.ApplicationFilterChain,MethodName:doFilter,Line:248
                        16:26:37,471 INFO 当メソッドの呼び出し元(105) = ClassName:org.apache.catalina.core.StandardWrapperValve,MethodName:invoke,Line:275
                        16:26:37,473 INFO 当メソッドの呼び出し元(106) = ClassName:org.apache.catalina.core.StandardContextValve,MethodName:invoke,Line:161
                        16:26:37,476 INFO 当メソッドの呼び出し元(107) = ClassName:org.jboss.as.web.security.SecurityContextAssociationValve,MethodName:invoke,Line:154
                        16:26:37,479 INFO 当メソッドの呼び出し元(108) = ClassName:org.apache.catalina.core.StandardHostValve,MethodName:invoke,Line:155
                        16:26:37,481 INFO 当メソッドの呼び出し元(109) = ClassName:org.apache.catalina.valves.ErrorReportValve,MethodName:invoke,Line:102
                        16:26:37,484 INFO 当メソッドの呼び出し元(110) = ClassName:org.apache.catalina.core.StandardEngineValve,MethodName:invoke,Line:109
                        16:26:37,486 INFO 当メソッドの呼び出し元(111) = ClassName:org.apache.catalina.connector.CoyoteAdapter,MethodName:service,Line:368
                        16:26:37,489 INFO 当メソッドの呼び出し元(112) = ClassName:org.apache.coyote.http11.Http11Processor,MethodName:process,Line:877
                        16:26:37,491 INFO 当メソッドの呼び出し元(113) = ClassName:org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler,MethodName:process,Line:671
                        16:26:37,494 INFO 当メソッドの呼び出し元(114) = ClassName:org.apache.tomcat.util.net.JIoEndpoint$Worker,MethodName:run,Line:930
                        16:26:37,496 INFO 当メソッドの呼び出し元(115) = ClassName:java.lang.Thread,MethodName:run,Line:722

                         

                        • 9. Re: WebLogic 11gからJBossAS7.1.0Finalへの移行で生じる、ドロップダウン項目の並び順について
                          t-minami

                          nakamura takuyaさん、詳細なスタックトレースのご提示ありがとうございます。

                           

                          まず始めに、私の提示したサンプルのEntityBeanの実装方法が正しくなかったことをお詫びいたします。

                          下記サイトなどを参考に、少し修正したサンプルを添付しました。

                           

                          www.zeroscape.org/cgi-bin/wiki/wiki.cgi?page=EJB%BA%EE%C0%AE%BC%EA%BD%E7%A5%E1%A5%E2

                           

                          さて、ご提示いただいたスタックトレースで、事象が再現している方のプログラムでは、

                          GetListBean.getList()→findKikanList()メソッドを呼び出し、最終的にEntityBeanのejbFindList()が呼び出されているようです。

                          (更新した私のサンプルでは、GetListBean.getList()→findTestList()としましたが、実際のfindKikanList()メソッドの実装内容が

                          分からなかったため、今は単純にejbFindList()を再コールするだけ(TestEntityBeanの40行目)にしています)

                           

                          このejbFindList()というメソッドは、EJB2.1のEntityBeanの定義するところの「Finderメソッド」であるようです。

                           

                          http://java.sun.com/products/ejb/docs.html

                           

                          「Finderメソッド」はEJBコンテナが、問合せに関連付けてそのEJBタイプ(ここではTestEntityBean)の1つ以上のインスタンスを返すためのメソッドです。

                          http://docs.oracle.com/cd/E18355_01/web.1013/B31852-03/undejbs.htm#623023

                           

                          JBossAS7.1.0Finalでは、nakamura takuyaさんのご指摘の通り、EntityBeanHomeFinderInterceptorFactoryクラスにて、

                          Finderメソッドで見つかった複数のEntityBeanをHashSet型に詰めて返す動作をするようです。

                           

                          ここで二つのケースが考えられますが、

                           

                          1. findKikanList()メソッドはejbFindList()メソッドとは独立したビジネスメソッドであり、お互いに関係がない

                          2. ejbFindList()メソッドが呼び出される動作は意図通りであり、WebLogicではejbFindList()メソッドの返却値を元に処理をしていた

                           

                          もし1のケースであれば、命名規則や設定等が原因で、意図しないメソッドが呼び出されている事になります。

                          この場合は、きちんと意図したfindKikanList()の結果が返るよう、何かしらの修正をする必要が出てくると思います。

                           

                          2のケースであった場合、Finderメソッドの返却値をHashSetに詰めなおすのはJBossAS7の仕様であると思われます。

                          私自身、あまりEJB2.1の使用方法に明るくないため、もしかしたら別の解決方法があるのかもしれませんが、

                          単純に考えるなら、業務アプリケーション側で返ってきた結果を独自にソートし直すなどのロジック修正を

                          しなければならないと考えられます。

                          • 10. Re: WebLogic 11gからJBossAS7.1.0Finalへの移行で生じる、ドロップダウン項目の並び順について
                            takuyaaa


                            Minami Takayuki さん

                            コメントありがとうございます。

                             

                            1点訂正です。

                            誤植がありました。

                             


                            2012-05-01 15:47:01,994 - 当メソッドの呼び出し元(0) = ClassName:jp.Test.TestEntityBean,MethodName:ejbFindList,Line:61

                             


                            2012-05-01 15:47:01,994 - 当メソッドの呼び出し元(0) = ClassName:jp.Test.TestEntityBean,MethodName:ejbFindKikanList,Line:61


                            |さて、ご提示いただいたスタックトレースで、事象が再現している方のプログラムでは、
                            |GetListBean.getList()→findKikanList()メソッドを呼び出し、最終的にEntityBeanのejbFindList()が呼び出されているようです。
                            |(更新した私のサンプルでは、GetListBean.getList()→findTestList()としましたが、実際のfindKikanList()メソッドの実装内容が
                            |分からなかったため、今は単純にejbFindList()を再コールするだけ(TestEntityBeanの40行目)にしています)

                             

                            ですので、最終的にejbFindListが呼ばれるという結果は実際にはなく、
                            GetListBean.getList()→findKikanList()メソッドを呼び出しされた結果という形になります。

                             

                            WebLogic(Oracle Containers for J2EE Enterprise JavaBeans開発者ガイド10g(10.1.3.1.0))の
                            開発ガイドを見る限りだと、finderメソッドで複数の結果を返す場合は、Collectionを使うサンプル
                            が書かれていますが、おそらく既存の実装はこれを参考に作られているのかもしれませんが、

                             

                            http://docs.oracle.com/cd/E18355_01/web.1013/B31852-03/ent21imp.htm

                             

                            御指摘の通り

                             

                            |JBossAS7.1.0Finalでは、nakamura takuyaさんのご指摘の通り、EntityBeanHomeFinderInterceptorFactoryクラスにて、
                            |Finderメソッドで見つかった複数のEntityBeanをHashSet型に詰めて返す動作をするようです。

                             

                            サンプルコードありがとうございます。
                            早速試しました。頂いたサンプルですとfinderメソッドをコールする動きに変わっているようですが、

                            StackTraceを採取した結果ですが、EntityBeanHomeFinderInterceptorFactoryを通るかと
                            思いきや、通っていない感じです。

                             

                            別途添付ファイルに、EJBTEST.ear.StackTrace.txtをアップロードいたします。

                             

                            なので、当方の資産の既存の作り的に、ちょっと異なる点があるのかもしれません。

                            御指摘のケースについてですが

                             

                            |1. findKikanList()メソッドはejbFindList()メソッドとは独立したビジネスメソッドであり、お互いに関係がない

                            については、申し訳ございません、誤植だったので、このケースは無いと思います。

                            |2. ejbFindList()メソッドが呼び出される動作は意図通りであり、WebLogicではejbFindList()メソッドの返却値を元に処理をしていた

                             

                            結局、呼ばれるのは、ejbFindKikanListなので、処理内容はCollectionを伝えてきちんと返そうと
                            している動きであることは間違いは無いと思います。

                             

                            考察する点として

                            ファインダーメソッドを扱う場合、JBossの場合、結果がHashSetになってしまうのであれば
                            別の方法(ビジネスメソッドと呼ぶのでしょうか)にしてみて、検証等を行ったらどうなるか?というのを
                            試してみようかと思います。

                            ちなみに、現時点で、暫定対応的ではありますが、HashSetになって受け取った側で、自前で並べ替え処理を
                            コレクションに対して行って、無理矢理並べ換えを(今回は、コード順にした)行う処理を実装して事態を回避しております。

                             

                            取り急ぎ、現状のご報告は以上です。

                            • 11. Re: WebLogic 11gからJBossAS7.1.0Finalへの移行で生じる、ドロップダウン項目の並び順について
                              t-minami

                              きむらさん、ご指摘いただきありがとうございました。

                              Finderの返却値のタイプ定義はEJBの仕様によるもので、JBossAS7の仕様という書き方は間違いでした。

                               

                               

                              nakamura takuyaさん

                               

                               

                              サンプルコードありがとうございます。
                              早速試しました。頂いたサンプルですとfinderメソッドをコールする動きに変わっているようですが、

                              StackTraceを採取した結果ですが、EntityBeanHomeFinderInterceptorFactoryを通るかと
                              思いきや、通っていない感じです。

                               

                              別途添付ファイルに、EJBTEST.ear.StackTrace.txtをアップロードいたします。

                               

                              なので、当方の資産の既存の作り的に、ちょっと異なる点があるのかもしれません。

                               

                              スタックトレースのご提示ありがとうございます。

                              最終的に呼び出されているメソッド名がejbFindKikanListなのであれば、動作についての疑問は無くなりました。

                              以下、順を追ってご説明いたします。

                               

                              私が最初に提示したサンプルにおいて、SessionBeanからEntityBeanを呼び出す部分の実装方法が、

                              Finderメソッドを呼び出すやり方になっていませんでした。

                               

                              私のサンプルでは、EntityBeanのHomeインタフェース経由ではなく、リモートインタフェース経由でメソッドを呼び出していたため、

                              EntityBeanHomeFinderInterceptorFactoryを通っていなかったということです。

                               

                              既にご承知かもしれませんが、Finderメソッドを呼び出す際は、EntityBeanのHomeインタフェース経由で呼び出すのが正式な手順です。

                              (HomeインタフェースのfindList()メソッドを呼び出すと、EJBコンテナによってEntityBeanのejbFindList()が呼ばれる、という動作になります)

                               

                              再度サンプルを修正し、EntityBeanで例外を発生させたところ、EntityBeanHomeFinderInterceptorFactoryを通過していることが確認できました。

                              修正したサンプルと動作時のスタックトレースを添付しましたのでご確認下さい。

                              混乱させてしまい、すみませんでした。

                              • 12. Re: WebLogic 11gからJBossAS7.1.0Finalへの移行で生じる、ドロップダウン項目の並び順について
                                takuyaaa

                                Minami Takayuki 様

                                 

                                お世話になっております。

                                 

                                 

                                再度サンプルを修正し、EntityBeanで例外を発生させたところ、EntityBeanHomeFinderInterceptorFactoryを通過していることが確認できました。

                                修正したサンプルと動作時のスタックトレースを添付しましたのでご確認下さい。

                                 

                                 

                                Minami Takayuki様に頂きました添付のearをもとに、例外部分を取り除いたところ、ご指摘通りの挙動になりました。

                                ご報告までに、並び順対応したログを添付させていただきます。

                                • 13. Re: WebLogic 11gからJBossAS7.1.0Finalへの移行で生じる、ドロップダウン項目の並び順について
                                  takuyaaa

                                  続報です。

                                   

                                  finderメソッド以外の方法を模索していて、

                                  EJB2.1の場合、selectメソッドとかhomeメソッドとか実装できると知り

                                   

                                  WebLogicの開発ガイドのサイトを参考に、selectメソッドを実装する方法のところを見て

                                  このメソッドでも、Collectionも返すことが出来るとあったので、早速サンプルで検証を行ってみました。

                                   

                                  以下のselectメソッドについての章を参考に実装しましたが、
                                  http://docs.oracle.com/cd/E18355_01/web.1013/B31852-03/undejbs.htm#623967

                                   

                                  デプロイ出来ずエラーになってしまいます。

                                   

                                  TestEntityHome.java

                                  TestEntityBean.java

                                  の2つに、追加でselectメソッドを作りました。

                                   

                                  そして、EARを作成し

                                   

                                  JBAS014337: Could not resolve corresponding ejbHome for home interface method public abstract java.util.Collection test.TestEntityHome.selectList() throws javax.ejb.FinderException on EJB TestEntity

                                  というエラーです。
                                  もしかして、JBossでは、finderメソッドしかサポートしていない??

                                   

                                  デプロイ結果は以下の通りです。

                                  20:03:51,887 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-3) JBAS015876: Starting deployment of "EJBTEST.ear"
                                  20:03:51,935 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015876: Starting deployment of "EJBTestWeb.war"
                                  20:03:51,935 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015876: Starting deployment of "EJB.jar"
                                  20:03:51,950 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-1) JNDI bindings for session bean named TestEntity in deployment unit subdeployment "EJB.jar" of deployment "EJBTEST.ear" are as follows:

                                  java:global/EJBTEST/EJB/TestEntity!test.TestEntity
                                  java:app/EJB/TestEntity!test.TestEntity
                                  java:module/TestEntity!test.TestEntity
                                  java:jboss/exported/EJBTEST/EJB/TestEntity!test.TestEntity
                                  java:global/EJBTEST/EJB/TestEntity!test.TestEntityHome
                                  java:app/EJB/TestEntity!test.TestEntityHome
                                  java:module/TestEntity!test.TestEntityHome
                                  java:jboss/exported/EJBTEST/EJB/TestEntity!test.TestEntityHome

                                  20:03:51,966 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-1) JNDI bindings for session bean named GetListBean in deployment unit subdeployment "EJB.jar" of deployment "EJBTEST.ear" are as follows:

                                  java:global/EJBTEST/EJB/GetListBean!test.GetList
                                  java:app/EJB/GetListBean!test.GetList
                                  java:module/GetListBean!test.GetList
                                  java:jboss/exported/EJBTEST/EJB/GetListBean!test.GetList
                                  java:global/EJBTEST/EJB/GetListBean!test.GetListHome
                                  java:app/EJB/GetListBean!test.GetListHome
                                  java:module/GetListBean!test.GetListHome
                                  java:jboss/exported/EJBTEST/EJB/GetListBean!test.GetListHome

                                  20:03:51,997 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC00001: Failed to start service jboss.deployment.subunit."EJBTEST.ear"."EJB.jar".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.subunit."EJBTEST.ear"."EJB.jar".INSTALL: Failed to process phase INSTALL of subdeployment "EJB.jar" of deployment "EJBTEST.ear"
                                  at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.0.Final.jar:7.1.0.Final]
                                  at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
                                  at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
                                  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.7.0_02-ea]
                                  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.7.0_02-ea]
                                  at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_02-ea]
                                  Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011030: Could not configure component TestEntity
                                  at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:92)
                                  at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.0.Final.jar:7.1.0.Final]
                                  ... 5 more
                                  Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS014337: Could not resolve corresponding ejbHome for home interface method public abstract java.util.Collection test.TestEntityHome.selectList() throws javax.ejb.FinderException on EJB TestEntity
                                  at org.jboss.as.ejb3.component.entity.EntityBeanHomeViewConfigurator.resolveEjbHomeBusinessMethod(EntityBeanHomeViewConfigurator.java:205)
                                  at org.jboss.as.ejb3.component.entity.EntityBeanHomeViewConfigurator.configure(EntityBeanHomeViewConfigurator.java:152)
                                  at org.jboss.as.ee.component.ComponentDescription$DefaultComponentConfigurator.configure(ComponentDescription.java:921)
                                  at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:81)
                                  ... 6 more

                                  20:03:52,013 INFO  [org.jboss.web] (MSC service thread 1-2) JBAS018210: Registering web context: /listtest_war
                                  20:03:52,231 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 1) JBAS015870: Deploy of deployment "EJBTEST.ear" was rolled back with failure message {"JBAS014671: Failed services" => {"jboss.deployment.subunit.\"EJBTEST.ear\".\"EJB.jar\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.subunit.\"EJBTEST.ear\".\"EJB.jar\".INSTALL: Failed to process phase INSTALL of subdeployment \"EJB.jar\" of deployment \"EJBTEST.ear\""},"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.naming.context.java.comp.EJBTEST.EJB.GetListBean.ORBjboss.naming.context.java.comp.EJBTEST.EJB.GetListBeanMissing[jboss.naming.context.java.comp.EJBTEST.EJB.GetListBean.ORBjboss.naming.context.java.comp.EJBTEST.EJB.GetListBean]","jboss.naming.context.java.comp.EJBTEST.EJB.TestEntity.HandleDelegatejboss.naming.context.java.comp.EJBTEST.EJB.TestEntityMissing[jboss.naming.context.java.comp.EJBTEST.EJB.TestEntity.HandleDelegatejboss.naming.context.java.comp.EJBTEST.EJB.TestEntity]","jboss.naming.context.java.comp.EJBTEST.EJB.TestEntity.Validatorjboss.naming.context.java.comp.EJBTEST.EJB.TestEntityMissing[jboss.naming.context.java.comp.EJBTEST.EJB.TestEntity.Validatorjboss.naming.context.java.comp.EJBTEST.EJB.TestEntity]","jboss.naming.context.java.comp.EJBTEST.EJB.TestEntity.ORBjboss.naming.context.java.comp.EJBTEST.EJB.TestEntityMissing[jboss.naming.context.java.comp.EJBTEST.EJB.TestEntity.ORBjboss.naming.context.java.comp.EJBTEST.EJB.TestEntity]","jboss.naming.context.java.comp.EJBTEST.EJB.TestEntity.ValidatorFactoryjboss.naming.context.java.comp.EJBTEST.EJB.TestEntityMissing[jboss.naming.context.java.comp.EJBTEST.EJB.TestEntity.ValidatorFactoryjboss.naming.context.java.comp.EJBTEST.EJB.TestEntity]","jboss.naming.context.java.comp.EJBTEST.EJB.GetListBean.HandleDelegatejboss.naming.context.java.comp.EJBTEST.EJB.GetListBeanMissing[jboss.naming.context.java.comp.EJBTEST.EJB.GetListBean.HandleDelegatejboss.naming.context.java.comp.EJBTEST.EJB.GetListBean]","jboss.naming.context.java.comp.EJBTEST.EJB.GetListBean.Validatorjboss.naming.context.java.comp.EJBTEST.EJB.GetListBeanMissing[jboss.naming.context.java.comp.EJBTEST.EJB.GetListBean.Validatorjboss.naming.context.java.comp.EJBTEST.EJB.GetListBean]","jboss.naming.context.java.comp.EJBTEST.EJB.GetListBean.ValidatorFactoryjboss.naming.context.java.comp.EJBTEST.EJB.GetListBeanMissing[jboss.naming.context.java.comp.EJBTEST.EJB.GetListBean.ValidatorFactoryjboss.naming.context.java.comp.EJBTEST.EJB.GetListBean]"]}
                                  20:03:52,231 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015877: Stopped deployment EJB.jar in 13ms
                                  20:03:52,231 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015877: Stopped deployment EJBTestWeb.war in 13ms
                                  20:03:52,247 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015877: Stopped deployment EJBTEST.ear in 15ms
                                  20:03:52,247 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 1) JBAS014774: Service status report
                                  JBAS014777:   Services which failed to start:      service jboss.deployment.subunit."EJBTEST.ear"."EJB.jar".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.subunit."EJBTEST.ear"."EJB.jar".INSTALL: Failed to process phase INSTALL of subdeployment "EJB.jar" of deployment "EJBTEST.ear"

                                  20:03:52,247 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 2) {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.deployment.subunit.\"EJBTEST.ear\".\"EJB.jar\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.subunit.\"EJBTEST.ear\".\"EJB.jar\".INSTALL: Failed to process phase INSTALL of subdeployment \"EJB.jar\" of deployment \"EJBTEST.ear\""},"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.naming.context.java.comp.EJBTEST.EJB.GetListBean.ORBjboss.naming.context.java.comp.EJBTEST.EJB.GetListBeanMissing[jboss.naming.context.java.comp.EJBTEST.EJB.GetListBean.ORBjboss.naming.context.java.comp.EJBTEST.EJB.GetListBean]","jboss.naming.context.java.comp.EJBTEST.EJB.TestEntity.HandleDelegatejboss.naming.context.java.comp.EJBTEST.EJB.TestEntityMissing[jboss.naming.context.java.comp.EJBTEST.EJB.TestEntity.HandleDelegatejboss.naming.context.java.comp.EJBTEST.EJB.TestEntity]","jboss.naming.context.java.comp.EJBTEST.EJB.TestEntity.Validatorjboss.naming.context.java.comp.EJBTEST.EJB.TestEntityMissing[jboss.naming.context.java.comp.EJBTEST.EJB.TestEntity.Validatorjboss.naming.context.java.comp.EJBTEST.EJB.TestEntity]","jboss.naming.context.java.comp.EJBTEST.EJB.TestEntity.ORBjboss.naming.context.java.comp.EJBTEST.EJB.TestEntityMissing[jboss.naming.context.java.comp.EJBTEST.EJB.TestEntity.ORBjboss.naming.context.java.comp.EJBTEST.EJB.TestEntity]","jboss.naming.context.java.comp.EJBTEST.EJB.TestEntity.ValidatorFactoryjboss.naming.context.java.comp.EJBTEST.EJB.TestEntityMissing[jboss.naming.context.java.comp.EJBTEST.EJB.TestEntity.ValidatorFactoryjboss.naming.context.java.comp.EJBTEST.EJB.TestEntity]","jboss.naming.context.java.comp.EJBTEST.EJB.GetListBean.HandleDelegatejboss.naming.context.java.comp.EJBTEST.EJB.GetListBeanMissing[jboss.naming.context.java.comp.EJBTEST.EJB.GetListBean.HandleDelegatejboss.naming.context.java.comp.EJBTEST.EJB.GetListBean]","jboss.naming.context.java.comp.EJBTEST.EJB.GetListBean.Validatorjboss.naming.context.java.comp.EJBTEST.EJB.GetListBeanMissing[jboss.naming.context.java.comp.EJBTEST.EJB.GetListBean.Validatorjboss.naming.context.java.comp.EJBTEST.EJB.GetListBean]","jboss.naming.context.java.comp.EJBTEST.EJB.GetListBean.ValidatorFactoryjboss.naming.context.java.comp.EJBTEST.EJB.GetListBeanMissing[jboss.naming.context.java.comp.EJBTEST.EJB.GetListBean.ValidatorFactoryjboss.naming.context.java.comp.EJBTEST.EJB.GetListBean]"]}}}

                                  • 14. Re: WebLogic 11gからJBossAS7.1.0Finalへの移行で生じる、ドロップダウン項目の並び順について
                                    t-minami

                                    nakamura takuyaさんこんにちは。

                                     

                                     

                                    JBAS014337: Could not resolve corresponding ejbHome for home interface method public abstract java.util.Collection test.TestEntityHome.selectList() throws javax.ejb.FinderException on EJB TestEntity

                                    というエラーです。
                                    もしかして、JBossでは、finderメソッドしかサポートしていない??

                                     

                                     

                                    JBossAS7がサポートする仕様は以下に一覧があります。

                                     

                                    https://docs.jboss.org/author/display/AS7/Getting+Started+Guide#GettingStartedGuide-GettingStartedwithJBossApplicationServer7

                                     

                                    JBoss7.1.0Finalは「Certified Java EE 6 Full Profile」ですので、EJBの仕様に書いてあることをサポートしていないことはないでしょう。

                                     

                                    さて、上記のエラーメッセージを直訳すると

                                    「Homeインタフェース上のメソッドTestEntityHome.selectList()に対応するejbHomeメソッドが見つかりません

                                    という意味になるかと思います。

                                     

                                    http://java.sun.com/products/ejb/docs.html

                                     

                                    EJB2.1の仕様の「9.5 Entity Bean’s Remote Home Interface」を読むと、Homeインタフェースに定義するメソッドは

                                    createメソッド、finderメソッド、homeメソッドと読み取れます。

                                    また「9.5.4 Home Methods」には、homeメソッドの命名条件として「名前がcreate, find, removeで始まらないメソッド名」

                                    と記載してあります。

                                     

                                    つまり、今回nakamura takuyaさんがselectメソッドを想定してTestEntityHome.javaに定義したselectList()メソッドを

                                    EJBコンテナがhomeメソッドだと解釈してしまったため、上記のエラーになったと思われます。

                                     

                                    selectメソッドの実装方法について、もう少し詳細に調べてみてはいかがでしょうか。

                                    1 2 Previous Next