0 Replies Latest reply on Dec 20, 2005 10:29 PM by hakucho

    When exactly does JBoss load any classes referenced by EJBs?

    hakucho

      I've found a quirk when deploying an EJB. If a class appears in a method signature, JBoss loads that class at deploy time, i.e. the bean will fail to deploy if the class can't be found. For example, if the Foo class isn't available, a bean containing this method won't deploy, even though the method is private:

      private void doFoo(Foo foo) {
       // do foo stuff
       }


      But if the class is only used within the method, then JBoss only seems to load the class when the method is invoked. So the following code does allow the bean to deploy, even if the Foo class isn't available yet:

      private void doFoo(Object o) {
       Foo foo = (Foo) o;
       // do foo stuff
       }


      And as long as the Foo class gets loaded before the method is invoked (e.g. when the EJB containing the Foo class is deployed), everything works fine.

      I've observed the above while using JBoss 3.2.5 and Java 1.5.0_04 on WinXP Pro. Can someone please tell me:
      - is this a JBoss thing or a Java thing?
      - can I rely on it?
      - is it likely to change in a future version?

      The background is that I have an EJB JAR file that references classes in an EAR file. I can't guarantee the order in which JBoss deploys these two artifacts when it starts up, so I'm keen to know if the workaround I've described above will continue to work.