最近在项目里面使用了webservices技术,但是框架 客户那边已经选择好了。 服务端已经完成了。我们没有选择。只能调用。
这边客户端是使用的axis1.x 服务端使用的是CXF 2.7 下面我们就简单的写一个用例 来介绍下webservices搭建和调用。
首先 我们到http://cxf.apache.org上面下载cxf2.7版本。
在Eclipse里面新建一个Java工程 把jar增加到项目里面。在src下面新建一个包 me.service.biz
下面我们开始新建一个接口:
package me.service.biz;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public abstract interface EwmBiz {
@WebMethod
public String getEwmmethodFor(@WebParam(name="text") String text) throws Exception;
}
在包me.service.biz.impl下面新建一个实现类
package me.service.biz.impl;
import javax.jws.WebService;
import me.service.biz.EwmBiz;
@WebService(endpointInterface="me.service.biz.EwmBiz",name="EwmBiz")
public class EwmBizImpl implements EwmBiz{
@Override
public String getEwmmethodFor(String text) throws Exception {
System.out.println("parameter is =======>>>> " + text);
return "parameter is =======>>>> " + text;
}
}
我们的接口就完成了 下面我们写一个main方法来启动服务端:
package me.service;
import me.service.biz.EwmBiz;
import me.service.biz.impl.EwmBizImpl;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
public class ServiceRun {
public static void main(String[] args) {
System.out.println("Starting Server");
EwmBiz ewmBiz = new EwmBizImpl();
String address = "http://localhost:8090/EwmBiz";
javax.xml.ws.Endpoint.publish(address, ewmBiz);
System.out.println("服务启动完成。。。。");
}
}
上面启动一下 我们的服务端就完成了。
下面我们新建一个Java工程 完成client 客户端的调用 把axis下面的jar全部加到lib下面 在加一个commons-logging.jar
在src下面新建一个Java类
代码如下:
package me.client;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class ClientRun {
public static void main(String[] args) throws Exception {
String url = "http://localhost:8090/EwmBiz";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new URL(url));
String targetNamespace = "http://biz.service.me/";
QName qName = new QName(targetNamespace,"getEwmmethodFor");
call.setOperationName(qName);
// QName qName2 = new QName(targetNamespace, "");
call.addParameter("text", null,ParameterMode.IN);
String message = (String) call.invoke( new Object[]{"yangzhongren"});
System.out.println(message);
}
}
这样我们测试一下 可以的 是调用通了。
有什么问题 可以随时在下面评论