`
wanghuanqiu
  • 浏览: 110078 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

CXF客户端对axis服务器的访问

阅读更多

    CXF 和 axis都是非常不错的webservice的技术框架。最近项目需要了解了一下两个框架的访问。

首先说一下axis2客户端对axis2服务器的访问常用的两种方式:

1.用call方式

import org.apache.axis.client.Service;
import org.apache.axis.client.Call;
import javax.xml.namespace.QName;
public class TestClient {
public static void main(String[] args) {
    try {
     String name = "fei";

//服务发布地址
     String endpoint = "####/service";
     Service service = new Service();
     Call call = (Call)service.createCall();
     call.setTargetEndpointAddress(endpoint);

//第一个参数是命名空间,第二个参数是调用的方法
     call.setOperationName(new QName("http://**", "method"));
     System.out.println(call.getTargetEndpointAddress());
     String result = (String)call.invoke(new Object[]{name});
     System.out.println(result);
   } catch(Exception e) {
   e.printStackTrace();
   }
}
}

2.rpc调用方式

import javax.xml.namespace.QName;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class RPCClient
{
public static void main(String[] args) throws Exception
{
// 使用RPC 方式调用WebService
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
// 指定调用WebService 的URL
EndpointReference targetEPR = new EndpointReference(
"http://**/Service");
options.setTo(targetEPR);
// 指定访问 方法的参数值
Object[] ob = new Object[] {"fei"};
// 指定访问 方法返回值的数据类型的Class 对象
Class[] classes = new Class[] {String.class};
// 指定要调用的方法及WSDL 文件的命名空间
// QName 第一个参数为命名空间即文件中xschema中targetnamespace的值
QName qob = new QName("**", "method");
// 调用访问 方法并输出该方法的返回值
System.out.println(serviceClient.invokeBlocking(qob, ob, classes)[0]);
}
}

 CXF客户端对对CXF服务器的访问,很简单。

 

JaxWsProxyFactoryBean jaxfactory = new JaxWsProxyFactoryBean();
  jaxfactory.getInInterceptors().add(new LoggingInInterceptor());
  jaxfactory.getOutInterceptors().add(new LoggingOutInterceptor());
  jaxfactory.setServiceClass(*Service.class);
 jax factory.setAddress("http://*/service?wsdl");
  *Service client = (*Service)jax factory.create();

client.method("参数");

 

这里说的CXF客户端访问是不需要axis的类接口的,是通过动态创建客户端来实现的。

这里注意CXF中cxf版本和jaxb的版本匹配,否则会出现无法创建的错误java.lang.reflect.UndeclaredThrowableException等异常。

 

import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
public class testClient {
 private testClient() {
 }
 public static void main(String args[]) {
  ClassLoader cl = Thread.currentThread().getContextClassLoader();
  JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
   Client client = dcf.createClient("http:**/*service?wsdl");
  Thread.currentThread().setContextClassLoader(cl);
  try {

//invoke第一个参数是方法名称,第二个是参数
   Object[] objects = client.invoke("method", "fei");
   System.out.println("返回对象的长度:" + objects.length);
   System.out.println(objects[0].toString());
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 

1
0
分享到:
评论
4 楼 小心前面的路 2013-08-05  
有帮助  谢谢
3 楼 wanghuanqiu 2013-07-22  
schuy 写道
我想问一下 你 CXF 与 AXIS 之间调用 对应的版本 都是 多少的??
  能给我源码 案例么?

我用的axis2 2.1.4 CXF 2.2
2 楼 schuy 2013-07-14  
我想问一下 你 CXF 与 AXIS 之间调用 对应的版本 都是 多少的??
  能给我源码 案例么?
1 楼 heipacker 2013-05-01  
写的什么玩意

相关推荐

    webservice :spring 3+cxf3.4服务方,AXIS1.4请示方调用

    为了能够通过Axis 1.4客户端调用上面部署的WebService,需要对生成的WSDL文件进行一定的修改,使其符合Axis 1.4的要求。 **步骤四:修改WSDL文件** 1. **下载WSDL文件**:通过访问服务的WSDL URL将其保存为`...

    cxf+spring+axis包

    【描述】"cxf-2.4.1+axis-1.4,整合spring3.0所用jar包"说明了这个压缩包的目的,即为开发者提供了一套完整的环境,用于在Spring 3.0框架下整合Apache CXF(一个开源的服务端和客户端Web服务实现)和Axis(一个用于...

    WebService:Axis客户端调用需要身份验证的CXF服务

    在本场景中,我们关注的是Axis客户端如何调用需要身份验证的CXF服务。Axis是一个开放源码的SOAP栈,常用于创建和部署Web服务,而CXF则是一个更现代的Java框架,也用于构建和消费Web服务,支持WS-Security等高级特性...

    cxf开发webservice客户端和服务器端文档

    cxf开发webservice客户端和服务器端 cxf(Apache CXF)是一款开源的WebService框架,用于开发webservice客户端和服务器端。它提供了许多有用的功能,如自动生成服务桩、客户调用桩和WSDL文档等,使得开发webservice...

    webservice axis2 cxf jar包及简单实例

    可以使用CXF或Axis2提供的客户端工具,或者编写自己的Java代码。 6. **运行实例**:运行客户端,你应该能在控制台看到服务返回的“Hello, name”字符串。 理解并掌握Axis2和CXF的使用,对于开发和维护企业级的...

    CXF客户端调用以及发布服务

    以下是一个CXF客户端代码示例,用于调用远程服务的方法: ```java public class CXFClientSample { public static void main(String[] args) throws Exception { JaxWsProxyFactoryBean factory = new ...

    搜集网上的资料总结的XFire,Axis2,CXF的对比

    其次,Axis2同样是Apache的一个重要项目,它是一个全面的Web服务框架,集成了SOAP、WSDL等技术,能够生成Java和其他语言的Web服务客户端和服务器端代码。尽管其功能强大,但这也导致了Axis2的复杂性,可能不适合简单...

    关于WebService的实例及相关axis/apache-cxf的应用

    在本文中,我们将深入探讨WebService的原理以及如何利用Apache Axis和Apache CXF这两个流行的Java框架来实现和消费WebService。 首先,理解WebService的基础概念至关重要。WebService是一种通过互联网进行通信的...

    axis cxf 创建webservice

    ### 使用Axis/CXF创建WebService详解 #### Axis/CXF概述 - **Axis**: 是Apache软件基金会提供的用于构建和调用Web服务的开源项目。 - **Axis2**: Axis的下一代产品,改进了性能并提供了更好的模块化架构。 - **CXF*...

    详细介绍XFire和CXF还有AXIS开发

    Axis提供了一种简单的命令行工具,可以快速生成服务客户端和服务器端的代码。尽管较XFire和CXF稍显笨重,但Axis因其广泛的社区支持和丰富的教程资源而广受欢迎。 在使用这些框架时,开发者通常会遇到自定义对象的...

    axis1.2、cxf框架

    在IT行业中,Axis1.2和CXF框架是两个重要的Web服务开发工具,它们主要用于构建和部署SOAP(简单对象访问协议)服务。这两个框架都基于Java语言,为开发者提供了便捷的方式来实现服务接口,并且支持WS-I(Web服务互...

    WebService详细解析(axis,xfire,cxf,授权认证加密解密)

    - 部署服务:将服务部署到AXIS服务器上。 - 客户端调用:使用AXIS客户端工具或者自定义代码调用服务。 【xfire篇】 XFire是另一个开源的SOAP和RESTful Web Services框架,后来被集成到了CXF项目中。XFire以其轻量...

    使用DOS 生成webservice 客户端代码 (CXF)

    `axis2-1.6.1-bin.zip` 和 `axis-bin-1_4.zip` 是Axis的版本,虽然不是CXF,但它们同样用于生成Web服务客户端和服务器端代码。 在DOS命令行下生成Web服务客户端代码,你需要先解压缩下载的CXF或Axis包,然后使用...

    webService(基于cxf)的完整例子

    4. **CXF服务部署**:CXF提供多种部署方式,包括独立服务器、Tomcat等应用服务器,以及Spring容器。通过修改CXF的配置文件,可以控制服务的行为,如端口号、绑定地址等。 5. **测试Web服务**:在提供的...

    WebServices开发-Axis实例CXF实例

    这可能包括创建一个简单的服务接口,编写服务实现,发布服务到服务器,以及生成客户端代码来调用这个服务。Axis的配置文件(如services.xml和pom.xml)也会包含在内,这些文件定义了服务的元数据和构建依赖。 而在...

    基于WSDL契约优先的web services服务器端和客户端开发方式

    - **生成服务器端代码**:利用工具(如Apache CXF、 Axis2等)根据WSDL生成Java服务类,实现服务的具体逻辑。 - **部署服务**:将生成的服务类部署到Web服务器或应用服务器上,使得服务对外可用。 - **生成客户端...

    webservice客户端与服务器端的实现demo

    与XFire相似,客户端可以利用Axis的wsdl2java工具从WSDL文件生成客户端代码,然后通过这些代码访问Web服务。 4. XFireWSS: WSS(Web Services Security)是Web服务安全标准,用于确保Web服务的安全通信。XFireWSS...

    apache-cxf-2.4.6.zip

    6. **强大的调试工具**:CXF提供了客户端和服务器端的调试器,帮助开发者追踪和解决Web服务问题。 7. **集成其他Apache项目**:CXF与Apache Axis2、Tomcat、Jetty等项目有良好的集成,可以方便地嵌入到现有的应用...

    webservice四种发布方式及客户端调用

    - 可以使用 `jaxws:client` 标签来配置客户端,但也可以手动构造 URL 进行访问。 5. **发布服务:** - 将应用部署到服务器并测试 WSDL 的可用性。 #### XFire 方式 XFire 是一个早期的轻量级 Web 服务框架,...

    webservice axis2实例与文件描述

    在"axis2工程(服务于客户)和文档描述"的压缩包中,包含了使用Axis2部署的服务工程和CXF客户端的相关文档,这些资源将帮助你理解并实践上述知识点。通过阅读文档,你可以了解到具体的服务部署步骤、客户端调用方法...

Global site tag (gtag.js) - Google Analytics