简单的webservice发布和测试
eclipse发布
参考:http://www.cnblogs.com/cherxu/p/5179053.html
很简单,接口写好后,打个war包放到tomcat里面跑起来;
本例采用axis来测试;
发布好后,写一个简单的测试方法。
在eclipse里面新建一个动态web工程
写一个测试类TestWS,代码如下:
package com.enfo.testws;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class TestWS {
public static void main(String[] args) {
try{ //ip端口/ws项目名/services/接口方法所在类名,也可以在地址后面加上?wsdl
String endpoint = "http://127.0.0.1:8080/LoginService/services/LogonService";
Service service = new Service(); //新建一个axis的service对象
Call call = (Call)service.createCall();//通过service新建一个axis的call对象
call.setTargetEndpointAddress(endpoint);//设置call要访问的地址
/**QName命名空间,http://ws.enfo.com,打开http://127.0.0.1:8080/LoginService/services/LogonService?wsdl
*可以看到页面上显示成xml格式,里面有命名空间信息targetNamespace="http://ws.enfo.com"
*ws.enfo.com其实就是接口类所在的包名:src下的com.enfo.ws
*/
call.setOperationName(new QName("http://ws.enfo.com","hello"));//http://service.enfo.com是给接口地址随便设置的一个命名,hello是要调用的ws接口方法名
call.addParameter(new QName("http://ws.enfo.com","name"), org.apache.axis.Constants.XSD_STRING, ParameterMode.IN);//设置ws方法的参数对应的参数类型等信息
//call.addParameter(new QName("http://ws.enfo.com","password"), org.apache.axis.Constants.XSD_STRING, ParameterMode.IN);
call.setReturnClass(String.class);//设置ws方法返回的值的类型;注意:如果方法中返回的是int,这里也可以设置成String.class
//以上先创建call对象,再设置要访问接口的地址,给要执行的方法设置命名,给方法设置参数类型,设置返回类型
String name="taptqqqqq"; //设置要传到接口的参数
String ret =(String)call.invoke(new Object[] {name});//调用call的invoke方法访问接口,将设好的参数传过去,得到接口返回值
System.out.println("发送的是:"+name);
System.out.println("返回的是:"+ret);
}catch(Exception e){
System.err.println(e.toString());
}
}
}
测试方法相关jar包:axis.jar,commons-discovery-0.2.jar,commons-logging.jar,jaxrpc.jar,saaj.jar,webserviceutils.jar,
wsdl4j.jar,补充:activation-1.1.jar,mail.jar
下载地址:
https://pan.baidu.com/s/1nvLXMIX