来自本地模块加载器@44f218的[Module“org.jboss.as.jmx:main”中的Jboss 6.4EAP ClassNotFoundException(finder:local module finder

时间:2017-06-07 11:42:57

标签: java jboss ear documentum

我正在将一个EAR文件从JBoss 5迁移到Jboss EAP 6.4。 我添加了一个自定义模块com.documentum.dfc,其中包含我的EAR所需的所有类。 奇怪的是,我清楚地看到一些正在加载的类(com.documentum ...),但它仍然无法找到在与成功实例化的类相同的jar文件中提供的Factory类。 我想这与通过另一个类加载器加载的Factory机制有关,或者在这个特定的类中查找错误位置的类加载器。它应该在com.documentum.dfc模块中搜索它,但它似乎在org.jboss.as.jmx中搜索:main

知道这里出了什么问题吗?

Caused by: javax.xml.parsers.FactoryConfigurationError: Provider com.documentum.xml.jaxp.DfDocumentBuilderFactoryImpl not found
    at com.documentum.xml.jaxp.DfDocumentBuilderFactory.newInstance(DfDocumentBuilderFactory.java:27)
    at com.documentum.xml.common.DfParserFactory.<init>(DfParserFactory.java:40)
    at com.documentum.xml.common.DfParserFactory.getInstance(DfParserFactory.java:62)
    at com.documentum.fc.internal.xml.XMLUtilsFactory.getParserFactory(XMLUtilsFactory.java:17)
    at com.documentum.fc.client.impl.bof.cache.CacheManifest.initCacheContentFile(CacheManifest.java:534)
    at com.documentum.fc.client.impl.bof.cache.CacheManifest.init(CacheManifest.java:45)
    at com.documentum.fc.client.impl.bof.cache.DefaultLocalAccessor.init(DefaultLocalAccessor.java:23)
    at com.documentum.fc.client.impl.bof.cache.ClassCacheManager.initDocbase(ClassCacheManager.java:597)
    at com.documentum.fc.client.impl.bof.cache.ClassCacheManager.initialDiscovery(ClassCacheManager.java:588)
    at com.documentum.fc.client.impl.bof.cache.ClassCacheManager.<init>(ClassCacheManager.java:440)
    at com.documentum.fc.client.impl.bof.cache.ClassCacheManager.getInstance(ClassCacheManager.java:52)
    at com.documentum.fc.client.impl.bof.classmgmt.ModuleManager.init(ModuleManager.java:317)
    at com.documentum.fc.client.impl.bof.classmgmt.ModuleManager.getInstance(ModuleManager.java:43)
    at com.documentum.fc.client.security.impl.DfcIdentityPublisher.<init>(DfcIdentityPublisher.java:44)
    at com.documentum.fc.client.security.internal.RegistrationMgr.register(RegistrationMgr.java:34)
    at com.documentum.fc.impl.RuntimeContext.<clinit>(RuntimeContext.java:195)
    at com.documentum.fc.client.DfClient.<clinit>(DfClient.java:772)
    at com.documentum.com.DfClientX.getLocalClient(DfClientX.java:43)
    at nl.enexis.service.mbean.dctm.DctmSessionManager.init(DctmSessionManager.java:43)
    at nl.enexis.service.mbean.dctm.DctmSessionManager.<init>(DctmSessionManager.java:34)
    at nl.enexis.service.mbean.dctm.DctmConnectionService.getSessionManager(DctmConnectionService.java:33)
    at nl.enexis.service.mbean.dctm.DctmConnectionService.startService(DctmConnectionService.java:58)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:258)
    at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:165)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalCreate(ServiceMBeanSupport.java:236)
    at org.jboss.system.ServiceMBeanSupport.create(ServiceMBeanSupport.java:161)
    at org.jboss.system.ServiceMBeanSupport.postRegister(ServiceMBeanSupport.java:377)
    at com.sun.jmx.mbeanserver.MBeanSupport.postRegister(MBeanSupport.java:182) [rt.jar:1.7.0_80]
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.postRegister(DefaultMBeanServerInterceptor.java:1024) [rt.jar:1.7.0_80]
    ... 12 more
