在Java EE Server中实现Web服务

现在,我们开始在应用服务器上部署一个与前例类似的Web服务。为了能够运行本节的例子,我们需要从http://java.sun.com/javaee/downloads/index.jsp 处下载一个Windows平台下的Java EE 5 Update 4应用服务器((java_ee_sdk-5_04-windows-nojdk.exe)

安装并启动服务器

如果您的机器上安装有最新版的JDK,您可以选择下载nojdk的安装版本,否则,您需要下载”Java EE+JDK”的版本。双击下载的exe文件,安装到您的本地硬盘(安装目录路径中最好不要有空格和怪字符)

启动Java EE服务器的缺省域非常简单,您只需要从程序菜单中选择”Start Default Server”即可。

Start -> All Programs -> Sun Microsystems -> Java EE 5 SDK -> Start Default Server

服务器启动后,您可以在浏览器输入下列地址,验证一下您的服务器是否已经启动。

http://127.0.0.1:8080/

有时,您会发现,使用命令行方式启动服务器比较简单,首先,您需要进入下面的目录路径下,执行下列命令:

cd %J2EE_HOME%/lib
asadmin-pause start-domain domain1

其中,J2EE_HOME是您机器上Java EE Server的安装目录。

服务器端和客户端代码

您可以在ch03/01_JaxWs/JavaEEServer/src目录下找到本节使用的服务器及客户端的源代码文件(译者注:本书代码请从http://www.packtpub.com/files/code/3216_Code.zip处下载),下面是对这些源代码的解释:

HelloWebService.java
HelloWebService类中也使用了Java注解,这些注解的意思和前面的例子相同,此处不再赘述。

  1. @WebService
  2. public class HelloWebService {
  3.     private static int times;
  4.     public HelloWebService() {
  5.         System.out.println("Inside HelloWebService.HelloWebService...");
  6.     }
  7.     public String hello(String param) {
  8.         System.out.println("Inside HelloWebService.hello... - " + (++times));
  9.         return "Return From Server : Hello " + param;
  10.     }
  11. }

Client.java
客户端的代码非常简单:

  1. public class Client {
  2.     @WebServiceRef(wsdlLocation = "http://localhost:8080/HelloWebService/HelloWebServiceService?WSDL")
  3.     static HelloWebServiceService service;
  4.     public static void main(String[] args) {
  5.         Client client = new Client();
  6.         client.test();
  7.     }
  8.     public void test() {
  9.         try {
  10.             HelloWebService helloWebServicePort = service
  11.                     .getHelloWebServicePort();
  12.             String ret = helloWebServicePort.hello(System
  13.                     .getProperty("user.name"));
  14.             System.out.println("Hello result = " + ret);
  15.         } catch (Exception e) {
  16.             e.printStackTrace();
  17.         }
  18.     }
  19. }

上面的代码中,我们使用了javax.xml.WebServiceRef注解,该注解声明了一个已发布的Web服务的引用,而@WebServiceRef使用wsdlLocation元素指明了HelloWebService这个服务的WSDL文件的位置;接下来,客户端就可以获取远程服务的代理,从而通过代理调用Web服务方法。

运行服务器和客户端

为了简单起见,本例中我们也不对该服务进行打包,而只是直接将Web服务的实现类编译后放到Java EE Serverautodeploy目录中,及%J2EE_HOME%/domains/domain1/autodeploy目录。

我们可以用一个ant命令执行以下三步:

(1)   编译服务器端和客户端代码
(2)   把服务器端类部署到缺省域中
(3)   运行客户端程序,向服务器端发送Web服务请求

现在,假定您的Java EE服务器已经启动并运行,请到本章的源代码目录下,执行下列命令:

cd ch03/01_JaxWS/JavaEEServer
ant

下图显示了上面命令执行后,控制台上的输出,您可以看到,客户端首先向服务器发送请求,然后,服务器的响应会打印在客户端的控制台上。

 

当然,您也可以在浏览器中输入http://localhost:8080/HelloWebService/HelloWebServiceService?WSDL,来访问上面已经部署的Web服务的WSDL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值