我创建了一个SOAP WS并将其部署在localhost上。在同一台服务器上,我想创建一个Web应用程序,它将XML请求发送到Web服务,从而处理数据库中的数据。
我是否必须重新生成所有必需的java类(wsimport)以使用Web服务,或者还有其他方法吗?生成的类弄乱了我的项目。
答案 0 :(得分:2)
您可以使用网址,QName和服务。
假设您有一个服务端点接口,如下所示:
@WebService
@SOAPBinding(style = Style.RPC)
public interface HelloWorld{
@WebMethod
String getString(String name);
}
服务端点实现如下:
@WebService(endpointInterface = "com.bot.ws.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
@Override
public String getString(String name) {
return "Hello World received input = " + name;
}
}
您可以按如下方式调用此Web服务:
public class WSClient {
public static void main(String[] args) throws Exception {
URL url = new URL("http://localhost:8080/ws/hello?wsdl");
QName qname = new QName("http://bot.ws/", "HelloWorldImplService");
Service service = Service.create(url, qname);
HelloWorld hello = service.getPort(HelloWorld.class);
System.out.println(hello.getString("bot"));
}
}
请注意,您需要将您的网络服务enpoint界面复制到可以调用您的网络服务的网络应用,如果他们不在同一场战争中。此外,此示例假定您的Web服务接受String参数并返回String。如果使用用户定义的类型,则需要使用JAXB / XMLBeans等从模式生成类。