将EJB发布成WebService总结_第1页
将EJB发布成WebService总结_第2页
将EJB发布成WebService总结_第3页
将EJB发布成WebService总结_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、页眉内容ej豉布成webservice总结1 .将ejb发布成,或者说暴露成 web服务(也许更贴切),在ejb容器中不是困难的事情, 只要容器实现了 javaee的jax-ws标准就行了,开发人员要做的就是增加一点点有关 webservice的注解,打包发布到应用容器即可。不过在笔者使用 jboss5作为ejb容器的时候,调用 web服务出现了异常最后发现是jdk版本的问题,改用jdk1.5编译ejb类、启动jboss后才能正常调用。这个问题先留着,回头使用jboss6的时候在试试吧一2 . helloworld服务端代码服务端不用再强制规定webservice必须实现一个接口了,而一个普通

2、的pojo+ej驻解的类就可以当做 webservice服务器类。代码如下:package webservice.hellowebservice;import ;import ; stateless webservice (name = hellowebservice ) public class hellowebservice public string sayhello(string name) 客户端调用了服务器端的代码);return你好:+ name+ ,传授给彳武功-旋空斩; 将此类打包部署到 jboss容器中,重启jbosg打开链接 1:8080/jbossws看至u如下界面选择

3、 view a list of deployed services 查看 webservice 歹u表点击链接即可看到 wsdl文档definitions name=hellowebserviceservice targetnamespace= xmlns=/ xmlns:soap=/soap/ xmlns:tns= xmlns:xsd=/xmlschemamessage name=hellowebservice_sayhelloresponse/messagemessage name=hellowebservice_sayhelloporttype name=hellowebserviceo

4、peration name=sayhello parameterorder=sayhelloinput message=tns:hellowebservice_sayhello/inputoutput message=tns:hellowebservice_sayhelloresponse/output/operation)/porttypebinding name=hellowebservicebinding type=tns:hellowebservicesoap:binding style=document transport=/http/operation name=sayhellos

5、oap:operation soapaction=/soap:body use=literal/soap:body use=literal/operation)/bindingsoap:address location=.1:8080/ejbwebservice/hellowebservice7/service/definitions)3 .客户端测试程序我们使用ide工具生成客户端代码,在 myeclipse中选择new菜单,选择 web服务客户端,如下图所示选择生成代码的目标项目和类型之后输入 wsdl文档的url位置,如下图所示之后选择next进入加入依赖包的选项如果不加入任何依赖包也可

6、以,可以手工下载cxf项目(),将它的lib下的wsdl4j-version.jar、xmlschema-version.jar 拷贝至u客户端 classpath下面就行。之后生成的代码如下 其中hellowebserviceservice是需要客户端稍微关心一下的类,客户端调用这个类的方法 就能调到服务器端的代码。测试程序如下public static void main(string口 args) hellowebserviceservicehellowebserviceservice= new hellowebserviceservice。;hellowebservice hellow

7、ebservice =hellowebserviceservice.gethellowebserviceport();单锋剑尊);4 .复杂对象调用的例子以上例子只是简单调用了webservice,参数是简单的 string ,如果我们客户端需要获得复杂的,自定义的对象可以吗?答案是ejb容器也很完美的做到了服务端代码如下package webservice.hellowebservice;import ;import ;import ;statelesswebservice (name = hellowebservice )public class carwebservice public

8、car callcar(string name) 客户+ name +端调用了服务器端的代码”);car car = new car();car.setname( 宝马);car.setmessage( bmw);return car;这个服务类调用了一个car实体类,这个类是一个自定义的pojo 类代码如下package ;public class car privatestringname;privatestringmessage ;public string getname() return name;public void setname(string name) this . nam

9、e = name;public string getmessage() return message ;public void setmessage(string message) this . message = message;overridepublic string tostring() /todo auto-generated method stubreturn name: + name + - + message ;客户端在生成代码的时候也会将这个返回值的实体类代码生成一下。客户端生成的程序如下 测试代码如下public static void main(string口 args) carwebserviceservice carwebserviceservice = new carwebserviceservice();hellowebservice hellowebservice = carwebserviceservice.gethellowebserviceport();car car = hellowebservice.callcar(素续缘);+ -+ car.getmessage();但是需要说明的一点就是在服务器端此car实体类自己覆盖了tostring方法,在客户端生成后的代码,并没有也像服务端那样覆盖tostring,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论