我们试图从jboss4.2.3迁移到wildfly,当我们试图将战争从jboss4.2.3到wildfly11时,我们得到以下例外:
Caused by: org.apache.commons.discovery.DiscoveryException: No implementation defined for org.apache.commons.logging.LogFactory
at org.apache.commons.discovery.tools.DiscoverClass.find(DiscoverClass.java:404)
at org.apache.commons.discovery.tools.DiscoverClass.newInstance(DiscoverClass.java:579)
at org.apache.commons.discovery.tools.DiscoverSingleton.find(DiscoverSingleton.java:418)
at org.apache.commons.discovery.tools.DiscoverSingleton.find(DiscoverSingleton.java:378)
at org.apache.axis.components.logger.LogFactory$1.run(LogFactory.java:45)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.axis.components.logger.LogFactory.getLogFactory(LogFactory.java:41)
at org.apache.axis.components.logger.LogFactory.<clinit>(LogFactory.java:33)
... 28 more
module.xml
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.ca.pamsc.httpclient">
<resources>
<resource-root path="commons-httpclient-3.1.jar" />
</resources>
<dependencies>
<module name="org.apache.commons.logging" />
</dependencies>
</module>
战争结构:
acem.war
└───WEB-INF
│ faces-config.xml
│ filebrowse.tld
│ jboss-deployment-structure.xml
│ jboss-web.xml
│ jsftaglib.tld
│ userbrowse.tld
│ web.xml
│
└───lib
acem.jar
axis.jar
commons-beanutils-1.7.0.jar
commons-digester-1.6.jar
commons-discovery-0.2.jar
commons-el-1.0.jar
commons-fileupload-1.2.jar
commons-io-1.3.1.jar
commons-lang-2.6.jar
cpchart.jar
jaxb-api.jar
jaxb-impl.jar
jaxb1-impl.jar
jsr173_1.0_api.jar
jstl.jar
myfaces-api.jar
myfaces-impl.jar
namespace.jar
openviz2.jar
relaxngDatatype.jar
standard.jar
tomahawk-1.1.5.jar
wcom.jar
xsdlib.jar
更新1:我尝试将Apache Commons记录JAR文件手动添加到模块文件夹中,但是在这种情况下,它给出以下错误:
Caused by: org.apache.commons.discovery.DiscoveryException: Class org.apache.commons.logging.impl.LogFactoryImpl does not implement org.apache.commons.logging.LogFactory
at org.apache.commons.discovery.tools.ClassUtils.verifyAncestory(ClassUtils.java:180)
at org.apache.commons.discovery.tools.SPInterface.verifyAncestory(SPInterface.java:201)
module.xml
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.ca.pamsc.httpclient">
<resources>
<resource-root path="commons-httpclient-3.1.jar"/>
<resource-root path="commons-logging-1.0.4.jar"/>
</resources>
</module>
update2:通过参考以下线程创建了common-logging.properties文件,但仍会获取此错误
Caused by: org.apache.commons.discovery.DiscoveryException: Class org.apache.commons.logging.impl.LogFactoryImpl does not implement org.apache.commons.logging.LogFactory
Lotus注释6.5使用Axis API的Javaagent给出了"未针对org.apache.commons.logging.logfactory&quot"&quort&quort&quot'
这是commons-logging-jboss-logmanager
项目中的一个"错误",该项目已固定在1.0.3.final中。问题是有些项目似乎重新包装commons-logging
并添加一个默认commons-logging:commons-logging
JAR似乎没有的META-INF/services/org.apache.commons.logging.LogFactory
文件。
应该安全下载org.jboss.logmanager:commons-logging-jboss-logmanager:1.0.3.Final
并更换模块。您只需要将下载的库放在$JBOSS_HOME/modules/system/layers/base/org/jboss/logmanager/commons/logging/main/
中并编辑module.xml
即可指向新版本。