科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Java SE 6 Web Service 之旅

Java SE 6 Web Service 之旅

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在过去的几个月里,Sun公司已经为Java平台的第6个版本(Java Platform Standard Edition 6)提供了二进制安装文件,Java文档和Java源代码,就是知名的“野马”。而且这飞驰的野马要拉住你这车并不算晚。

作者:中国IT实验室 来源:中国IT实验室 2007年9月22日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

     现在我们有一个准备好了操作者的WebService,我们应该如何包装和部署这样的服务呢?这个服务打包成下边我们要讨论的一个jar文件,但是看起来更加兴奋。

Boostrap

    在JavaSE6种,你将会看到javax.xml.ws包里面包含了终端类,这些专门用来在JVM中部署WebService。当然,听起来很正确!不需要任何服务器。正好利用终端类创建一个服务实例,就像下边显示的Bootstrap类一样。终端是用于小的应用程序的,应用服务器消耗是不合理的,这里是仅仅用作发布目的。

package com.techyatra.hellows;
...
public class Bootstrap
{
    ...
    public static void main (String [] args) throws Exception
   {
        HelloServer server = new HelloServer();
          
        Endpoint endpoint = Endpoint.publish(http://localhost:9090/HelloServer,
server);
        
        Binding binding = endpoint.getBinding();      
        List<Handler> handlerChain = new LinkedList<Handler>();
        handlerChain.add(new com.techyatra.hellows.TraceHandler());
        binding.setHandlerChain(handlerChain);
   }  
}


    这个Bootstrap类是一个便利的类用来聚合HelloServer WebService中的各个块。它发布这个服务器到一个URL地址而且将TraceHandler这个追踪操作者添加到这个WebService运行管道中。

服务应用jar文件

    运行Apache Ant中的命令创建编译过的JAR。这个dist任务创建一个MustangWS.jar文件用来标志com.techyatra.hellows.Bootstrap 类作为一个类包含了main()的入口点。

    现在执行Apache Ant的run命令。这个将调用Bootstrap中的main()方法用来将WebService发布到http://localhost:9090/HelloServer。在你的浏览器里面输入http://localhost:9090/HelloServer?WSDL用来显示动态生成的WSDL文档的内容。让我们看看WebService Metadata Annotation在WSDL中如何来提供各种服务的。

“野马”WebSerice客户端
   现在我们将HelloServer发布成为了一个WebService,让我们看看如何来调用它。当然这里有很多方法来完成这个工作,我们将使用JavaSE 6中的JAX-WS2.0中的功能来调用HelloServer这个WebService。

这个客户端应用程序在mustangwsclient 文件夹中可以找到。除开我们熟悉的src目录和build.xml文件以外,mustangwsclient目录中还包含了wsimportHello.bat批处理文件,用来生成JAXB的绑定存根。客户端通过存根能够很方便地调用这个服务。Java SE 6利用wsimport功能绑定生成这个存根,wsimportHello.bat使用这些功能为HelloService生成存根。

wsimport

    wsimport能够检查WSDL文件中的特别URL是否合法然后生成所有的class用来让客户端更加清晰和容易懂得。有些人想使用SAAJ,JAXB或者straight-up XML用来调用WebService,可是需要小心的是,基于的wsimport的存根提供了一个方便的层次来管理WebService。它用来生成合适的JAX-WS机制,标识这些类可以和比较规范的应用程序服务器和JVM来工作。

    当你运行mustangwsclient文件夹中的wsimportHello.bat批处理文件,它将为Mustang WebService客户端项目生成构建文件夹然后能够使用关键的参数运行wsimport,这些用来生成存根文件,并且将其放在他们的com/techyatra/helloclient/jax文件夹中。若要知道细节,就查阅网上的资源。

HelloServer是一个服务端的终端接口。
HelloService是一个服务
HelloException是WSDL文档中wsdl:fault映射过来的异常类。Person类是从WSDL文件中的Person模式中生成的Java类的绑定映射文件。
这些存根将会被HelloService客户端应用程序使用,这些应用位于com.techyatra.helloclient.JAXClient 和 com.techyatra.helloclient.Client.

     客户端应用程序主要的入口点就是com.techyatra.helloclient.Client类,它接受命令行的参数,有需要的话执行参数重载和检查,创建一个Person对象,最后经过JAXClient来调用这个对象。
package com.techyatra.helloclient;
public class Client
{
      public static void main(String[] args) throws Exception
      {                        
...
         if (args[0].equals("jax"))
         {
          com.techyatra.helloclient.jax.Person person =
new com.techyatra.helloclient.jax.Person();
          person.setTitle(args[1]);
          person.setName(args[2]);
          JAXClient jaxClient = new JAXClient();
          jaxClient.invoke(person);
         }
      }    
}


package com.techyatra.helloclient;
import com.techyatra.helloclient.jax.*;
public class JAXClient
{
...
    public void invoke(Person person) throws Exception
    {
        
         HelloService service = new HelloService();
         HelloServer server = (HelloServer) service.getHelloServerPort();
         String ret = server.hello(person);
         System.out.println(ret);        
    }    
}


现在,执行Ant run命令将显示下面的信息:
[java] No arguments specified. Overriding arguments to ? jax Mr. Doe
[java] Alive and well. Thank you and hello  Mr. Doe!

但是这正是我们想要的!
尽管我们没有在这篇文章中讨论到,但是基于Axis客户端框架的代码和WSDL2Java脚本文件都可以下载到,基于Axis框架的客户段源代码在mustangwsclient/com/techyatra/hellowsclient/AxisClient.java,而且包含了命令行参数的批处理文件wsdl2javaHello.bat,能够在mustangwsclient根目录中找到。若要删除Axis引用,直接删除mustangwsclient/com/techyatra/helloclient/axis目录和mustangwsclient/com/techyatra/helloclient/AxisClient.java 源文件。

让我们回顾一下我们这里的WebService进行部署:
解开源代码包。
针对我们的服务器应用程序:
执行Ant编译任务。
执行wsgenMustang.bat批处理文件生成所需要的文件。
执行Ant run任务调用来构建MustangWS.jar文件。
我们现在可以在http://localhost:9090/HelloServer中运行HelloServer服务,而且键入http://localhost:9090/HelloServer?WSDL还能够看到动态生成的WSDL文档内容。
针对客户端应用程序:
如果对Axis没有兴趣就删除mustangwsclient/com/techyatra/helloclient/axis目录和mustangwsclient/com/techyatra/helloclient/AxisClient.java 源文件。
运行wsImportHello.bat批处理文件生成客户端存根。
运行Ant的run任务就可以了。

资源:
Matrix Java&开源社区:http://www.matrix.org.cn

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章