我正在尝试与一些他们已经定义了消息格式和数据结构的遗留应用程序集成。
现在我们使用 Java 6 通过以下代码发布我们的 Web 服务:
Endpoint.publish(urlString, new NotificationListener());
我的 NotificationListener 服务包含 1 个方法,其定义如下:
@WebService
public class NotificationListener {
@WebMethod(action="notifyStatus111")
@WebResult(name="NotificationResponse")
public NotificationResponse notifyStatus1(@WebParam(name="Notification") Notification Notification)
{
return new NotificationResponse();
}
并使用 wsgen 命令通过以下 ant 命令为 Web 服务生成存根:
<project default="wsgen">
<target name="wsgen" >
<exec executable="wsgen">
<arg line="-cp ./bin -keep -s ./src -d ./bin com.xyz.listener.NotificationListener"/>
</exec>
</target>
</project>
现在的问题是生成的存根以及 wsdl 在输入和输出对象上创建具有方法名称的包装器。
例如生成的id定义如下:
@XmlRootElement(name = "notifyStatus1")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "notifyStatus1")
public class NotifyStatus1 {
@XmlElement(name = "notification", namespace = "")
private com.xyz.listener.notifications.Notification notification;
}
其中通知对象嵌入在 NotifyStatus1 存根中。
然而,遗留应用程序并不期望相同,而是期望 Notification 对象是直接根元素。
他们也可以通过任何方式将通知定义为根,而不是像包装器一样包装在内部并相应地发布我的定义。
非常感谢任何积分帮助。