我正在使用某些“系统”中的 Web 服务。我已经使用 Apache Axis2 创建了我的 Web 服务客户端。
现在我陷入了一种情况
1)如果我使用基于 Java 控制台的应用程序测试这个客户端,它工作正常
LogonRequestDocument logonRequestDoc = LogonRequestDocument)getTestObject(LogonRequestDocument.class);
这里,LogonRequestDocument
是一个Interface,
getTestObject()
方法实现如下:
public org.apache.xmlbeans.XmlObject getTestObject(java.lang.Class type) throws java.lang.Exception {
java.lang.reflect.Method creatorMethod = null;
if (org.apache.xmlbeans.XmlObject.class.isAssignableFrom(type)) {
Class[] declaredClasses = type.getDeclaredClasses();
for (int i = 0; i < declaredClasses.length; i++) {
Class declaredClass = declaredClasses[i];
if (declaredClass.getName().endsWith("$Factory")) {
creatorMethod = declaredClass.getMethod("newInstance", null);
break;
}
}
}
if (creatorMethod != null) {
return (org.apache.xmlbeans.XmlObject) creatorMethod.invoke(null, null);
} else {
throw new java.lang.Exception("Creator not found!");
}
}
在这里,creatorMethod.invoke(null,null)
方法适用于 Java 控制台应用程序,但相同的代码在 Web 应用程序中使用时会引发异常。
我想知道使用 Axis2 的 Java 中的控制台和 Web 应用程序之间是否有任何区别。
使用控制台应用程序,这getTestObj()
可以正常工作,并且不会给出任何异常,但是当在 Web 应用程序中使用相同的代码时,ExceptionInInitializerError
- 如果此方法引发的初始化失败,则会发生此异常。
我需要帮助以正确实施准备和使用 Web 服务。