使用Java Web Services Developer Pack1.6开发WebService入门

介绍

本文主要介绍Java Web Services Developers Pack1.6的基础知识,并且利用Eclipse开发一个入门程序。

Java Web Services Developer Pack简介

Java Web Services Developer PackJWSDP)是一个免费的集成工具,它帮助Java开发者使用最新的Web Services技术和标准实现建立和测试XML程序、Web ServicesWeb应用程序。JWSDP当前最新版本是2.0,而本文的讲解和示例程序是基于1.6的。更多详细信息请参考http://java.sun.com/webservices/jwsdp/index.jsp

JWSDP1.6包含了下列技术:

l     XML and Web Services Security v2.0 EA

l     XML Digital Signatures v1.0 FCS

l     Java Architecture for XML Binding (JAXB) v 1.0.5 FCS

l     Java API for XML Processing (JAXP) v 1.3.1 FCS

l     Java API for XML Registries (JAXR) v 1.0.8 FCS

l     Java API for XML-based RPC (JAX-RPC) v 1.1.3 FCS

l     SOAP with Attachments API for Java (SAAJ) v 1.2.2 FCS

l     JavaServer Pages Standard Tag Library (JSTL) v 1.1.1 _01 FCS

l     Sun Service Registry v3.0 EA

l     Ant Build Tool 1.6.2 FCS

l     WS-I Attachments Sample Application 1.0 EA5

wscompilewsdeploy工具介绍

这两个工具是由JAX-RPC标准实现提供的,和JWSDP包一起发布。开发者通过使用它们可以开发标准的Web Services以及客户端实现。

1、 wscompile

wscompile主要用来生成在JAX-RPC客户端和服务中使用的stubstiesserializersWSDL文件。这个工具使用一个配置文件作为输入,配置文件一般指定一个WSDL文件、一个模型文件或者一个经过的编译的服务终端接口。

wscompile可以在命令中使用,也可以通过Ant脚本调用,命令行中的语法是:

wscompile [options] <configuration-file>

为了方便起见,一般把配置文件命名为config.xml,当然这并不是必须,你也可以命名为你喜欢的任何名字。关于options的详细信息请参考jaxrpc-tools文档,这里就不再赘述了。我们主要看一下配置文件的格式。

配置文件包含了描述web service的信息,基本格式如下:

<?xml version="1.0" encoding="UTF-8"?>

<configuration

    xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">

        <service> or <wsdl> or <modelfile>

</configuration>

其中<configuration>元素必须包含<service><wsdl>或者<modelfile>元素中的一个。

<service>元素

如果指定了这个元素,wscompile就会读取描述服务的终端接口,并且生成一个WSDL文件。在<interface>子元素中,name属性指定了服务终端接口,servantName属性指定实现接口的类。例如:

service name="CollectionIF_Service"  

targetNamespace="http://echoservice.org/wsdl"  

      typeNamespace="http://echoservice.org/types"  

      packageName="stub_tie_generator_test">  

    <interface name="stub_tie_generator_test.CollectionIF"  

          servantName="stub_tie_generator_test.CollectionImpl"/>  

</service>

<wsdl>元素

如果指定了这个元素,wscompile会读取服务的WSDL文件,产生服务终端接口。location属性指定了WSDL文件的URL,而packageName属性指定了由wscompile产生的类所在的包。例如:

<wsdl

        location="./etc/HelloWorldService.wsdl"

        packageName="hello">

    </wsdl>

<modelfile>元素

这个元素主要为高级用户而设置。

如果config.xml文件包含了一个<service>或者<wsdl>元素,wscomplile就会生成一个model文件,它包含了描述服务的内在数据结构。如果你已经手动生成了一个model文件,那么在下一次运行wscompile时可以重用。例如:

<modelfile location="mymodel.xml.gz"/>  

2、 wsdeploy

wsdeploy工具读取一个WAR文件和jaxrpc-ri.xml文件,然后产生另外一个可以用来发布的WAR文件。在这个操作背后,wsdeploy运行了包含-gen:server选项的wscompilewscompile命令产生类和一个WSDL文件,这些要被包含在wsdeploy产生的WAR文件中。

