Java JAXWS方法参数数据类型赢得';不变
我发布了两个端点Java JAXWS方法参数数据类型赢得';不变,java,soap,jax-ws,Java,Soap,Jax Ws,我发布了两个端点 Endpoint ep = Endpoint.create(new HotelWS()); ep.publish("http://127.0.0.1:1000/ra/hotel"); Endpoint ep1 = Endpoint.create(new RoomTypeWS()); ep1.publish("http://127.0.0.1:1000/ra/roomtype"); 这是RoomTypeWS类中的
Endpoint ep = Endpoint.create(new HotelWS());
ep.publish("http://127.0.0.1:1000/ra/hotel");
Endpoint ep1 = Endpoint.create(new RoomTypeWS());
ep1.publish("http://127.0.0.1:1000/ra/roomtype");
这是RoomTypeWS类中的方法
@WebMethod
public boolean add(RoomType roomType) {
return super.$add(roomType);
}
这是HotelWS类中的方法
@WebMethod
public boolean add(Hotel obj) {
return super.$add(obj);
}
但在客户端应用程序中,这两种方法的参数类型都是Hotel。但是如果我只发布一个端点,那么它就可以正常工作
这就是在客户端应用程序中生成RoomTypeWS.add和HotelWS.add方法的方式
public interface RoomTypeWS {
/**
*
* @param arg0
* @return
* returns boolean
*/
@WebMethod
@WebResult(targetNamespace = "")
@RequestWrapper(localName = "add", targetNamespace = "http://services/", className = "net.codegen.reservationagentrestservice.soap_services.Add")
@ResponseWrapper(localName = "addResponse", targetNamespace = "http://services/", className = "net.codegen.reservationagentrestservice.soap_services.AddResponse")
@Action(input = "http://services/RoomTypeWS/addRequest", output = "http://services/RoomTypeWS/addResponse")
public boolean add(
@WebParam(name = "arg0", targetNamespace = "")
Hotel arg0);
}
public interface HotelWS {
/**
*
* @param arg0
* @return
* returns boolean
*/
@WebMethod
@WebResult(targetNamespace = "")
@RequestWrapper(localName = "add", targetNamespace = "http://services/", className = "net.codegen.reservationagentrestservice.soap_services.Add")
@ResponseWrapper(localName = "addResponse", targetNamespace = "http://services/", className = "net.codegen.reservationagentrestservice.soap_services.AddResponse")
@Action(input = "http://services/HotelWS/addRequest", output = "http://services/HotelWS/addResponse")
public boolean add(
@WebParam(name = "arg0", targetNamespace = "")
Hotel arg0);
}
数据类型不会改变是什么意思?您是否成功发布了这些终结点?是的,在终结点发布之后。我使用wsimport命令在客户端应用程序中生成了类。如上所示,在RoomTypeWS中,
public boolean add(@webgram(name=“arg0”,targetNamespace=“”)Hotel arg0)代码>应该是@webgram(name=“arg0”,targetNamespace=“”)房间类型arg0)代码>但事实并非如此。这是自上而下的方法,在生成工件类之前,您应该仔细检查您的wsdl,可能只是基于错误的端点生成了类。您还应该发布wsdl/xsd。