方法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 被调用了");
}
}
|
分享到:
相关推荐
4. 发布服务:通过CXF的Server类实例化并启动服务,使其可供客户端调用。 **客户端调用:** 1. 生成客户端代理:CXF的WSDL2Java工具可以将服务端的WSDL(Web Service Description Language)文件转换为Java客户端...
这个“cxf框架实现webservice调用demo”应该是为了演示如何使用CXF来发布和调用Web服务。下面我们将深入探讨CXF框架在实现Web服务中的关键知识点。 1. **CXF简介**: CXF全称CXF Commons eXtensible Framework,它...
用CXF作为客户端调用webService的demo:本人亲测可用,eclipse工程项目包含完整代码和完整jar包, 只要用eclipse导入项目即可,运行控制台显示success或者false字符串,说明OK。
这个DEMO将向我们展示如何使用CXF来创建、发布和调用服务。CXF支持多种协议和标准,如SOAP、RESTful、JAX-RS等,使得服务开发变得简单易行。 首先,我们来看一下`service`目录,这是服务端代码的所在。在服务端,...
本篇文章将详细介绍如何使用CXF和camel-cxf调用Web服务,以及这两个工具的核心功能和使用场景。 Apache CXF是一个全面的服务开发框架,它支持多种Web服务标准,如SOAP、WS-*协议栈、RESTful服务等。CXF提供了丰富的...
这个"CXF-demo.zip"压缩包包含了一个CXF 2.7.11的示例项目,旨在帮助开发者了解如何使用CXF来构建Web服务。 首先,让我们深入了解一下CXF的核心特性。CXF支持多种协议,如HTTP、JMS和FTP,使得服务可以通过多种方式...
【标题】"webservice cxf_demo" 涉及到的是使用Apache CXF框架创建的Web服务示例项目。在Web服务的世界里,CXF是一个流行的开源工具,它支持SOAP和RESTful风格的服务,用于构建和消费Web服务。这个"CXF_demo"很可能...
在这个Demo中,开发者可能已经创建了一个能够动态调用Web服务的客户端,以便于测试和演示CXF的功能。 【描述】"CXF动态调用webservice.demo测试用例,亲测通过,拿走不谢"表明这是一个经过实际测试的示例,可以用于...
【压缩包内容】"webservice[CXF]发布和调用[ 带数据库]demo"这个压缩包很可能包含了以下内容: 1. Java源代码:包括服务接口、实现和数据库访问相关的类。 2. 配置文件:如cxf-servlet.xml用于服务发布和Spring配置...
总的来说,这个【Spring+CXF小Demo】是一个很好的起点,可以帮助开发者了解如何在Spring环境中使用CXF构建Web服务,并进行客户端调用。它涉及到的技能包括XML配置、注解驱动编程、服务暴露与消费等,对于理解分布式...
在这个"Spring整合CXF demo"中,我们将探讨如何利用Spring 3.1和CXF 2.7.7来创建和消费Web服务。 首先,Spring框架提供了基于IoC(Inversion of Control)和AOP(Aspect Oriented Programming)的容器,用于管理...
4. **CXF_HELLO_ObjectSpringClient**: 对应的服务客户端,同样集成了Spring,使得调用Web服务如同调用本地方法一样方便,通过Spring的配置文件,可以轻松地管理和配置Web服务客户端。 5. **CXF_HELLO_ObjectClent*...
本教程将深入讲解如何使用CXF开发Web服务并进行调用,主要关注CXF的核心功能以及如何在实际项目中应用。 一、CXF简介 CXF是一个强大的Web服务框架,它支持SOAP、RESTful等多种通信协议,同时也支持WS-*规范,如WS-...
"spring+cxf_demo"这个项目很可能是用来演示如何将Spring和CXF结合使用的。通常,这样的集成会涉及以下步骤: 1. **设置Spring上下文**:首先,我们需要创建一个Spring配置文件(如`applicationContext.xml`),在...
【ssM+cxf接口发布demo原型】是一种基于Spring Boot(ssM)和Apache CXF(cxf)技术实现的Web服务发布示例。这个项目旨在展示如何将Java应用程序中的业务逻辑封装为Web服务,以便其他系统能够通过标准的SOAP协议进行...
在本DEMO中,CXF作为Web服务服务器,用于发布和调用服务接口,实现了基于SOAP的Web服务通信。 【整合Spring 4.1、MyBatis和CXF】 在本"spring4.1+mybatis+CXF最新webservice DEMO"中,这三大组件共同构建了一个完整...
【基于CXF框架的Web服务(Webservice)Demo详解】 在现代软件开发中,Web服务是一种常见的接口交互方式,它允许不同的系统之间通过标准的网络协议进行数据交换。Apache CXF是一个开源的Java框架,专门用于构建和...
1. **服务接口和服务实现**:在CXF中,Web服务通常由一个Java接口定义,该接口描述了可供调用的公共方法。然后,开发者提供该接口的实现,包含实际的业务逻辑。 2. **WSDL(Web Services Description Language)**...
【标题】"Spring CXF DEMO代码1"是关于如何使用Spring框架集成Apache CXF进行Web服务开发的一个示例项目。这个DEMO旨在帮助开发者理解并掌握如何在Spring环境中配置和使用CXF来创建和消费SOAP Web服务。 【描述】...