将Web服务与Java Servlet一起使用

时间:2011-05-06 21:49:58

标签: java web-services jsp servlets wsdl

我正在尝试使用JSP和Servlets开发一个非常简单的Java Web应用程序。

1)页面上有一个文本框和一个提交按钮,
2)用户在文本框中输入他的名字,比如John,然后点击按钮,
3)字符串被转发到我的servlet,
4)在我的servlet的doPost方法中,我访问发布的字符串变量,
5)我将使用的Web服务有一个sayHello方法,该方法接受一个参数并返回与参数连接的"Hello "
6)因此,我调用Web服务的sayHello方法,获取返回的变量并将其转发给基本上写Hello John的JSP。

我熟悉JSP和Servlet的事情,但我不知道如何使用现有的Web服务,或者如何使用已经在该Web服务中实现的功能。

我所拥有的只是方法的名称,sayHello,网络服务的网址,http://example.com/hello_service以及指向wsdl文件的链接,其中包含类似xml的代码不知道如何利用。

我的问题是,如何使用该Web服务,或者如何在servlet中调用方法?

提前致谢。

3 个答案:

答案 0 :(得分:5)

  

我正在使用Eclipse for JavaEE Developers。如何自动生成客户端?

将WSDL文件放入动态Web项目中(或为其创建一个新项目),右键单击它,选择 Web Services>生成客户端,使用默认设置完成向导。将创建一个新包,其中放置了生成的WSDL客户端代码。其中一个类在类名中有ServiceLocator

在servlet中,您需要实例化ServiceLocator类,从中获取SOAP服务,然后在其上调用所需的方法。由于WSDL未知,因此无法提供更多详细信息。

另见:

答案 1 :(得分:0)

您可以使用jax-ws中的“wsimport”为Web服务生成客户端jar。然后,在类路径中包含客户端jar,您可以像调用任何常规方法一样调用Web服务。

答案 2 :(得分:0)

您必须创建客户端存根,这些存根将成为您的代码项目(具有servlet)的一部分。 WSDL定义了如何生成这些存根。您可以从servlet中调用存根中的方法。您可以使用各种工具生成这些存根,Axis2是使用最广泛的工具之一。

Here是apache Axis2文档,它告诉您如何操作。

此存根将具有wsdl已定义的方法。您基本上将调用这些方法,并在内部执行存根实现(由axis2从wsdl自动生成)将根据您传递给方法的参数创建SOAP请求。然后,它将通过HTTP或HTTPS将此请求发送到Web服务URL。您会觉得您正在调用驻留在您计算机上的代码,但在内部它会调用远程Web服务。