2016-02-02 40 views
1

我正在将一个ear(myear.ear)应用程序部署到WildFly 9.0.2。耳朵包含一个耳机模块,我们称它为myjar.jar。引用从JBoss模块包装在耳朵中的类

此外,我有一个外部自定义JBoss模块。从该模块中我需要(不必介意原因)调用myjar.jar中打包的类。

它甚至有可能?

这是JBoss的模块module.xml的样子:

<module xmlns="urn:jboss:module:1.1" name="path.to.module.dir"> 
    <resources> 
     <resource-root path="..."/> 
    </resources> 
    <dependencies> 
     <module name="deployment.myear.ear.myjar.jar" /> 
    </dependencies> 
</module> 

在情况下,我可以解决包装在从自定义模块耳朵罐子,我应该怎么指定模块名称。以上给出了以下错误:

Caused by: org.jboss.modules.ModuleLoadError: deployment.myear.ear.myjar.jar:main 
    at org.jboss.modules.ModuleLoadException.toError(ModuleLoadException.java:74) 
    at org.jboss.modules.Module.getPathsUnchecked(Module.java:1384) 
    at org.jboss.modules.Module.loadModuleClass(Module.java:555) 
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:197) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:455) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:404) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:385) 
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:130) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760) 
    at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:353) 
    at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:432) 
    at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:269) 
    at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:77) 
    at org.jboss.modules.Module.loadModuleClass(Module.java:560) 
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:197) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:455) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:404) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:385) 
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:130) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
+1

没有,这是不可能的,依赖方能以另一种方式去部署nt - >静态模块。 – ctomc

回答

0

不可能。耳朵只能依靠模块,而不是反之亦然

0

在模块中包含外部jar并通过模块类加载器加载其类的方法是将其引用为外部资源(假设它在指定位置存在:

<sub-deployment name="myjar.jar"> 
    <dependencies> 
     ... 
    </dependencies> 
    <resources> 
     <resource-root path="../../../modules/path/to/resource/jar" /> 
    </resources> 
</sub-deployment> 

的传球是相对的(这里的模块目录下的某个地方)。

然而,部署(和子部署)之间的依赖关系是可能的。