wscompile一样,wsdeploy也可以通过命令行和Ant脚本两种方式调用,下面是命令行的语法:

wsdeploy -o <output-war-file> <input-war-file> <options>

<options>具体意义参考jaxrpc-tools文档。

输入的WAR文件

你可以通过任何方式(IDEAnt等)产生输入的WAR文件,这个文件典型结构如下:

META-INF/MANIFEST.MF

WEB-INF/classes/hello/HelloIF.class

WEB-INF/classes/hello/HelloImpl.class

WEB-INF/jaxrpc-ri.xml

WEB-INF/web.xml

这上面的例子中HelloIF是服务终端接口,而HelloImpl是实现这个接口的类。web.xml文件是web组件的描述符文件。接下来介绍jaxrpc-ri.xml文件。

jaxrpc-ri.xml文件

下面的清单是关于一个简单的HelloWorld服务的jaxrpc-ri.xml文件:

<?xml version="1.0" encoding="UTF-8"?>  

<webServices  

       xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/dd"  

       version="1.0"  

       targetNamespaceBase="http://com.test/wsdl"  

       typeNamespaceBase="http://com.test/types"  

       urlPatternBase="/ws">  

       <endpoint  

           name="MyHello"  

           displayName="HelloWorld Service"  

           description="A simple web service"  

           wsdl="/WEB-INF/<wsdlame>  

           interface="hello.HelloIF"  

           implementation="hello.HelloImpl"/>  

       <endpointMapping  

           endpointName="MyHello"  

           urlPattern="/hello"/>  

</webServices>  

<webServices>元素必须一个或者多个<endpoint>元素。在这个例子中,注意<endpoint>元素的interfaceimplementation属性指定了服务的接口和实现类。<endpointMapping>元素将服务名和URL联系起来。

使用JWSDP实现一个简单的HelloService

1、  开发环境:JWSDP1.6Tomcat50-JWSDP,开发工具Eclipse3.1(已配置好)。

2、  下载所需工具:Java Web Services Developers Pack1.6Tomcat50-JWSDP。下载地址:http://java.sun.com/webservices/jwsdp/index.jsp

3、  安装

(1)       tomcat50-jwsdp,下载后直接解压到指定目录即可,本文是E:/tomcat50-jwsdp

(2)       JWSDP1.6的安装:下载的应该是一个可执行文件jwsdp-1_6-windows-i586.exe,双击即开始安装。注意:JWSDP1.6需要JDK1.4或者以上版本;在安装过程中会让指定Web服务器,这里就指定为刚才安装的tomcat。当然也可以不指定,需要时再根据文档手动指定。

4、  开发过程

一切准备工作都已就绪,下面就开始具体的实现吧。

(1)       新建工程:打开Eclipse,选择New—Project,在Web中选择Dynamic Web Project。“Next”,在Project Name中输入工程名:HelloWorldTarget Runtime指定了运行时的服务器,如果列表中没有需要的服务器,可以点击“New”重新指定。

1 输入工程名、指定服务器

一直下一步,完成工程新建。

(2)       添加类库:在工程名单击右键,选择“Properties〉“Java Build Path”。“Add Libraries”,在“Add Library”窗口中选择“User Library”,“Next”,如果“Selected User Library”中不存在需要的类库,点击“User Libraries”添加。所需要的jar文件列表如图2中所示:

2  程序需要的jar列表

(3)       新建接口类和实现类:建立接口和类的方法非常简单,没有必要在叙述,两个文件分别为:HelloIF.javaHelloImpl.java下面是两个文件的代码列表:

//HelloIF.java

package hello;

 

import java.rmi.Remote;

import java.rmi.RemoteException;

 

public interface HelloIF extends Remote{

 

       public String sayHello(String str) throws RemoteException;

}

 

//HelloImpl.java

package hello;

 

public class HelloImpl implements HelloIF {

      

       //

