JBOSS AS 7自定义类加载器不工作

JBOSS AS 7自定义类加载器不工作,jboss,osgi,jboss7.x,classloader,Jboss,Osgi,Jboss7.x,Classloader,我们最近转向JBossAS7,因为它基于OSGi,所有模块都是隔离的,所以我们遇到了一个问题 我们的一个JAR由URLclassloader从JBOSS模块之外的指定目录加载 Class[] parameters = new Class[]{URL.class}; URLClassLoader sysloader = (URLClassLoader)ClassLoader.getSystemClassLoader(); Class sysclass = URLClassLoader.class;

我们最近转向JBossAS7,因为它基于OSGi,所有模块都是隔离的,所以我们遇到了一个问题

我们的一个JAR由URLclassloader从JBOSS模块之外的指定目录加载

Class[] parameters = new Class[]{URL.class};
URLClassLoader sysloader = (URLClassLoader)ClassLoader.getSystemClassLoader();
Class sysclass = URLClassLoader.class;
Method method = sysclass.getDeclaredMethod("addURL",parameters);
method.setAccessible(true);
method.invoke(sysloader,new Object[]{ flist[i].toURI().toURL()});
flist[i]包含要加载的完整路径的jar

在as 7之后,这个类以前是工作的,现在没有被加载

我知道您可以将这些jar添加到modules文件夹并指定依赖项。但我们希望这能奏效


有解决方案吗?

正如其他人所说,JBossAS7不是基于OSGi的,它使用自己的模块系统()。您所做的(类加载器上的反射)是违反任何规则的,完全不受支持,并且只是偶然工作的。你应该做到以下几点:

  • JAR的JBoss模块(链接用于数据库模块,但应可用于任何JAR)
  • 用于引用该模块

正如其他人所说,JBossAS7不是基于OSGi的,它使用自己的模块系统()。您所做的(类加载器上的反射)是违反任何规则的,完全不受支持,并且只是偶然工作的。你应该做到以下几点:

  • JAR的JBoss模块(链接用于数据库模块,但应可用于任何JAR)
  • 用于引用该模块

FWIW JBoss AS 7不基于OSGi。它使用JBoss模块进行隔离,但它不是OSGi。然而,它确实支持OSGi。即使如此,由于这种模块化,我也遇到了一个问题。有没有办法克服这个问题?或者什么才是正确的方法?我投了赞成票,因为我也有同样的问题@为什么这是个坏主意?我们有一个框架web应用程序,支持通过模块JAR添加新功能。我们从外部目录加载新模块,而没有使用URLClassLoader重新部署web应用程序。现在用AS7我做不到。任何能够无缝工作一两年的东西都不是一个坏主意。FWIW JBoss AS 7不是基于OSGi的。它使用JBoss模块进行隔离,但它不是OSGi。然而,它确实支持OSGi。即使如此,由于这种模块化,我也遇到了一个问题。有没有办法克服这个问题?或者什么才是正确的方法?我投了赞成票,因为我也有同样的问题@为什么这是个坏主意?我们有一个框架web应用程序,支持通过模块JAR添加新功能。我们从外部目录加载新模块,而没有使用URLClassLoader重新部署web应用程序。现在用AS7我做不到。任何能在一两年内天衣无缝地工作的事情都不是一个坏主意。