Search code examples
java-ee-6jboss7.xear

class def not found in jboss as 7.X


I have a project structure as

eardirectory.Ear
  lib/
    my-custom-classes.jar
    .....
    .....
  my-custom-ejb.jar
  META-INF/
    ....


//Now I tried to load classes from classloader as
ClassLoader cl = Thread.currentThread().getContextClassLoader();
clazz = Class.forName(my-custom-classes.class1.class.getName(), true, cl);

but this will not work as current thread is of jboss and jboss has not any identification of my-custom-classes.jar.

So my question is how this can be done with jboss? I have to have to load class definition at runtime. Is there any way in "jboss-deployment-structure" I can define how to load classes before deploying EAR?


Solution

  • Follow the steps to create module it should work

    Step-1 In jboss-as-7.1.1.Final/modules/com/company/gyani/main/

                          -module.xml
                          -my-custom-classes.jar
    
    
      Content of  module.xml
    
    
     <?xml version="1.0" encoding="UTF-8"?>
          <module xmlns="urn:jboss:module:1.0" name="com.company.gyani">
        <resources>
          <resource-root path="my-custom-classes.jar"/>
        </resources>
        <dependencies>
          <module name="javax.api"/>
             </dependencies>
          </module>
    

    Step-2 Now IN my.ear/META-INF/

          -jboss-deployment-structure.xml
          -MANIFEST.MF
    

    Content of MANIFEST.MF

        Manifest-Version: 1.0
        Dependencies: com.company.gyani