使用CXF从java使用webservice导致com.sun.xml.ws.client.ClientTransportException:服务器发送HTTP状态代码200:OK

时间:2012-12-18 00:20:52

标签: java soap wsdl cxf

我使用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,但异常是相同的。当我在服务器中放置断点时,它永远不会中断。所以问题出在客户端。

任何人都知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

我不得不更改soap:address然后主要的问题是我在使用GUI向导时通过为Web服务生成的@WebService注释覆盖了CXF生成的接口的@WebService注释。因此,webservice的位置是不同的。