java中axis2-1.6.2中的Web服务客户端实现

时间:2013-10-17 12:22:00

标签: java web-services

我已经在java中的axis2-1.6.2中实现了webservice客户端,当我第一次调用时,我得到了响应,并且随后第二次出现以下错误

java.lang.NullPointerException
 at org.apache.axis2.client.OperationClient.prepareMessageContext(OperationClient.java:293)
        at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:180)
        at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
 at org.apache.axis2.ccws.CustomerCareServiceStub.subscriberRetrieveLite(CustomerCareServiceStub.java:2380)
        at Prepost.SubscriberRetrieveBalance.subscriberRetrieveLite(SubscriberRetrieveBalance.java:111)
        at Prepost.CheckUser.doGet(CheckUser.java:149)

这是API实现类构造函数,它为所有请求设置唯一参数

public SubscriberRetrieveBalance(String url, String strCON_TimeOut, String strSO_TimeOut) {
    try {
        this.url = url;
        stub = new CustomerCareServiceStub(url);
        ServiceClient sClient = stub._getServiceClient();
        Options options = sClient.getOptions();
        options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, Constants.VALUE_TRUE);
        options.setProperty(AddressingConstants.WS_ADDRESSING_VERSION, AddressingConstants.Submission.WSA_NAMESPACE);
        //options.setTimeOutInMilliSeconds(2000);
        TransportInDescription transportIn = new TransportInDescription("HTTP");
        options.setTransportIn(transportIn);
        options.setProperty(HTTPConstants.SO_TIMEOUT, Integer.parseInt(strSO_TimeOut));
        options.setProperty(HTTPConstants.CONNECTION_TIMEOUT, Integer.parseInt(strCON_TimeOut));
        sClient.setOptions(options);
    } catch (Exception e) {
        if (e.getMessage().equals("Can not find the external id")) {
            System.out.println("Exception ::" + e.getMessage());
        }
    }
}

并在servlet中调用它并且为了性能问题我为不同的2状态(url)创建了这个类的对象,并在第一个请求到达各个状态然后创建新对象并使用该对象时将这些对象保存到hashmap随后对该州的请求

SubscriberRetrieveBalance objBal = null;
            BalanceBean bal = new BalanceBean();
            if (mapObj.isEmpty() || (mapObj.get(strIP) == null)) {

                objBal = new SubscriberRetrieveBalance(url, strCON_TimeOut, strSO_TimeOut);
                mapObj.put(strIP, objBal);
            } else {

                objBal = mapObj.get(strIP);
            }
            bal = objBal.subscriberRetrieveLite(strMsisdn, userId, token, strCircleId, strCircleName, strSessionId, strDlgId);

第一次它给出响应,然后为属于该状态的所有请求提供nullpointer异常和上面的错误

此代码与axis2-1.5

一起正常工作

每次需要API实现类

的新对象时,axis2-1.6.2版本是否有任何变化

请建议。

0 个答案:

没有答案