`
ootabc
  • 浏览: 110829 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

CXF 服务调用DEMO

阅读更多

方法1

wsdl2java

通过wsdl2java命令在客户端生成服务对象,通过调用生成的服务对象就能调用远程的服务接口。Wsdl2java使用位用cxf下载包的bin目录下:

 

具体用法如下:

-p  指定其wsdl的命名空间,也就是要生成代码的包名:

-d  指定要产生代码所在目录

-client 生成客户端测试web service的代码

-server 生成服务器启动web  service的代码

-impl 生成web service的实现代码

-ant  生成build.xml文件

-all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.

 

在客户端生成如下java文件:

 

客户端调用:

import client.Hello;

import client.HelloService;

import client.User;

 

public class client {

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       Hello sh = new HelloService().getHelloPort();

       User user = new User();

       user.setName("aa");

       user.setAge("23");

       System.out.println(sh.sayHello(user));

    }

}

方法2:

异步polling技术

客户端定时检查是否调用成功

public class AsyncPolling {

 

    //组装SOAP,调用服务器sayHello方法

    private static String sayHello =

       "<ns1:sayHello xmlns:ns1='http://service/'>" +

       " <arg0>"+

       "<name>aa</name>"+

       "<age>23</age>"+

       "</arg0>" +

       "</ns1:sayHello>";

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

           callService(sayHello);

    }

    public static void callService(String payload) throws Exception{

        /**

* http://service/ 对应  targetNamespace

* HelloSerice”对应 serive

**/

       QName serviceName = new QName("http://service/", "HelloService");

       Service service = Service.create(new URL("http://localhost:8080/testcxf/ws/hello?wsdl"), serviceName);

        /**

* http://service/ 对应  targetNamespace

* HelloPort”对应 port

**/

       QName portName = new QName("http://service/", "HelloPort");

       Dispatch<Source> dispatch = service.createDispatch(portName, Source.class, Mode.PAYLOAD);

       Source msg = new SAXSource(new InputSource(new StringReader(payload)));

       Response<Source> responseSource = dispatch.invokeAsync(msg);

       System.out.println("Sleep...");

       Thread.sleep(1000);

       System.out.println("Wake up...");

       Source response = responseSource.get();

       Transformer transformer = TransformerFactory.newInstance().newTransformer();

       transformer.transform(response, new StreamResult(System.out));

    }

}

异步CallBack技术

服务器端回调客户端,通知调用成功或失败

public static void callService1(String payload) throws Exception{

       QName serviceName = new QName("http://service/", "HelloService");

Service service = Service.create(new URL("http://localhost:8080/testcxf/ws/hello?wsdl"), serviceName);

       QName portName = new QName("http://service/", "HelloPort");

final Dispatch<Source> dispatch = service.createDispatch(portName, Source.class, Mode.MESSAGE);

final Source msg = new SAXSource(new InputSource(new StringReader(payload)));

       final AsyncHandler<Source> handler = new resourceAsynHandler();

       new Thread() {

           public void run() {

              Future<?> rsp = dispatch.invokeAsync(msg, handler);

              Source response;

              Transformer transformer;

              try {

                  response = (Source) rsp.get();

transformer = TransformerFactory.newInstance().newTransformer();

                   transformer.transform(response, new StreamResult(System.out));

              } catch (InterruptedException e1) {

                  e1.printStackTrace();

              } catch (ExecutionException e1) {

                  e1.printStackTrace();

              }catch(Exception e2){

                  e2.printStackTrace();

              }

           }

       }.start();

       System.out.println("I'm doing other..");

    }

resourceAsynHandler

public class resourceAsynHandler implements AsyncHandler<Source>{

 

    public void handleResponse(Response<Source> res) {

       System.out.println("resourceAsynHandler 被调用了");

    }

}

分享到:
评论

相关推荐

    Java webservice cxf客户端调用demo和服务端

    4. 发布服务:通过CXF的Server类实例化并启动服务,使其可供客户端调用。 **客户端调用:** 1. 生成客户端代理:CXF的WSDL2Java工具可以将服务端的WSDL(Web Service Description Language)文件转换为Java客户端...

    cxf框架实现webservice调用demo

    这个“cxf框架实现webservice调用demo”应该是为了演示如何使用CXF来发布和调用Web服务。下面我们将深入探讨CXF框架在实现Web服务中的关键知识点。 1. **CXF简介**: CXF全称CXF Commons eXtensible Framework,它...

    CXF作为客户端调用webService的demo

    用CXF作为客户端调用webService的demo:本人亲测可用,eclipse工程项目包含完整代码和完整jar包, 只要用eclipse导入项目即可,运行控制台显示success或者false字符串,说明OK。

    CXF 服务开发DEMO

    这个DEMO将向我们展示如何使用CXF来创建、发布和调用服务。CXF支持多种协议和标准,如SOAP、RESTful、JAX-RS等,使得服务开发变得简单易行。 首先,我们来看一下`service`目录,这是服务端代码的所在。在服务端,...

    使用CXF和camel-cxf调用webservice

    本篇文章将详细介绍如何使用CXF和camel-cxf调用Web服务,以及这两个工具的核心功能和使用场景。 Apache CXF是一个全面的服务开发框架,它支持多种Web服务标准,如SOAP、WS-*协议栈、RESTful服务等。CXF提供了丰富的...

    CXF-demo.zip_cxf_cxf 2.7.11 demo_cxf demo_cxf webservice demo_we

    这个"CXF-demo.zip"压缩包包含了一个CXF 2.7.11的示例项目,旨在帮助开发者了解如何使用CXF来构建Web服务。 首先,让我们深入了解一下CXF的核心特性。CXF支持多种协议,如HTTP、JMS和FTP,使得服务可以通过多种方式...

    webservice cxf_demo

    【标题】"webservice cxf_demo" 涉及到的是使用Apache CXF框架创建的Web服务示例项目。在Web服务的世界里,CXF是一个流行的开源工具,它支持SOAP和RESTful风格的服务,用于构建和消费Web服务。这个"CXF_demo"很可能...

    cxf客户端Demo

    在这个Demo中,开发者可能已经创建了一个能够动态调用Web服务的客户端,以便于测试和演示CXF的功能。 【描述】"CXF动态调用webservice.demo测试用例,亲测通过,拿走不谢"表明这是一个经过实际测试的示例,可以用于...

    webservice[CXF]发布和调用[ 带数据库]demo

    【压缩包内容】"webservice[CXF]发布和调用[ 带数据库]demo"这个压缩包很可能包含了以下内容: 1. Java源代码:包括服务接口、实现和数据库访问相关的类。 2. 配置文件:如cxf-servlet.xml用于服务发布和Spring配置...

    spring+cxf小demo

    总的来说,这个【Spring+CXF小Demo】是一个很好的起点,可以帮助开发者了解如何在Spring环境中使用CXF构建Web服务,并进行客户端调用。它涉及到的技能包括XML配置、注解驱动编程、服务暴露与消费等,对于理解分布式...

    Spring整合CXF demo

    在这个"Spring整合CXF demo"中,我们将探讨如何利用Spring 3.1和CXF 2.7.7来创建和消费Web服务。 首先,Spring框架提供了基于IoC(Inversion of Control)和AOP(Aspect Oriented Programming)的容器,用于管理...

    cxf webservice demo

    4. **CXF_HELLO_ObjectSpringClient**: 对应的服务客户端,同样集成了Spring,使得调用Web服务如同调用本地方法一样方便,通过Spring的配置文件,可以轻松地管理和配置Web服务客户端。 5. **CXF_HELLO_ObjectClent*...

    cxf 开发webservice与调用demo

    本教程将深入讲解如何使用CXF开发Web服务并进行调用,主要关注CXF的核心功能以及如何在实际项目中应用。 一、CXF简介 CXF是一个强大的Web服务框架,它支持SOAP、RESTful等多种通信协议,同时也支持WS-*规范,如WS-...

    spring+cxf_demo

    "spring+cxf_demo"这个项目很可能是用来演示如何将Spring和CXF结合使用的。通常,这样的集成会涉及以下步骤: 1. **设置Spring上下文**:首先,我们需要创建一个Spring配置文件(如`applicationContext.xml`),在...

    ssM+cxf接口发布demo原型

    【ssM+cxf接口发布demo原型】是一种基于Spring Boot(ssM)和Apache CXF(cxf)技术实现的Web服务发布示例。这个项目旨在展示如何将Java应用程序中的业务逻辑封装为Web服务,以便其他系统能够通过标准的SOAP协议进行...

    spring4.1+mybatis+CXF最新webservice DEMO

    在本DEMO中,CXF作为Web服务服务器,用于发布和调用服务接口,实现了基于SOAP的Web服务通信。 【整合Spring 4.1、MyBatis和CXF】 在本"spring4.1+mybatis+CXF最新webservice DEMO"中,这三大组件共同构建了一个完整...

    基于CXF框架的webservice的demo

    【基于CXF框架的Web服务(Webservice)Demo详解】 在现代软件开发中,Web服务是一种常见的接口交互方式,它允许不同的系统之间通过标准的网络协议进行数据交换。Apache CXF是一个开源的Java框架,专门用于构建和...

    CXF 编写 WebServer DEMO

    1. **服务接口和服务实现**:在CXF中,Web服务通常由一个Java接口定义,该接口描述了可供调用的公共方法。然后,开发者提供该接口的实现,包含实际的业务逻辑。 2. **WSDL(Web Services Description Language)**...

    spring cxf DEMO代码1

    【标题】"Spring CXF DEMO代码1"是关于如何使用Spring框架集成Apache CXF进行Web服务开发的一个示例项目。这个DEMO旨在帮助开发者理解并掌握如何在Spring环境中配置和使用CXF来创建和消费SOAP Web服务。 【描述】...

Global site tag (gtag.js) - Google Analytics