0

我正在使用某些“系统”中的 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 服务。

4

0 回答 0