用JAVA开发WEBService(学习总结)_第1页
用JAVA开发WEBService(学习总结)_第2页
用JAVA开发WEBService(学习总结)_第3页
用JAVA开发WEBService(学习总结)_第4页
用JAVA开发WEBService(学习总结)_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、用JAVA开发WEB Service一 学习前的准备开发环境 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_4webappsaxisWEB-INF“。然后将jar包拷贝到产品serverdefaultlib下。

2、至此部署完毕。三 开发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,在浏览器地

3、址输入打开页面后你会看到 Click to see the WSDL <-点击链接,如果你上面的步骤都正常,类也没有带其他包的话,那么就生成了wsdl了。至此webService服务端发布成功,接下来就是编写客户端了。四 开发webService客户端。(DLL方式) 这里为了方便测试,我们就以CreateGWS405产品为客户端,在create.war下新建一个JSP页面,代码如下:String urlname = ""Service s = new Service();Call call = (Call) s.createCall();/要调用的方法名称call.

4、setOperationName("say");call.setTargetEndpointAddress(urlname);/方法传入一个String型参数,返回值也是StringString val = (String) call.invoke(new Object "haha" );System.out.println(val);需要导入:import ll;import org.apache.axis.client.Service;至此一个简单的客户端就编写好了。上面服务端的方法参数是String,返回值也是String,而实际业务中可能还需要以

5、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 =

6、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;

7、 abc0=str; return abc;public int getInt(String arg) System.out.println("call webservice getInt."); return arg.length();这个服务端有4个方法,分别返回不同类型的值。客户端就要改成String urlname = ""Service s = new Service();try Call call = (Call) s.createCall();/要调用的方法名称call.setOperationName("say");c

8、all.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 = "

9、;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();

10、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("

11、;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 = &q

12、uot;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)

13、 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 ll;import org.apache.axis.client.Service;import org.apache.axis.encoding.XMLType;学习中需要注意的地方:1、 在客户端调用其他程序的类时

14、需要先把外部类引入到myService.warWEB-INF下新建classes文件夹,包路径与原类相同,如果是jar文件,则需要复制到myService.warWEB-INFlib下。这样.jws格式文件才能正确编译为.class文件。2、 调用其他服务器上的webservice时需要注意一定要将包导入完全,如果包缺少会影响使用。五 开发webService客户端。Dynamic Proxy方式 (代理方式) 还是以上面那个服务端为例,用代理的方式来调用webService我们只需要对客户端的代码进行修改就可以了,代码如下String wsdlUrl = ""String

15、 nameSpaceUri = ""/ 服务名String serviceName = "SayHelloService"/ 服务String portName = "SayHello" / 创建代理对像ServiceFactory serviceFactory;try serviceFactory = ServiceFactory.newInstance();/创建远程服务Service service = (Service) serviceFactory.createService(new URL(wsdlUrl), new QN

16、ame(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.g

17、etList("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.rmi.Remo

温馨提示

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

评论

0/150

提交评论