我正在使用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] 删除。
我来说两句