1

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

  1. axiom-api-1.2.7.jar
  2. axiom-impl-1.2.7.jar
  3. axis2-kernel-1.4.1.jar
  4. bcmail-jdk14-130.jar
  5. bcprov-jdk14-130.jar
  6. bctsp-jdk14-130.jar
  7. commons-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)

请帮助我们如何解决这个问题。问候,

4

2 回答 2

0

我不确定这是否是您唯一的问题,但可以肯定的是库bcprov-jdk14-130.jar并且bctsp-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 以进行远程调试。我相信你会发现它非常有用。

于 2012-11-06T14:08:06.867 回答
0

将axis2 jar 放入JBoss 配置文件库后,NPE 问题得到解决。jar 兼容性和重复的 jar 确实存在一些问题,但无法解决。

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

于 2013-10-28T10:00:14.647 回答