WebService服务端、客户端之个人献丑篇.doc_第1页
WebService服务端、客户端之个人献丑篇.doc_第2页
WebService服务端、客户端之个人献丑篇.doc_第3页
WebService服务端、客户端之个人献丑篇.doc_第4页
WebService服务端、客户端之个人献丑篇.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

WebService当服务端 当服务端发布成wsdl协议可以用XFire(可以直接配置生成wsdl,可以与Spring相结合),也可以用Axis(手动配置server-config.wsdd再通过命令生成wsdl,不支持Spring)WebService开发要安装环境的,可以在网上看看,很简单。这里以XFire为例(也以我的Demo为主,个人经验)第一步:直接用MyEclipse7.0(其他版本没试过)创建Web Service Project(自己命名) 我的Demo名称为XFireBegin,在此项目下会比平常的项目多一个WebServices文件夹,里面有个services.xml文件,用来配置接口,实现类和wsdl名称、wsdl的命名空间(Axis要在server-config.wsdd手动配置)web.xml中会自动配置好XFire的支持Servlet(Axis要手动配置,并且支持的servlet也不同)第二步:和平常一样建包、建接口、方法、实现这个接口。以下是我的Demo接口包:com.svse.xfire.service接口名:XFireService方法:String xfireMethod(String name)实现类包:com.svse.xfire.service.impl实现类名:XFireServiceImpl方法:public String xfireMethod(String name) String temp=name+,欢迎学习WebService的XFire之旅; return temp; public void method() System.out.println(此方法WebService是调用不了的,因为没有此方法的接口!); 在此实现中多加了一个方法,主要是用来测试WebService没有发布的方法是没办法被调用到的,就算实现发布的接口也没用。到此和我们平常创建项目没什么区别,没有一点WebService的影子,主要是在创建Web Service Project的时候,工程自动帮我们把框架搭建起来了。第三步:开始在services.xml中配置接口,实现类和wsdl名称、wsdl的命名空间。直接看我的Demo配置 XFireFirst http:/com.svse.xfire/XFireFirst com.svse.xfire.service.XFireService com.svse.xfire.service.impl.XFireServiceImpl到这里如果配置没错,WebService的服务端基本上完成,接下来就是把项目编译成class文件启动访问http:/localhost:8080/XFireBegin/services/XFireFirst?wsdl就可以看到wsdl协议了。http:/localhost:8080/XFireBegin/services/XFireFirst?wsdl中http:/localhost:8080/XFireBegin/不用我说都知道是什么,services是web.xml文件中配置好的名称,一般就用默认的,无须改动,XFireFirst就是在serices.xml中配置的wsdl名称。?wsdl就表示访问wsdl协议,无需深入研究不出问题看到的是一个以xml文件形式出现的页面(不列出来,文件占地面积有点大),要能读懂xml文件才能看的懂此文件的结构,但是我们当服务端的话,看不看得懂这个文件关系倒不是特别大,只要能把我们做的java接口发布成wsdl协议就OK啦。WebService当客户端的时候 当我们为客户端的时候就是反向操作,将服务端生成的wsdl文件转换成java文件,不过通过XFire生成的服务端可以不通过wsdl文件转成java也可以实现一些简单的调用,但是安全性不高,也不是那么好理解,不过很简单(不建议使用,后面有另外的方法)不通过wsdl文件转成java代码看看我的Demo(服务端就用上面的)在原项目上随便建个包,写个main方法测试下就行,上项目的时候就得依各人情况而定,是在Action里面还是Servlet里面自己看着办。public static void main(String args) String serviceURL = http:/localhost:8080/XFireBegin/services/XFireFirst; Service serviceModel=new ObjectServiceFactory().create(XFireService.class,null,http:/com.svse.xfire/XFireFirst,null); XFireProxyFactory serviceFactory = new XFireProxyFactory(); try XFireService xs=(XFireService) serviceFactory.create(serviceModel, serviceURL); /设置心跳 Client client=Client.getInstance(xs); client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, 1000); String hello=xs.xfireMethod(张山疯); System.out.println(服务器对张山疯的回答是:+hello); hello=xs.xfireMethod(null); System.out.println(服务器胡言乱语的说:+hello); catch (Exception e) e.printStackTrace(); 非常不好理解,程序越简单,省略的逻辑就越多。serviceURL其实就是间接用到了wsdl协议,只是换了种写法,serviceModel是主干(不知道怎么解释,逻辑全封装在jar里面),四个参数,一般用到的就是接口和wsdl所在命名空间,心跳设置是怕网络太慢产生异常(可以不设置的,只要厂家不在乎),这种方法不建议使用。看看稍微复杂点但是很实用的方式,通过wsdl生成java代码通过wsdl生成java代码使用了Axis的思想,可以在原项目上新建一个包出来,但是这样的话项目就要在加了支持XFire的jar包外还要加入支持Axis的jar包,非常大,所以建议重新建一个项目,反正是客户端和服务端刚好分开来操作显得清晰明了得多,并且,客户端不需要创建Web Service Project,随便哪种java工程都行,只要把jar包导进去就行(XFire的jar包是不要下载的,MyEclipse自带的)Axis的jar包有9个。不列出来了,要的话可以自己去下载(可以找我要)奔主题jar包准备好后我创建的是Web Project,然后把包导入进去。在项目上单击右键-Run As-Run Configurations . 在java Application上单击右键-NewProject那里选择自己的项目,Main class那里如果装了WebService开发环境的话在Search那里可以找到WSDL2Java - org.apache.axis.wsdl选项,选择它后再单击上图第二个选项卡Arguments,在Program arguments里面输入-S -u 和服务端生成的wsdl的访问路径,上面服务端生成的wsdl文件访问路径为http:/localhost:8080/XFireBegin/services/XFireFirst?wsdl; ,那这里输入的就是-S -u http:/localhost:8080/XFireBegin/services/XFireFirst?wsdl; 这里大小写和空格有严格要求,不能随便来。这里的-S -u是WebService的命令,命令有很多,要自己去记,不扯远了。再选择Run跑起来,配置没错的话,在项目上刷新就可以多一个包出来(没有的话,说明操作出了问题),把那个包移到Src下面去看看多出来的java文件不是我们写的,是通过网络协议http:/localhost:8080/XFireBegin/services/XFireFirst?wsdl;将服务端那里的java文件还原出来的。这些文件很复杂接口文件在XFireFirstLocator.java里面,必须要找到主方法,不然连服务端接口里面的方法都没办法调用.客户端主要是配置,基本上是不用写什么Code的,不过到了实际项目上时要从客户端调用服务端的接口方法,还是要写code。在这里我写了个Test测试下,在main方法中就两句Code:XFireFirstLocator xf=new XFireFirstLocator(); try String hello=xf.getXFireFirstHttpPort().xfireMethod(张山疯); System.out.println(hello); catch (RemoteException e) / TODO Auto-generated catch block e.printStackTrace(); catch (ServiceException e) / TODO Auto-generated catch block e.printStackTrace(); XFireFirstLocator.java里面主方法是getXFireFirstHttpPort(),不是每个人的都一样,这要自己去找,客户端就是这一点稍微麻烦点。xfireMethod方法是来自服务端,客户端没写过任何接口。其他的操作就跟我们平常没什么区别了,除了调用还是调用,整个框架就是这个样子。用XFire是CXF的领域,比较简单的方式,适合懒人,如果想体会下Code的逻辑过程可以用Axis来生成服务端,生成客户端的操作是一样的,不需要再讲解了,下面讲讲自己用过的Axis生成服务端:和XFire生成服务端不同,Axis生成客户端不一定非要创建Web Service Project,可以随便创建java工程.在这个Demo中加入了串行,主要是想知道WebService支不支持串行。创建Web Project-加入Axis的支持jar包-创建接口-实现接口-在WEB-INF下创建deploy.wsdd文件,此文件的内容任何人都可以直接拿去用需要改动的地方都注释好了: 这个文件不用纠结,可以直接来用,根据自己的需要去修改即可。然后在任何地方创建一个批处理文件,名字随便命。我的为makeWsdd.bat此文件命令是关键,生成wsdl协议全都靠它了。内容为如下: set Axis_Lib=C:axis-1_4lib set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%set Axis_Servlet=http:/localhost:8080/WebServer/services/AdminService%Java_Cmd% org.apache.axis.client.AdminClient -l %Axis_Servlet% E:workplaceWebServerWebRootWEB-INFdeploy.wsddOK一切准备就绪,启动tomcat,然后在makeWsdd.bat上双击(tomcat必须是启动状态),执行成功会出现界面一闪而过,不然的话就报错一闪而过。因为是一闪而过,所以不知道是否执行成功,可以到tomcatwebapps项目名称WEB-INF下看是否出现server-config.wsdd文件,出现

温馨提示

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

评论

0/150

提交评论