`

Java那些事儿之(二)Webservice之CXF

阅读更多

这是按照网上一个示例说明,自己又从新做了一下。

当然这也是工作需要。简单易懂。

 

版本是apache-cxf-2.6.2

 

百度的名片:

关于Apache CXF

  Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。Apache CXF已经是一个正式的Apache顶级项目。

  Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程API 来构建和开发 Services ,像 JAX-WS 。这些 Services 可以支持多种协议,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,并且可以在多种传输协议上运行,比如:HTTP、JMS 或者 JBI,CXF 大大简化了 Services 的创建,同时它继承了 XFire 传统,一样可以天然地和 Spring 进行无缝集成。

 

 一、如何发布一个Webservice

先看一下要发布的那个Java文件:

package com.eetrust.webservice;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import javax.jws.WebParam;
/**  
 * function:CXF WebService 服务器端helloWorld示例  
 * @author sunac
 * @createDate 2012-9-26 上午08:29:07  
 * @file HelloWorldService.java  
 * @package com.eetrust.webservice  
 * @project TestProperty  
 * @version 1.0  
 */
@WebService
@SOAPBinding(style = Style.RPC)
public class HelloWorldService {
	
	public String sayHello(@WebParam(name = "name") String name){
		return name + "say: HelloWorld";
		//可以其他处理逻辑
	}

}

 

下面要对这个Service进行发布了:

看下面这个代码文件:

package com.eetrust.deploy;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

import com.eetrust.webservice.HelloWorldService;
/**  
 * function:CXF WebService 服务器端发布  
 * @author sunnyboysac
 * @createDate 2012-9-26 上午08:29:07  
 * @file HelloWorldService.java  
 * @package com.eetrust.deploy  
 * @project TestProperty  
 * @version 1.0  
 */
public class DeployHelloWorldService {
	public static void deploy(){
		System.out.println("-----Server start -----");
		HelloWorldService service = new HelloWorldService();
		JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();
		factoryBean.setAddress("http://localhost:8080/HelloWorld");
		factoryBean.setServiceClass(HelloWorldService.class);
		factoryBean.setServiceBean(service);
		factoryBean.create();
		System.out.println("发布成功");
	}
	
	public static void main(String[] args) {
		deploy();
	}
}

 

运行上面这个文件,Console显示发布成功的话,该Webservice就可以使用了访问http://localhost:8080/HelloWorld?wsdl

可以访问的话,说明Webservice发布成功了

 

二、如何生成Java客户端调用Webservice

 通过wsdl2java命令工具来生成客户端
  进入dos界面 ,进入apache-cxf-2.6.2/bin下执行命令  wsdl2java -p com.eetrust.client -d d:/  http://127.0.0.1:8080/HelloWorld?wsdl
  dir 命令用于查看文件列表
  解释:
      命令的格式为:wsdl2java -p 包名 -d 生成代码存放目录 wsdl的url
      wsdl的url为要调用的webservice的服务地址
      wsdl2java用法:
                 wsdl2java -p com -d src -all  aa.wsdl
                     -p 指定其wsdl的命名空间,也就是要生成代码的包名;
                     -d 指定要产生代码所在目录;
                    -client 生成客户端测试web service的代码;
                    -server 生成服务器启动web service的代码;
                    -impl 生成web service的实现代码;
                    -impl 生成web service的实现代码;
                    -all 生成所有开始端点代码:types,service proxy, service interface, server mainline, client mainline, implementation object, and an Ant build.xml file。 
执行命令之后会生成代码,将其拷入自己工程里,写个文件
package com.eetrust.client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
/**
 * function cxf客户端 调用webservice提供的方法sayHello
 * @author sunac
 * @createDate 2012-09-27
 * @file Client.java
 * @package com.eetrust.client
 * @project TestProperty 
 * @version 1.0
 */
public class Client {
	public static void main(String[] args) throws Exception{
		JaxWsDynamicClientFactory cxf = JaxWsDynamicClientFactory.newInstance();
		org.apache.cxf.endpoint.Client client = cxf.createClient("http://127.0.0.1:8080/HelloWorld?wsdl");
		System.out.println("===================================");
		//sayHello 为接口中定义的方法名称   张三为传递的参数  返回
		Object[] objects = client.invoke("sayHello", "张三");
		//输出调用结果
		System.out.println(objects[0].toString());
	}
}

 

运行main之后  控制台信息:
2012-9-27 20:51:38 org.apache.cxf.common.jaxb.JAXBUtils logGeneratedClassNames
信息: Created classes: 
javacTask: 无源文件
用法: javacTask <options> <source files>
-help 用于列出可能的选项
2012-9-27 20:51:38 org.apache.cxf.endpoint.dynamic.DynamicClientFactory createClient
严重: Could not compile java files for http://127.0.0.1:8080/HelloWorld?wsdl.
===================================
张三say: HelloWorld

调用成功。
分享到:
评论

相关推荐

    Java cxf开发webservice,分别有客户端和服务端

    2.用cxf开发webservice 3.这个服务端和客户端的小demo 在服务端 对外开放接口服务,然后在客户端 调用服务端的方法, 实现客户端(一个javaweb项目)对服务端(javaweb项目)方法的调用, 实际上就是发送和接收消息...

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

    Java WebService CXF客户端调用和服务端的实现是企业级应用程序中常见的通信方式,它基于标准的SOAP(Simple Object Access Protocol)协议,提供了一种在分布式环境中交换信息的方法。CXF是一个开源框架,它简化了...

    java cxf webservice接口解决跨域问题

    Java CXF Webservice接口在处理Web服务时,可能会遇到跨域问题,这通常是由于浏览器的安全策略限制了不同源之间的通信。解决这个问题的关键在于理解和应用CORS(Cross-Origin Resource Sharing)机制。CORS允许...

    webService(基于cxf)的完整例子

    例如,可以使用`@WebService`注解标记一个Java类为Web服务接口,并使用`@Path`注解来定义RESTful服务的URL路径。 4. **CXF服务部署**:CXF提供多种部署方式,包括独立服务器、Tomcat等应用服务器,以及Spring容器。...

    WebService CXF 详细教程

    **WebService CXF 详解** **一、WebService简介** WebService是一种基于标准的,可以在不同操作系统、编程语言之间交换数据的Web应用程序。它通过WSDL(Web服务描述语言)定义了服务接口,利用SOAP(简单对象访问...

    使用cxf wsdl2java生成webservice客户端

    使用cxf wsdl2java生成webservice客户端命令

    WebService CXF 对应版本及资源

    WebService CXF 用了一天时间找,官网打不开,国内要积分,下下来又永不了。最后终于搞到手,上传上来分享给大家。 jdk版本 CXF版本 java 9及以上 3.3.x java 8 3.x java 7 2.2x --- 3.2之前版本 java 6 3.1 ...

    cxf发布webservice示例

    webservice示例 springmvc+maven+cxf发布webservice 博客地址 http://blog.csdn.net/joe_storm/article/details/78839150

    使用CXF发布WebService

    当我们谈论“使用CXF发布WebService”时,我们实际上是在讨论如何利用Apache CXF框架创建和部署Web服务。Apache CXF是一个开源的Java框架,专门用于构建和消费Web服务,支持多种协议,如SOAP和RESTful。 首先,我们...

    Java调用CXF WebService接口的两种方式实例

    Java调用CXF WebService接口的两种方式实例 Java调用CXF WebService接口是Java开发者在开发过程中经常遇到的问题。今天,我们将讨论Java调用CXF WebService接口的两种方式实例,即静态调用和动态调用。 静态调用 ...

    webservice cxf_demo

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

    WebService CXF 对象传递 附

    **WebService CXF 对象传递详解** 在Web服务领域,CXF是一个非常重要的开源框架,它允许开发者创建和消费各种Web服务。CXF支持SOAP、RESTful等多种通信模式,并且能够处理复杂的对象传递,使得Web服务的数据交换...

    camel-cxf调用和发布webservice例子

    用camel-cxf调用webservice和发布一个webservice接口例子,首先启动QueryServiceMain主函数启动webservice接口,然后启动测试类TestWebservice。例子主要是实现java代码实现camel调用webservice接口

    cxf webservice demo

    CXF(CXF: Composite eXtensible Framework)是一个开源的Java Web服务框架,它用于构建和部署Web服务。此"CXF Webservice Demo"是一个实例,展示了如何使用CXF来创建和消费Web服务。CXF允许开发者通过SOAP(简单...

    CXF webservice+mybatis

    【标题】"CXF Webservice+Mybatis" 深度解析 在现代软件开发中,集成不同的技术栈以构建高效、可维护的系统是常见的做法。本篇将深入探讨如何利用Apache CXF作为Web服务框架,与Mybatis作为持久层框架进行整合,...

    java的webService源码(使用cxf)

    【Java WebService 源码使用 CXF 框架详解】 Java WebService 是一种基于标准的、平台无关的通信方式,它允许不同系统间的应用程序通过网络交换数据。CXF 是一个开源的 Java 库,它提供了创建和消费 WebService 的...

    cxf-3.1.5 和 cxf-3.3.13 JAVA7和JAVA8对应CXF资源

    WebService CXF 用了一天时间找,官网打不开,国内要积分,下下来又永不了。最后终于搞到手,上传上来分享给大家。 jdk版本 CXF版本 java 9及以上 3.3.x java 8 3.x java 7 2.2x --- 3.2之前版本 java 6 3.1 ...

    cxf 开发webservice客户端

    CXF全称CXF CXF (Continued eXtensible Framework),它是一个Java框架,提供了创建和消费Web服务的能力。CXF支持WS-*标准,如WS-Security、WS-ReliableMessaging等,并且对RESTful API的构建也十分友好。其设计目标...

    CXF 一个完整的webService(整合客户端和服务端)

    CXF(CXF: XFire Community eXtended)是一个开源的Java框架,用于构建和部署Web服务。它提供了强大的支持,包括SOAP、RESTful API、WS-*规范等多种协议和服务模型。CXF不仅简化了Web服务的开发,而且允许开发者无缝...

    用cxf开发webservice

    CXF支持多种模型,包括JAX-WS(Java API for XML Web Services),JBI(Java Business Integration),SCA(Service Component Architecture)以及CORBA服务,为开发者提供了丰富的选择。 在CXF中,服务是基于WSDL...

Global site tag (gtag.js) - Google Analytics