Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建和使用池客户端存根时ServiceClient.cleanupTransport()的axis2 NullPointerException_Java_Multithreading_Axis2 - Fatal编程技术网

Java 创建和使用池客户端存根时ServiceClient.cleanupTransport()的axis2 NullPointerException

Java 创建和使用池客户端存根时ServiceClient.cleanupTransport()的axis2 NullPointerException,java,multithreading,axis2,Java,Multithreading,Axis2,我使用axis2 1.5.4生成存根客户端以发送soap消息,因为我知道axis2不是线程安全的,所以我使用一个池来存储存根实例。每个线程将在使用前从池中借用存根对象,并在使用后将其返回到池中。但是,当通信量很大(400个线程)时,总会有一些NPE异常,看起来虽然实例已经返回到池中,但它仍然被其他线程使用。异常stacktrace如下所示: java.lang.NullPointerException: null at org.apache.axis2.client.Servic

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

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)
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);
    }
我们在创建存根时也使用了缓存http连接,存根客户端代码如下:

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)
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.6版本说明了这一点。因此,一个可能的解决方案可能是升级