1 2 Previous Next 20 Replies Latest reply: May 15, 2012 8:56 PM by nakamura takuya Go to original post RSS
      • 15. Re: WebLogic 11gからJBossAS7.1.0Finalへの移行で生じる、ドロップダウン項目の並び順について
        nakamura takuya Newbie

        Takayoshi Kimura 様

         

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

        一番ストレートな修正方法はCMPを利用することです。仕様で順序が保証されないように見えるのはBMPだけであり、CMPであればEJBQLにORDER BYがあるので、順序を保証する結果がとれるはずです。

         

        どうしてもBMPのままにしたい、という場合は取得した結果を自分で並べ替えてArrayListなどにご希望の順序で詰め替える、という処理を書けば良いでしょう。

         

         

        上記の方法を、当方の資産の既存の作りを見ながら、影響範囲を考慮し検討したいと思います。

         

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

          Minami Takayuki 様

           

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

           

           

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

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

           

           

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

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

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

            続報です。

             

            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]"]}}}

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

              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メソッドの実装方法について、もう少し詳細に調べてみてはいかがでしょうか。

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

                minamiさん

                 

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

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

                 

                EJB仕様ですと、selectメソッドというものは、定義されていないのですね。

                selectメソッドについては、WebLogicでは、普通に開発ガイドにかかれていたので、普通にあるものだと

                思ってしまいました。

                 

                それで、その後、Homeメソッドを実装することができたような状態になりましたの。その結果

                どうも、finderメソッドとhomeメソッドの動きが微妙に異なっている感じです。

                 

                finderメソッドの場合

                 

                $Proxy9999

                9999は不定。

                 

                homeメソッドの場合

                入れた時の内容のまま

                 

                finderメソッドと、homeメソッドで、通り道が変わりました。

                結果、並び順が正しくなって帰ってきた感じです。

                 

                取り急ぎ、EARとスタックトレースを添付いたします。

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

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

                  中村です。



                  先日、当件を機能改善要望ということでFuture requestsしたところ

                  https://issues.jboss.org/browse/AS7-4810

                   

                  投稿する少し前に別の方が同じことで要望を出されていました

                  https://issues.jboss.org/browse/AS7-4772

                  こちらがOpenされました。


                  ただ、リリースの予定は今のところ無いようなので、今回はHomeメソッドで対応ができそうなので、そちらで対応を考えております。

                   

                  しばらくはリリースされないと思いますが、JBossEJBの改修がされるのではないかと思います。

                   

                   

                  Minami Takayuki 様
                  Takayoshi Kimura 様
                  フォローいただきありがとうございました。

                  1 2 Previous Next