Web服务也是一种分布式技术,与EJB最大的不同点是,Web服务属于行业规范,可以跨平台及语言。而EJB属于java平台的规范,一般也使用在java平台。Web服务更加偏重对外提供什么功能,而EJB偏重的是如何用一个个组件组装这些功能。
JavaEE为web service提供了两种不同的编程模型:EJB容器模型机Web容器模型,这里主要介绍EJB容器模型。
编写Order类
上面编写的Order类是实现类似Entity bean的功能。
编写session bean的远程接口OrderService.java,接口中有三个业务方法。
编写session bean,实现该远程接口
@WebService(targetNamespace="http://ws.wang.cn",
name="OrderService",
serviceName="OrderServiceBean")
上面这段注释是把该无状态session bean中所有的业务方法暴露为web service方法,如果想只是把某个方法暴露为web service方法,只需在该方法上添加注释@WebMethod。
targetNamespace是命名空间,name是服务端名称,serviceName是服务名称,这些参数都可以在web service的描述语言中查看,启动jboss,输入:http://localhost:8080/jbossws/,点击“View a list of deployed services”,然后点击http://127.0.0.1:8080/WebService/OrderServiceBean?wsdl就可以查看wsdl
发布该webservice到jboss中。
在J2SE或者Web中调用Web Service
利用JDK的wsimport命令生成辅助类,wsimport用法如下:
wsimport –d E:/JavaProject/WSClient/bin –keep –s E:/JavaProject/WSClient/src –verbose
http://localhost:8080/WsHelloWorld/HelloWorldBean?wsdl –p wang.ejb3.ws.client
上面各选项的含义如下:
-d<directory>指定保存目录,存放生成类编译后的class文件。
-s<directory>指定保存目录,存放生成的源文件。
-keep指定是否生成文件。
-verbose指定是否显示执行细节。
-p指定生成文件所使用的包名。
编写build.xml如下:
运行该build.xml,生成相应辅助类。
借助辅助类调用web service