我有以下情况:
我们的应用程序中使用了逻辑表达式的树结构,并由四类层次结构定义:
Node是一个抽象的超类
OrNode是代表 OR 的 Node 的子类
AndNode是代表 AND 的 Node的子类
Leaf是代表持有一些数据的叶节点的 Node 的子类
现在应该将树结构转移到 Web 服务,该服务将对树进行一些操作(例如,通过收集一些其他信息来评估结果)
该 WS-Operation 的签名可能如下所示:
public TheResult evaluateTree(Node tree);
Run Code Online (Sandbox Code Playgroud)
我们正在使用 JAX-WS 并使用 wsimport 生成 Web 服务类。首先,没有为 OrNode、AndNode 和 Leaf 生成类。所以,我们手动添加了它们。我们将客户端使用的类转换为 wsimport 创建的生成类。接下来,我们要使用转换后的树作为参数调用 Web 服务操作。但是这里发生了一个异常,比如:
javax.xml.ws.soap.SOAPFaultException: javax.xml.bind.UnmarshalException - with linked exception: [javax.xml.bind.UnmarshalException: Unable to create an instance of InterfaceEntities.Node - with linked exception: [java.lang.InstantiationException]]
Run Code Online (Sandbox Code Playgroud)
以下是我们添加的 Wrapper 类和生成的类:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "OrNode")
public class OrNode
extends Node
{
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = …Run Code Online (Sandbox Code Playgroud)