0

我有一个项目结构

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);

但这不起作用,因为当前线程是 jboss 并且 jboss 没有 my-custom-classes.jar 的任何标识。

所以我的问题是如何用 jboss 做到这一点?我必须在运行时加载类定义。在“jboss-deployment-structure”中有什么方法可以在部署 EAR 之前定义如何加载类?

4

2 回答 2

1

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
于 2013-02-05T11:57:06.063 回答
0

您需要使用 JBoss AS7 提供的模块概念。

在这里,您将您的 classes/jars/property 文件配置为模块,并且这些在服务器范围内启动 JBoss 时加载,并且可以被任何依赖于该模块的已部署应用程序访问。

通读如何配置模块

于 2013-02-04T12:09:33.387 回答