Web服务也是一种分布式技术,属于行业规范,可以跨平台及语言。
EJB属于java平台规范,尽管理论上可以跨平台,但实现起来比较麻烦,所以其应用范围局限在java平台。

二者偏重点不同:
Web服务偏重的是这个系统对外提供什么功能;
EJB偏重的是如何使用一个个组件组装这些功能。

例如:一个硬盘,它对外提供的是存储服务,这是web服务的关注点;对于怎样组装这个硬盘,web服务并不关心,而这些是EJB所关注的。

JavaEE为web service提供了两种不同的编程模型:EJB容器模型、Web容器模型
下面以最新的JAX-WS2.x规范(Java API for XML-based Web Services)介绍Webservice的开发。
注:JAX-WS的下载路径为https://jax-ws.dev.java.net/servlets/ProjectDocumentList?folderID=7796&expandFolder=7796&folderID=11088

EJB容器模型的WEB服务的客户端开发:
注:首先我们需要建立一个无状态SessionBean,然后把此无状态SessionBean发布为web service。

1.在应用的类路径下放入JAX-WS的全部jar文件,并且把引进的jar文件添加到类路径上,即右击项目名-->Properties-->Java Build Path-->Add JARS。
如果你使用的是JDK6,这一步可以省略,因为JDK6已经绑定了JAX-WS。目前JDK6绑定的JAX-WS版本是2.0。

2.把JAX-WS产品lib目录中找到jaxws-api.jar和jaxb-api.jar,把这两个文件copy到JDK_HOME/jre/lib/endorsed目录下。

3.利用Web Service客户端生成工具(wsimport工具的Ant任务类)生成辅助类。
build.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="WSClient" default="wsclientgen" basedir=".">
 <property name="src.dir" value="${basedir}/src" />
 
 <path id="build.classpath" description="设置类路径">
  <fileset dir="${basedir}/lib">
   <include name="*.jar"></include>
  </fileset>
 </path>
 
 <target name="wsclientgen" description="生成webservice客户端辅助代码,执行后请刷新项目">
  <taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport"
   classpathref="build.classpath"/>
  <wsimport wsdl="http://localhost:8090/WebService/OrderServiceBean?wsdl"
   sourcedestdir="${src.dir}"  package="cn.ztf.ws.client" keep="true"
    verbose="true" destdir="${basedir}/bin"/>
 </target>
</project>

4.借助辅助类调用Web Service。

posted on 2009-03-30 14:22  断点  阅读(509)  评论(0编辑  收藏  举报