       private String hello = "SayHello";

 

       public String sayHello(String str) {

              return str + hello;

       }

}

呵呵,是不是太简单了?不过这已经足够了。

(4)       建立jaxrpc-ri.xml文件:因为在例子中只用了wsdeploy工具,所以我们需要一个jaxrpc-ri.xml文件。在“WebContent”下的“WEB-INF”节点上单击右键,选择“Other”—〉选择“XML”下的“XML”,输入文件名“jaxrpc-ri.xml”。jaxrpc-ri.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<webServices

    xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/dd"

    version="1.0"

    targetNamespaceBase="http://hello.org/wsdl"

    typeNamespaceBase="http://hello.org/types"

    urlPatternBase="/webservices">

 

    <endpoint

        name="Hello"

        displayName="HelloService"

        description="An example SSO token service"

        interface="hello.HelloIF" 

        implementation="hello.HelloImpl"/>

 

    <endpointMapping

        endpointName="Hello"

        urlPattern="/hello"/>

 

</webServices>

(5)       建立Ant脚本build.xml文件:过程和上面一样,文件位置在工程根目录下,名字为build.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<project name="HelloWorld" default="all" basedir=".">

 

  <property name="JWSDP_HOME"  value="E:/jwsdp-1.6"/>

  <property name="tmpdir"      value="./tmp"/>

  <property name="webclasses"  value="./WebContent/WEB-INF/classes"/>

    <property name="TOMCAT_HOME" value="E:/tomcat50-jwsdp"/>

 

  <target name="clean">

    <echo message="删除目录"/>

 

    <delete file="./${ant.project.name}.war" />

    <delete file="./hello-temp.war" />

    <delete dir="${tmpdir}"/>

    <delete dir="${webclasses}"/>

  </target>

 

  <target name="init" depends="clean">

    <mkdir dir="${webclasses}"/>

    <mkdir dir="${tmpdir}"/>

  </target>

 

  <target name="create-war" depends="init">

   <copy todir="./WebContent/WEB-INF/classes">

     <fileset dir="./build/classes"/>

   </copy>

   <jar jarfile="./hello-temp.war" basedir="./WebContent"/>

  </target>

 

  <target name="deployready" depends="create-war">

    <exec executable="${JWSDP_HOME}/jaxrpc/bin/wsdeploy.bat">

      <arg line="-tmpdir tmp/ -o ${ant.project.name}.war hello-temp.war"/>

    </exec>

  </target>

   

    <target name="deploy" depends="deployready">

       <delete file="${TOMCAT_HOME}/webapps/${ant.project.name}.war"/>

       <copy file="./${ant.project.name}.war" tofile="${TOMCAT_HOME}/webapps/${ant.project.name}.war"/>

    </target>

   

    <target name="run-server">

       <exec executable="${TOMCAT_HOME}/bin/startup.bat"/>

    </target>

 

  <target name="all" depends="deploy">

  </target>

</project>

经过以上5个步骤已经建立了程序需要的所有文件,剩下的工作就是测试了。工程中文件结构如下图:

3  例子的文件结构

(6)       测试和运行:将build.xml文件添加到EclipseAnt窗口中,如图4

4  Ant窗口

双击all任务,可以在console窗口中看到如下信息:

5 控制台输出信息

证明程序编译发布成功。我们可以通过winrar等工具查看由wsdeploy工具生成的HelloWorld.war文件的结构:

WEB-INF下:

6

WEB-INF/classes/hello下:

7

WEB-INF/classes/jaxrpc/generated/hello下:

8

Ant窗口中双击“run-server”任务启动服务器,打开浏览器,在其中输入http://localhost:8080/HelloWolrd/hello?WSDL,可以看到WSDL文件内容。证明程序成功运行。

注意:本文没有实现WebService的客户端,那么就留作练习吧。

总结

   本文简单的介绍了Java Web Services Developer Pack 的基本概念,以及 wscompile wsdeploy 使用方法,并且结合 JWSDP1.6实现了一个简单的HelloWorld程序
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值