繁体   English   中英

方法参数的继承无效

[英]Inheritance on method parameters not working

我有一个包含以下方法和类的测试Web服务,

方法

public String addPerson(Person p) {
if(p instanceof Employee) {
return "Employee"; 
}
return "Person";
}

注意:方法使用@WebMethod和@WebParam批注进行注释,使用@WebService的Web服务也进行注释。

班级

Class Person {
public String name;
}

Class Employee extends Person{
public int employeeNo;
}

观察结果

  1. 尽管客户端发送了序列化的Employee对象,但Web服务始终将其视为Person对象。 我已经使用萤火虫工具检查了客户端上的肥皂包,有效负载中包含员工编号。 我还检查了服务器上的MESSAGE MESSAGE及其未显示员工编号属性。

  1. 这是预期的行为吗? 我希望不是。
  2. 没有编写自定义SOAP解码器,有什么办法可以使这项工作生效?

我认为这应该是这样。 因为在发送数据时,继承信息将丢失,并且继承信息只会将数据解码回在您的情况下Web服务方法中声明的类型给Person对象。

深入研究之后,我们发现问题出在客户端,该客户端生成了在这种情况下不起作用的SOAP数据包。 客户端应该在与操作相对应的元素中放入派生对象(雇员)类型的名称,但是我们正在使用的客户端没有这样做,因为其中“ javax.xml.bind.UnmarshalException:无法创建...的实例”的报告。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM