我们最近已从 jboss 6.1 eap 迁移到 6.4 eap ,但遇到了类加载问题。
在我的项目库中我们需要使用apache httpcore 4.4.1 ,但 apache httpcore 4.3.3 包含在 6.4。中我们使用 jboss 6.1 之前不是问题,因为resteasy-jaxrs module.xml没有导出httpcore库。
现在有了jboss 6.4,我们得到了例外:
Caused by: java.lang.NoSuchMethodError: org.apache.http.util.Asserts.check(ZLjava/lang/String;Ljava/lang/Object;)V
因为运行时我的项目是使用jboss提供的jar,而且没有这个方法需要签名。
现在我想强制我的应用程序不使用jboss jar并使用web-inf / lib文件夹中提供的jar。
我试图通过jboss-deployment-structure.xml排除这个问题,但不管怎么说它不起作用,而且它仍然只使用jboss的jar。
下面的是jboss-deployment-structure.xml文件的快照。
<deployment>
<exclusions>
<module name="org.apache.httpcomponents" />
</exclusions>
<dependencies>
module name="org.apache.httpcomponents" />
</dependencies>
</deployment>
有人可以帮我解决这里缺少的东西,或者有什么替代方案......
答案 0 :(得分:3)
由于您使用的是JBoss EAP,因此您可以为EAP 6.4应用CP07补丁(因此您的版本将是JBoss EAP 6.4.7),此问题已得到解决。我强烈建议使用CP07补丁。
或者,您可以在$output = file_get_contents('http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME']).'/index.php');
$file = fopen('new_text.txt', 'w');
fwrite($file, $output);
fclose($file);
中设置<module name="org.apache.httpcomponents" export="false"/>
。
但是,我建议将补丁应用为推荐的解决方案。这样您就不会修改产品附带的配置。
答案 1 :(得分:1)
要解决此问题,我们可以采取以下方法之一。
更改$ JBOSS_MODULES \ org \ jboss \ resteasy \ resteasy-jaxrs \ main \ module.xml suggested作为CoolBeans。
如果您无法控制(或未授权)更新Jboss服务器配置,则可以使用以下选项。
在 jboss-deployment-structure.xml 文件中添加以下xml配置
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclude-subsystems>
<subsystem name="resteasy"/>
<subsystem name="jaxrs"/>
</exclude-subsystems>
<!-- Exclusions allow you to prevent the server from automatically adding
some dependencies -->
<exclusions>
<module name="javax.ws.rs.api"/>
<module name="org.jboss.as.jaxrs"/>
<module name="org.jboss.resteasy.resteasy-atom-provider" />
<module name="org.jboss.resteasy.resteasy-cdi" />
<module name="org.jboss.resteasy.resteasy-jaxrs" />
<module name="org.jboss.resteasy.resteasy-jaxb-provider" />
<module name="org.jboss.resteasy.resteasy-jackson-provider" />
<module name="org.jboss.resteasy.resteasy-jackson2-provider" />
<module name="org.jboss.resteasy.resteasy-jsapi" />
<module name="org.jboss.resteasy.resteasy-multipart-provider" />
<module name="org.jboss.resteasy.async-http-servlet-30" />
<module name="org.jboss.resteasy.resteasy-hibernatevalidator-provider" />
<module name="org.jboss.resteasy.resteasy-jettison-provider" />
<module name="org.jboss.resteasy.resteasy-spring" />
<module name="org.jboss.resteasy.resteasy-yaml-provider" />
</exclusions>
<dependencies>
</dependencies>
</deployment>
</jboss-deployment-structure>
这对我有用,希望这适用于其他