




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用JAVA开发WEB Service一 学习前的准备开发环境 JBOSS4.05+axis1.4+JDK1.5axis1.4下载地址: /dist/ws/axis/1_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_4webappsaxisWEB-INF“。然后将jar包拷贝到产品serverdefaultlib下。至此部署完毕。三 开发webService服务端 用编辑器编写一个简单的服务类,代码如下:import java.util.*;import java.text.*;public class SayHello public String say(String name)System.out.println(call webservice say.);return Hello + name;将该类复制到myService.war中与“WEB-INF”同级目录,然后更改其名字为”SayHello.jws”。启动CreateGWS405,在浏览器地址输入http:/localhost:88/myService/SayHello.jws?wsdl打开页面后你会看到 Click to see the WSDL -点击链接,如果你上面的步骤都正常,类也没有带其他包的话,那么就生成了wsdl了。至此webService服务端发布成功,接下来就是编写客户端了。四 开发webService客户端。(DLL方式) 这里为了方便测试,我们就以CreateGWS405产品为客户端,在create.war下新建一个JSP页面,代码如下:String urlname = http:/localhost:88/myService/SayHello.jws?wsdl;Service s = new Service();Call call = (Call) s.createCall();/要调用的方法名称call.setOperationName(say);call.setTargetEndpointAddress(urlname);/方法传入一个String型参数,返回值也是StringString val = (String) call.invoke(new Object haha );System.out.println(val);需要导入:import org.apache.axis.client.Call;import org.apache.axis.client.Service;至此一个简单的客户端就编写好了。上面服务端的方法参数是String,返回值也是String,而实际业务中可能还需要以int,boolean等类型做参数,而且参数不止一个。返回值有时是int有时又是集合ArrayList那该怎么做呢,请看下面这个服务端代码import java.util.*;import java.text.*;public class SayHello public String say(String name)System.out.println(call webservice say.);return Hello + name;public ArrayList getList(String str) ArrayList strs = new ArrayList(); System.out.println(call webservice getList.); strs.add(A); strs.add(B); strs.add(C); strs.add(str); return strs;public String getStrs(String str,int a) System.out.println(call webservice getStrs.); String abc = new Stringa; abc0=str; return abc;public int getInt(String arg) System.out.println(call webservice getInt.); return arg.length();这个服务端有4个方法,分别返回不同类型的值。客户端就要改成String urlname = http:/localhost:8080/aixs_proxy_demo/SayHello.jws?wsdl;Service s = new Service();try Call call = (Call) s.createCall();/要调用的方法名称call.setOperationName(say);call.setTargetEndpointAddress(urlname);/方法传入一个String型参数,返回值也是StringString val = (String) call.invoke(new Object haha );System.out.println(val);Call call4 = (Call) s.createCall();/要调用的方法名称call4.setTargetEndpointAddress(urlname);call4.setOperationName(getList);String st1 = abc;/传入参数类型为Stringcall4.addParameter(new QName(st1), XMLType.XSD_STRING, ParameterMode.IN);/返回一个ArrayListcall4.setReturnType(new QName(ArrayList), ArrayList.class);ArrayList list = (ArrayList) call4.invoke(new Object st1 );System.out.println(+ + list.size();Call call2 = (Call) s.createCall();String st2 = abc;int count = 303;call2.setOperationName(getStrs);call2.setTargetEndpointAddress(urlname);/传入参数类型为String和intcall2.addParameter(new QName(st2), XMLType.XSD_STRING, ParameterMode.IN);call2.addParameter(new QName(count), XMLType.XSD_INT, ParameterMode.IN);/返回一个Stringcall2.setReturnType(new QName(String), String.class);String strs = (String) call2.invoke(new Object st2,Integer.valueOf(count) );System.out.println(- + strs.length);Call call3 = (Call) s.createCall();String st3 = abcdefg;call3.setOperationName(getInt);call3.setTargetEndpointAddress(urlname);/传入参数类型为Stringcall3.addParameter(new QName(st3), XMLType.XSD_STRING, ParameterMode.IN);/返回一个intcall3.setReturnType(new QName(Integer), Integer.class);Integer getint = (Integer) call3.invoke(new Object st3);System.out.println(getint); catch (Exception e) e.printStackTrace();需要导入: import java.util.ArrayList;import space.QName;import javax.xml.rpc.ParameterMode;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.encoding.XMLType;学习中需要注意的地方:1、 在客户端调用其他程序的类时需要先把外部类引入到myService.warWEB-INF下新建classes文件夹,包路径与原类相同,如果是jar文件,则需要复制到myService.warWEB-INFlib下。这样.jws格式文件才能正确编译为.class文件。2、 调用其他服务器上的webservice时需要注意一定要将包导入完全,如果包缺少会影响使用。五 开发webService客户端。Dynamic Proxy方式 (代理方式) 还是以上面那个服务端为例,用代理的方式来调用webService我们只需要对客户端的代码进行修改就可以了,代码如下String wsdlUrl = http:/localhost:8080/aixs_proxy_demo/SayHello.jws?wsdl;String nameSpaceUri = http:/localhost:8080/aixs_proxy_demo/SayHello.jws;/ 服务名String serviceName = SayHelloService;/ 服务String portName = SayHello; / 创建代理对像ServiceFactory serviceFactory;try serviceFactory = ServiceFactory.newInstance();/创建远程服务Service service = (Service) serviceFactory.createService(new URL(wsdlUrl), new QName(nameSpaceUri, serviceName);/向上转型为接口MyServiceInterface proxy = (MyServiceInterface) service.getPort(new QName(nameSpaceUri, portName), MyServiceInterface.class);/调用相应方法System.out.println(proxy.say -+ proxy.say(li lei);System.out.println(proxy.getList -+ proxy.getList(AAAA).size();System.out.println(proxy.getStrs -+ proxy.getStrs(BBBB,10).length);System.out.println(proxy.getInt -+ proxy.getInt(ABCDEFG); catch (MalformedURLException e) e.printStackTrace(); catch (ServiceException e) e.printStackTrace();需要导入:import .MalformedURLException;import .URL;import space.QName;import javax.xml.rpc.ServiceException;import javax.xml.rpc.ServiceFactory;import org.apache.axis.client.Service;MyServiceInterface接口类的编写import java.rm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南长沙雨花区雅境中学2026届九上化学期中联考试题含解析
- 2026届重庆八中学、九十五中学等学校化学九年级第一学期期中经典试题含解析
- 青川抽污水施工方案设计
- 河北省保定市清苑区北王力中学2026届九上化学期中教学质量检测试题含解析
- 高层过道清理方案范本
- 员工培训结交客户
- 装配生产工艺培训大纲
- 陕西省宝鸡岐山县联考2026届化学九上期中检测模拟试题含解析
- 2026届江苏省连云港市新海实验中学英语九年级第一学期期末学业水平测试试题含解析
- 2026届重庆市西南大附属中学化学九年级第一学期期末预测试题含解析
- 2023年重庆市大渡口区春晖路街道阳光社区工作人员考试模拟试题及答案
- 医疗机构门诊患者流行病学调查表
- GB/T 18253-2000钢及钢产品检验文件的类型
- 虚拟仪器-第4章-LabVIEW的程序结构课件
- 2022年太原市第二热力有限责任公司招聘笔试试题及答案解析
- 《中职地理》配套教学课件
- 水运工程质量检验标准表格
- DB51∕T 2571-2019 林下黄精种植技术规程
- 世园会周边环境综合整治工作汇报
- 金相检验4-结构钢的金相检验
- 不同截面钢牛腿设计计算(excel)
评论
0/150
提交评论