Caused by: java.lang.ClassNotFoundException: com.documentum.xml.jaxp.DfDocumentBuilderFactoryImpl from [Module "org.jboss.as.jmx:main" from local module loader @44f218 (finder: local module finder @724357 (roots: d:\Programs\JBossEAP-6.4.0\modules,d:\Programs\JBossEAP-6.4.0\modules\system\layers\base\.overlays\layer-base-jboss-eap-6.4.14.CP,d:\Programs\JBossEAP-6.4.0\modules\system\layers\base))]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:211) [jboss-modules.jar:1.3.8.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459) [jboss-modules.jar:1.3.8.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408) [jboss-modules.jar:1.3.8.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389) [jboss-modules.jar:1.3.8.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134) [jboss-modules.jar:1.3.8.Final-redhat-1]
    at com.documentum.xml.jaxp.DfFactoryFinder.newInstance(DfFactoryFinder.java:135)
    at com.documentum.xml.jaxp.DfFactoryFinder.find(DfFactoryFinder.java:273)
    at com.documentum.xml.jaxp.DfDocumentBuilderFactory.newInstance(DfDocumentBuilderFactory.java:19)
    ... 40 more

我的EAR的结构:

-lib
-- several libs
-META-INF
--application.xml
--beans.xml
--jboss-classloading.xml
--jboss-deployment-structure.xml
-enexisServiceCommonsEJB-1.0.0.jar

的JBoss部署-structure.xml:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
    <!--
    <ear-subdeployments-isolated>false</ear-subdeployments-isolated>
    -->
    <deployment>
        <dependencies>
            <module name="com.documentum.dfc" export="true"/>
            <!--
            <module name="org.jboss.as.ejb3" export="true"/>
            <module name="org.jboss.as.system-jmx" export="true"/>
            <module name="org.jboss.as.jmx" export="true"/>
            -->
        </dependencies>
    </deployment>
  <sub-deployment name="enexisServiceCommonsEJB-1.0.0.jar">

    <dependencies>
            <module name="com.documentum.dfc" export="true"/>
<!--
            <module name="org.jboss.as.ejb3" export="true"/>
            <module name="org.jboss.as.system-jmx" export="true"/>
            <module name="org.jboss.as.jmx" export="true"/>
-->
     </dependencies>
    <local-last value="true" />
  </sub-deployment>  

</jboss-deployment-structure>

1 个答案:

答案 0 :(得分:0)

为了在Jboss中使用Tibco EMS队列/主题,我们需要在jboss中配置和部署Generic JMS资源适配器。按照以下步骤在JBOSS7或Jboss eap 6.4中配置JMS资源适配器:

  • 步骤1:在jboss安装中创建以下文件夹结构dir \ modules \ com \ tibco \ tibjms \ main 将tibjms.jar和tibcrypt.jar复制到\ modules \ com \ tibco \ tibjms \ main和 使用以下内容创建module.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.0" name="com.tibco.jms">
        <resources> 
            <resource-root path="tibcrypt.jar"/>
            <resource-root path="tibjms.jar"/>
            <!-- Insert resources here -->
        </resources>
        <dependencies>
            <!-- Insert dependencies here -->
            <module name="javax.api"/>
            <module name="javax.jms.api"/>
        </dependencies>    
    </module>
    
  • 步骤2:打开\ jboss-eap-6.4 \ modules \ system \ layers \ base \ org \ jboss \ _jts \ main \ module.xml和\ jboss-eap-6.4 \ modules \ system \ layers \ base \ org \ jboss \ as \ ee \ main \ module.xml在两个位置添加以下依赖项

    <dependencies>      
        <module name="com.tibco.tibjms"/> 
    </dependencies>
    
  • 步骤3:打开standalone_XXX.xml(使用的文件)(\ standalone \ configuration \ standalone.xml)并在

    中添加以下行
    <mdb>
        <resource-adapter-ref resource-adapter-name="genericra.rar"/>   
        <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/> 
    </mdb>
    
  • 步骤4:重启服务器,看看是否解决了异常。通过上述步骤,我的问题得到解决。一切顺利。