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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用JA V A开发WEB Service

一学习前的准备

开发环境JBOSS4.05+axis1.4+JDK1.5

axis1.4下载地址:/dist/ws/axis/1_4/,选择axis-bin-1_4.zip

所需要的JAR包:

二部署axis

以我们CreateGWS405产品为例,在产品server\default\deploy目录下新建一个应用,比如叫myService.war。在里面新建文件夹“WEB-INF”,将axis1.4以下目录中的web.xml文件拷贝到“WEB-INF”下。“axis-bin-1_4\axis-1_4\webapps\axis\WEB-INF“。然后将jar包拷贝到产品server\default\lib下。至此部署完毕。

三开发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”同级目录,然后更改其名字为”SayHel lo.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型参数,返回值也是String

String 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 String[a];

abc[0]=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型参数,返回值也是String

String 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";

//传入参数类型为String

call4.addParameter(new QName("st1"), XMLType.XSD_STRING, ParameterMode.IN);

//返回一个ArrayList

call4.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和int

call2.addParameter(new QName("st2"), XMLType.XSD_STRING, ParameterMode.IN);

相关文档
最新文档