gpt4 book ai didi

java - 创建和使用池化客户端 stub 时 ServiceClient.cleanupTransport() 的 axis2 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 13:39:03 26 4
gpt4 key购买 nike

我正在使用axis2 1.5.4生成 stub 客户端来发送soap消息,因为我知道axis2不是线程安全的,所以我使用一个池来存储 stub 实例。每个线程在使用前都会从池中借用 stub 对象,并在使用后将其返回到池中。然而,当流量很大时(400个线程),总是会出现一些NPE异常,看起来虽然实例已经返回到池中,但它仍然被其他线程使用。异常堆栈跟踪如下:

java.lang.NullPointerException: null
at org.apache.axis2.client.ServiceClient.cleanupTransport(ServiceClient.java:824)
at com.cmcc.aus.msgadpter.soap.security.SecurityClient.checkToken(SecurityClient.java:355)
at com.cmcc.aus.service.esb.VerifyEaCallingTokenSvc.verifyEaCallingToken(VerifyEaCallingTokenSvc.java:81)
at com.cmcc.aus.msgadpter.rest.VerifyEaCallingTokenRestInterface.postVerifyEaCallingToken(VerifyEaCallingTokenRestInterface.java:38)

我们还在 stub 的创建中使用了缓存的http连接, stub 客户端代码如下:

public SecurityStub(java.lang.String targetEndpoint) throws org.apache.axis2.AxisFault {
this(null,targetEndpoint);
Options options = this._getServiceClient().getOptions();
options.setTimeOutInMilliSeconds(60000);
options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, Boolean.TRUE);

MultiThreadedHttpConnectionManager conmgr = new MultiThreadedHttpConnectionManager();
conmgr.getParams().setDefaultMaxConnectionsPerHost(AusConstants.SECURITY_CLIENT_MAX_CONNECTION_NUM_PER_HOST);
conmgr.getParams().setMaxTotalConnections(AusConstants.SECURITY_CLIENT_MAX_CONNECTION_NUM);
HttpClient client = new HttpClient(conmgr);
options.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, client);
}

谁能给我一个解决方案吗?预先感谢!

最佳答案

1.5 之间的比较分支和1.6有问题的类的分支表明 1.6 版本解释了这一点。因此,一个可能的解决方案就是升级。

关于java - 创建和使用池化客户端 stub 时 ServiceClient.cleanupTransport() 的 axis2 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20990330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com