您的位置:首页 > 其它

Axis 1.x 客户端调用CXF 2.7 服务端

2014-10-25 00:00 253 查看
摘要: axis全称Apache EXtensible Interaction System 即阿帕奇可扩展交互系统。Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。

最近在项目里面使用了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);
}

}

这样我们测试一下 可以的 是调用通了。

有什么问题 可以随时在下面评论
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: