用JAVA开发WEB Service(学习总结).docx





《用JAVA开发WEB Service(学习总结).docx》由会员分享,可在线阅读,更多相关《用JAVA开发WEB Service(学习总结).docx(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、用JAVA开发WEB Service(学习总结) 用JAVA开发WEB Service(学习总结)用JAVA开发WEBService一学习前的打算开发环境JBOSS4.05+axis1.4+JDK1.5axis1.4下载地址:,选择axis-bin-1_4.zip所须要的JAR包:二部署axis以我们CreateGWS405产品为例,在产品serverdefaultdeploy书目下新建一个应用,比如叫myService.war。在里面新建文件夹“WEB-INF”,将axis1.4以下书目中的web.xml文件拷贝到“WEB-INF”下。“axis-bin-1_4axis-1_4webapps
2、axisWEB-INF“。然后将jar包拷贝到产品serverdefaultlib下。至此部署完毕。三开发webService服务端用编辑器编写一个简洁的服务类,代码如下:importjava.util.*;importjava.text.*;publicclassSayHello将该类复制到myService.war中与“WEB-INF”同级书目,然后更改其名字为”SayHello.jws”。启动CreateGWS405,在阅读器地址输入:88/myService/SayHello.jws?wsdl打开页面后你会看到ClicktoseetheWSDL四开发webService客户端。(DLL
3、方式)这里为了便利测试,我们就以CreateGWS405产品为客户端,在create.war下新建一个JSP页面,代码如下:Stringurlname=:88/myService/SayHello.jws?wsdl;Services=newService();Callcall=(Call)s.createCall();/要调用的方法名称call.setOperationName(say);call.setTargetEndpointAddress(urlname);/方法传入一个String型参数,返回值也是StringStringval=(String)call.invoke(newObje
4、cthaha);System.out.println(val);须要导入:importorg.apache.axis.client.Call;importorg.apache.axis.client.Service;至此一个简洁的客户端就编写好了。上面服务端的方法参数是String,返回值也是String,而实际业务中可能还须要以int,boolean等类型做参数,而且参数不止一个。返回值有时是int有时又是集合ArrayList那该怎么做呢,请看下面这个服务端代码importjava.util.*;importjava.text.*;publicclassSayHellopublicStri
5、nggetStrs(Stringstr,inta)System.out.println(callwebservicegetStrs.);Stringabc=newStringa;abc0=str;returnabc;publicStringsay(Stringname)publicArrayListgetList(Stringstr)ArrayListstrs=newArrayList();System.out.println(callwebservicegetList.);strs.add(A);strs.add(B);strs.add(C);strs.add(str);returnstrs
6、;System.out.println(callwebservicesay.);returnHello+name;这个服务端有4个方法,分别返回不同类型的值。客户端就要改成publicintgetInt(Stringarg)System.out.println(callwebservicegetInt.);returnarg.length();Stringurlname=:8080/aixs_proxy_demo/SayHello.jws?wsdl;Services=newService();tryCallcall=(Call)s.createCall();/要调用的方法名称call.setO
7、perationName(say);call.setTargetEndpointAddress(urlname);/方法传入一个String型参数,返回值也是StringStringval=(String)call.invoke(newObjecthaha);System.out.println(val);Callcall4=(Call)s.createCall();/要调用的方法名称call4.setTargetEndpointAddress(urlname);call4.setOperationName(getList);Stringst1=abc;/传入参数类型为Stringcall4.
8、addParameter(newQName(st1),XMLType.XSD_STRING,/返回一个ArrayListcall4.setReturnType(newQName(ArrayList),ArrayListlist=(ArrayList)call4.invoke(newObjectSystem.out.println(+list.size();Callcall2=(Call)s.createCall();Stringst2=abc;intcount=303;call2.setOperationName(getStrs);call2.setTargetEndpointAddress(
9、urlname);/传入参数类型为String和intcall2.addParameter(newQName(st2),XMLType.XSD_STRING,ParameterMode.IN);ArrayList.class);st1);ParameterMode.IN);call2.addParameter(newQName(count),XMLType.XSD_INT,/返回一个Stringcall2.setReturnType(newQName(String),String.class);Stringstrs=(String)call2.invoke(newObjectst2,Callc
10、all3=(Call)s.createCall();Stringst3=abcdefg;call3.setOperationName(getInt);call3.setTargetEndpointAddress(urlname);/传入参数类型为Stringcall3.addParameter(newQName(st3),XMLType.XSD_STRING,/返回一个intcall3.setReturnType(newQName(Integer),Integer.class);Integergetint=(Integer)call3.invoke(newObjectst3);System.o
11、ut.println(getint);Integer.valueOf(count);System.out.println(-+strs.length);ParameterMode.IN);ParameterMode.IN);catch(Exceptione)e.printStackTrace();须要导入:importjava.util.ArrayList;importjavax.xml.namespace.QName;importjavax.xml.rpc.ParameterMode;importorg.apache.axis.client.Call;importorg.apache.axi
12、s.client.Service;importorg.apache.axis.encoding.XMLType;学习中须要留意的地方:1、在客户端调用其他程序的类时须要先把外部类引入到myService.warWEB-INF下新建classes文件夹,包路径与原类相同,假如是jar文件,则须要复制到myService.warWEB-INFlib下。这样.jws格式文件才能正确编译为.class文件。2、调用其他服务器上的webservice时须要留意肯定要将包导入完全,假如包缺少会影响使用。五开发webService客户端。DynamicProxy方式(代理方式)还是以上面那个服务端为例,用代
13、理的方式来调用webService我们只须要对客户端的代码进行修改就可以了,代码如下StringwsdlUrl=:8080/aixs_proxy_demo/SayHello.jws?wsdl;serviceFactory=ServiceFactory.newInstance();/创建远程服务Serviceservice=(Service)serviceFactory.createService(newURL(wsdlUrl),newQName(nameSpaceUri,serviceName);/向上转型为接口MyServiceInterfaceproxy=(MyServiceInterfa
14、ce)service.getPort(newQName(nameSpaceUri,portName),MyServiceInterface.class);/调用相应方法System.out.println(proxy.say-+proxy.say(lilei);+proxy.getList(AAAA).size();+proxy.getStrs(BBBB,10).length);+proxy.getInt(ABCDEFG);System.out.println(proxy.getList-System.out.println(proxy.getStrs-System.out.println(p
15、roxy.getInt-StringnameSpaceUri=/服务名StringserviceName=SayHelloService;/服务StringportName=SayHello;ServiceFactoryserviceFactory;try:8080/aixs_proxy_demo/SayHello.jws;/创建代理对像catch(MalformedURLExceptione)e.printStackTrace();e.printStackTrace();catch(ServiceExceptione)须要导入:.MalformedURLException;.URL;impo
16、rtjavax.xml.namespace.QName;importjavax.xml.rpc.ServiceException;importjavax.xml.rpc.ServiceFactory;importorg.apache.axis.client.Service;MyServiceInterface接口类的编写importjava.rmi.Remote;importjava.util.*;publicinterfaceMyServiceInterfaceextendsRemotepublicStringsay(Stringname);publicArrayListgetList(St
17、ringstr);publicStringgetStrs(Stringstr,inta);publicintgetInt(Stringarg);须要留意的是:1、接口必需继承Remote类,才能做代理2、接口里面的方法必需和jws文件中的方法保持一样。扩展阅读:Java_Web开发实战经典总结-第三部分Web高级开发(图文并貌)第三部分Web高级开发第九章Servlet程序开发通过本章的的学习,使我了解了servlet与jsp之间的关系和servlet的生命周期及对应的操作方法及内置对象在servlet中的运用。了解了requestdispatcher接口的作用,并可以运用mvc进行程序的开发
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 用JAVA开发WEB Service学习总结 JAVA 开发 WEB Service 学习 总结

限制150内