用JAVA开发WEB Service(学习总结)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);