我使用WSDL编辑器在Eclipse中创建了wsdl文件。我使用CXF(maven插件方式)制作服务器。有一个简单的函数getCities(),我从C#成功调用了它。但是我无法从Java客户端调用它。
@WebResult(name = "out", targetNamespace = "")
@RequestWrapper(localName = "getCities", targetNamespace = "http://www.example.org/BookingServer/", className = "org.example.bookingserver.GetCities")
@ResponseWrapper(localName = "getCitiesResponse", targetNamespace = "http://www.example.org/BookingServer/", className = "org.example.bookingserver.GetCitiesResponse")
@WebMethod(action = "http://www.example.org/BookingServer/getCities")
public java.util.List<org.example.bookingserver.Cities> getCities();
这就是我调用该服务的方式(再次使用Apache-cxf):
QName SERVICE_NAME = new QName("http://www.example.org/BookingServer/", "BookingServer");
URL wsdlURL = BookingServer_Service.WSDL_LOCATION;
BookingServer_Service ss = new BookingServer_Service(wsdlURL, SERVICE_NAME);
BookingServer port = ss.getBookingServerSOAP();
java.util.List<org.example.bookingserver.Cities> result = port.getCities();
但我得到javax.ejb.EJBException ... Caused by: com.sun.xml.ws.client.ClientTransportException: The server sent HTTP status code 200: OK
我无法谷歌任何与此例外相关的内容。
我也尝试过使用NetBeans webservice客户端GUI,但异常是相同的。当我在服务器中放置断点时,它永远不会中断。所以问题出在客户端。
任何人都知道我做错了什么?
答案 0 :(得分:0)
我不得不更改soap:address然后主要的问题是我在使用GUI向导时通过为Web服务生成的@WebService注释覆盖了CXF生成的接口的@WebService注释。因此,webservice的位置是不同的。