axis2 xmlbeans代码毫无例外地停止

摩根船长

我正在使用Axis2和XML bean来设置Web服务客户端。我的代码正在退出我的calculateTest函数,而没有引发异常。如果您在下面查看我的代码,该代码将从“ AuthHeader authHeader = authHeaderDocument.addNewAuthHeader();”行退出。

public class ClientTest {
    private static final int IDLE_CONNECTION_TIME = 0;

    private ServiceStub serviceStub;
    private MultiThreadedHttpConnectionManager connectionManager;

    public ServiceStub getServiceStub() {
        return serviceStub;
    }
    public void setServiceStub(ServiceStub serviceStub) {
        this.serviceStub = serviceStub;
    }

    public static void main(String[] args) {
        try {
System.out.println("STARTING");
            ClientTest a = new ClientTest();
            a.initServiceClient("https://XXXXXXX.asmx?WSDL");                        
            a.calculateTest();
System.out.println("FINISHED");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void initServiceClient(String targetEndpoint) throws Exception {
        try {
            org.apache.axis2.context.ConfigurationContext myConfigContext = org.apache.axis2.context.ConfigurationContextFactory.createDefaultConfigurationContext();
            this.connectionManager  = new MultiThreadedHttpConnectionManager();
            HttpConnectionManagerParams params = new HttpConnectionManagerParams();
            params.setStaleCheckingEnabled(true);
            params.setDefaultMaxConnectionsPerHost(100);
            this.connectionManager.setParams(params);
            HttpClient httpClient = new HttpClient(this.connectionManager);
            myConfigContext.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, httpClient);
            myConfigContext.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, Boolean.TRUE);          

            if(targetEndpoint != null){
                serviceStub = new DACALCServiceStub(myConfigContext,targetEndpoint);
            }else{
                serviceStub = new DACALCServiceStub(myConfigContext);
            }
            ServiceClient sc = serviceStub._getServiceClient();

            Options options = sc.getOptions();
            options.setProperty(HTTPConstants.SO_TIMEOUT, 30000);
            options.setProperty(HTTPConstants.CONNECTION_TIMEOUT, 30000);            
            options.setProperty(HTTPConstants.AUTO_RELEASE_CONNECTION, true);

        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public String calculateTest() throws Exception {
System.out.println("Inside calculateTest");


        String output = null;
        try {
System.out.println("1.");
            String authenticationUsername = "XXXX";
            String authenticationPassword = "XXXX";
            String errorMsg = "";
System.out.println("1a.");

            AuthHeaderDocument authHeaderDocument = AuthHeaderDocument.Factory.newInstance();


System.out.println("1a1.");
            AuthHeader authHeader = authHeaderDocument.addNewAuthHeader();
System.out.println("1a2.");
            authHeader.setUserName(authenticationUsername);
System.out.println("1a3.");
            authHeader.setPassword(authenticationPassword);
System.out.println("1a4.");
            authHeader.setErrorMessage(errorMsg);
System.out.println("1b.");


        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            serviceStub._getServiceClient().cleanupTransport();
            this.connectionManager.closeIdleConnections(IDLE_CONNECTION_TIME);
            return output;
        }
    }
}

我看到的输出是:

STARTING
Inside calculateTest
1.
1a.
FINISHED

没有异常被抛出。为什么代码会在此行静默失败?

摩根船长

我删除了calculateTest中的try / catch,并引发了异常(奇怪的是,通用异常处理程序没有捕获到它)。事实证明,我的资源目录中没有包含一些必需的文件。添加完后,一切正常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章