包含webservicecxf的词条

http://www.itjxue.com  2023-01-26 18:25  来源:未知  点击次数: 

基于CXF的WebService服务

CXF是Apache的一个开源框架,使用它可以发布一个类服务,其他应用程序可以调用接口,以下是我搭建webservice服务的步骤,主要是与spring整合搭建,用的是cxf 3.x和spring 4.x。

这里需要说明的一点是cxf-core包在2.x版本中命名为cxf-rt-core,低版本的spring用的都是cxf-rt-core,刚开始我引的包也是这个,maven库中维护到2.7版之后这个包就以cxf-core的命名开始3.x的版本维护,由于与其他包的版本冲突造成服务一直搭不起来,浪费了很多时间。

引入cxf.jaxws jar包

什么叫做基于cxf的webservice

Apache CXF是一个开源的Service框架,可以用于简化用户的service开发,基于CXF开发的应用可提供SOAP、XML/HTTP、RESTFUL HTTP或CORBA等服务。CXF底层页可以使用不同的传输协议,包括HTTP、JMS或JBI等。

根据CXF官方的说明,CXF包含以下特性:

支持大量的Web Service标准,包括SOAP、WS-I Basic Profile、WSDL、WS-Addressing、WS-Policy、WS-ReliableMessaging和WS-Security。

CXF支持大量的前端(frontend)编程模型。CXF实现了标准的JAX-WS API,它也包括一种被称为简单前端(simple frontend)的模型,这种模型无需annotation支持。

cxf如何创建webservice客户端

public static void main(String[] args) throws Exception {

//这个是用cxf 客户端访问cxf部署的webservice服务

//千万记住,访问cxf的webservice必须加上namespace ,否则通不过

//现在又另外一个问题,传递过去的参数服务端接收不到

JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();

org.apache.cxf.endpoint.Client client = dcf.createClient("");

//url为调用webService的wsdl地址

QName name=new QName("","getAlbumList");

//namespace是命名空间,methodName是方法名

String xmlStr = "?xml version=\"1.0\" encoding=\"UTF-8\"?"

+ " facelook"

+ " condition"

+ " name家/name"

+ " description/description"

+ " pageno/pageno"

+ " pagesize/pagesize"

+ " /condition"

+ " /facelook";

//paramvalue为参数值

Object[] objects=client.invoke(name,xmlStr);

//调用web Service//输出调用结果

System.out.println(objects[0].toString());

}

如何使用CXF调用webservice接口

axis的接口生成的是wsdl cxf的接口wsdl或wadl都可以 看生成的是wsdl还是wadl、wsdl用JaxWsDynamicClientFactory这种方式 wadl用httpclient就可以 工具的话可以用soapui直接调用

WebService CXF 怎么设置 timeout

由于用CXF构建的webservice使用的是spring配置方式很简单

但是由于客户端使用jaxws:client方式请求的,这个请求方式不能直接配置timeout的

用spring配置jaxws客户端请求的的配置:

Xml代码

jaxws:client id="" serviceClass="" address="" /

如果使用这种方式配置直接有timeout属性

Xml代码

http-conf:conduit

http-conf:client ConnectionTimeout="30000"/

/http-conf:conduit

那我们继续使用jaxws:client配置方式如何设置timeout呢?

只需在我们调用web service的代码之处加上:

Java代码

long timeout = 10000L;

client = ClientProxy.getClient(对应spring配置文件里你配置的clientid);

if (client != null) {

HTTPConduit conduit = (HTTPConduit) client.getConduit();

HTTPClientPolicy policy = new HTTPClientPolicy();

policy.setConnectionTimeout(timeout);

policy.setReceiveTimeout(timeout);

conduit.setClient(policy);

}

web services和cxf的区别

新一代的 Web Services 框架如 Axis2、CXF 都是由现有的项目中逐渐演化而来的,Axis2 是由大家熟悉的 Axis 1.x 系列演化过来,而 Apache CXF 则是由 Celtix 和 XFire 项目整合而生,并且刚刚发布了 2.0.2 的最新版本,不过仍是 Apache 的一个孵.

(责任编辑:IT教学网)

更多

推荐管理维护文章