2012-11-06 78 views
1

当我在JBoss配置文件的/ lib中放入某些jar集时,我的应用程序可以使用http客户端(commons-httpclient-3.1)连接到后端服务器,但是当我放置相同应用程序库中的一组jar(web-inf/lib),然后应用程序抛出空指针异常。要求是将这些罐放入Web-Inf/lib中。集合罐子是:JBOSS类加载问题

  1. 公理API-1.2.7.jar
  2. 公理IMPL-1.2.7.jar
  3. Axis2的内核-1.4.1.jar
  4. bcmail- jdk14-130.jar
  5. bcprov-jdk14-130.jar
  6. bctsp-jdk14-130.jar
  7. 公地httpclient的-3.1.jar

的堆栈跟踪失败的情况如下:

Caused by: java.lang.NullPointerException 
    at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:721) 
    at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361) 
    at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387) 
    at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171) 
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) 
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346) 
    at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:542) 
    at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:189) 
    at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75) 
    at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:371) 
    at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:209) 
    at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:448) 
    at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:401) 
    at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228) 
    at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163) 

请帮助我们如何才能解决这个问题。 Regards,

+0

你能确认你正在使用哪个版本的java吗? – Augusto

+0

1.6.0.31在unix机器和JBOSS 5.1 EAP – Harshit

回答

0

将axis2 jars放入JBoss配置文件lib之后,NPE问题就解决了。在jar的可兼容性和重复的jar中存在一些问题,但无法弄清楚。

无论如何,通过使用JBoss配置文件库而不是应用程序库来解决问题。

0

我不确定这是否是唯一的问题,但肯定库bcprov-jdk14-130.jarbctsp-jdk14-130.jar不适用于java 1.4。您需要使用Java 1.5兼容版本;请点击此处下载:http://www.bouncycastle.org/latest_releases.html

的NPE被抛出这个代码httpclient,广告

socket.setTcpNoDelay(this.params.getTcpNoDelay()); 

而且我觉得问题是,插座为空(这可能是使用充气城堡的版本错误的结果)。从我记得,但我可能是错的,http客户端确保所有必需的参数都设置在HttpConnectionParams中,所以我不认为this.params.getTcpNoDelay()正在抛出NPE。

我建议你设置你的IDE在这种情况下做远程调试。我相信你会发现它非常有用。

+0

我们使用了远程调试,发现这个套接字确实是空的,因为它出现了npe – Harshit

+0

即使在使用最新的jar之后,我也得到了与上面相同的异常。请帮忙 – Harshit

+0

对不起,不好意思,我不确定可能是什么原因。我会验证你的类路径中没有多于一个commons-httpclient库。 – Augusto