`

CXF入门实例

 
阅读更多

以下实现了一个CXF(apache-cxf-2.7.8)的入门实例HelloWorld,供大家参考。如有不足之处,请多多包涵。

1、需要导入的jar包


 2、工作空间的结构(MyEclipase8)


 

3、需要暴露的接口(Java代码)

 

package cxf.server;

import javax.jws.WebService;

/**
 * 服务接口
 * @author Administrator
 * 2014-1-17
 */
@WebService
public interface IHelloCXFService {
	
	/**
	 * 接受用户名,然后输出问好信息
	 * @param name
	 * @return
	 */
	public String sayHello(String name);
	
}

 

 

4、暴露接口的实现(Java代码)

 

package cxf.server;

import javax.jws.WebService;


/**
 * 服务的实现
 * @author Administrator
 * 2014-1-17
 */
@WebService(endpointInterface="cxf.server.IHelloCXFService", serviceName="helloCXF")
public class IHelloCXFServiceImpl implements IHelloCXFService {
	
	public IHelloCXFServiceImpl() {}

	public String sayHello(String name) {
		return "你好!" + name;
	}

}

 

 

5、CXF服务暴露配置文件(WebRoot/WEB-INF/cxf-servlet.xml)

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:jaxws="http://cxf.apache.org/jaxws"
      xmlns:soap="http://cxf.apache.org/bindings/soap"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd
		http://cxf.apache.org/jaxws
		http://cxf.apache.org/schemas/jaxws.xsd">
  
	<!-- 
             暴露Web服务:
             address 服务地址
             serviceClass 服务接口类
        -->
	<jaxws:server id="helloCXFService" serviceClass="cxf.server.IHelloCXFService" address="/helloCXF">
		<jaxws:serviceBean>
                         <!-- 服务实现类 -->
		  	<bean class="cxf.server.IHelloCXFServiceImpl" />
		</jaxws:serviceBean>
	</jaxws:server>
  
</beans>

 

 

7、web.xml文件

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <!-- CXF相关  -->
  <servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>
  
</web-app>

 

 

8、启动服务,验证服务是否发布成功。服务地址格式:http://主机地址:端口/服务/Web服务。

http://localhost:8080/test_cxf/services 

services  实在web.xml中CXF的Servlet处配置的(/services/*)

发布服务成功界面:


 

9、使用Java代码调用Web服务,有一下三种方式:

package cxf.client;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import javax.xml.ws.soap.SOAPBinding;

import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;

import cxf.server.IHelloCXFService;

/**
 * CXF客户端调用
 * @author Administrator
 * 2014-1-20
 */
public class HelloCXFClient {
	/*
	 * 服务名称
	 * http://server.cxf/ —— 来自targetNamespace="http://server.cxf/"
	 * IHelloCXFService —— 暴露接口名称
	 */
	private static final QName SERVICE_NAME 
		= new QName("http://server.cxf/", "IHelloCXFService");
	/*
	 * 服务端口
	 * IHelloCXFServicePort —— 暴露接口名称 + Port
	 */
	private static final QName PORT_NAME 
		= new QName("http://server.cxf/", "IHelloCXFServicePort");
	
	
	public static void main(String[] args) throws Exception {
		// 1. 方式一
		// 服务端点地址:http://localhost:8080/test_cxf/services/helloCXF?wsdl 去掉 ?wsdl
		String endpointAddress = "http://localhost:8080/test_cxf/services/helloCXF";
		Service service = Service.create(SERVICE_NAME);
		service.addPort(PORT_NAME, SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);
		IHelloCXFService hcxf = service.getPort(IHelloCXFService.class);
		System.out.println(hcxf.sayHello("tom"));
		
		// 2. 方式二
		// 根据wsdl文件动态调用WebService
		JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
		org.apache.cxf.endpoint.Client client = dcf
				.createClient("http://localhost:8080/test_cxf/services/helloCXF?wsdl");
		// sayHello 为接口中定义的方法名称 张三为传递的参数 返回一个Object数组
		Object[] objects = client.invoke("sayHello", new Object[]{"Bear"});
		// 输出调用结果
		System.out.println(objects[0].toString());
		
		// 3. 方式三
		JaxWsProxyFactoryBean  factoryBean=new JaxWsProxyFactoryBean();
        factoryBean.getInInterceptors().add(new LoggingInInterceptor());
        factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());
        factoryBean.setServiceClass(IHelloCXFService.class);
        factoryBean.setAddress("http://localhost:8080/test_cxf/services/helloCXF");
        IHelloCXFService impl=(IHelloCXFService) factoryBean.create();
        System.out.println(impl.sayHello("Bluse"));
	}
	
}

 

10、调用结果

2014-1-20 10:16:51 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass

信息: Creating Service {http://server.cxf/}IHelloCXFService from class cxf.server.IHelloCXFService

2014-1-20 10:16:52 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass

信息: Creating Service {http://server.cxf/}IHelloCXFService from class cxf.server.IHelloCXFService

你好!tom

2014-1-20 10:16:53 org.apache.cxf.common.jaxb.JAXBUtils logGeneratedClassNames

信息: Created classes: cxf.server.ObjectFactory, cxf.server.SayHello, cxf.server.SayHelloResponse

你好!Bear

2014-1-20 10:16:53 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass

信息: Creating Service {http://server.cxf/}IHelloCXFServiceService from class cxf.server.IHelloCXFService

2014-1-20 10:16:53 org.apache.cxf.services.IHelloCXFServiceService.IHelloCXFServicePort.IHelloCXFService

信息: Outbound Message

---------------------------

ID: 1

Address: http://localhost:8080/test_cxf/services/helloCXF

Encoding: UTF-8

Http-Method: POST

Content-Type: text/xml

Headers: {Accept=[*/*], SOAPAction=[""]}

Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:sayHello xmlns:ns2="http://server.cxf/"><arg0>Bluse</arg0></ns2:sayHello></soap:Body></soap:Envelope>

--------------------------------------

2014-1-20 10:16:53 org.apache.cxf.services.IHelloCXFServiceService.IHelloCXFServicePort.IHelloCXFService

信息: Inbound Message

----------------------------

ID: 1

Response-Code: 200

Encoding: UTF-8

Content-Type: text/xml;charset=UTF-8

Headers: {Content-Length=[216], content-type=[text/xml;charset=UTF-8], Date=[Mon, 20 Jan 2014 02:16:53 GMT], Server=[Apache-Coyote/1.1]}

Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:sayHelloResponse xmlns:ns2="http://server.cxf/"><return>你好!Bluse</return></ns2:sayHelloResponse></soap:Body></soap:Envelope>

--------------------------------------

你好!Bluse

 

 

项目源码:Test_CXF.zip 压缩文件

 

更多IT技术请浏览:www.hxstrive.com

 

 

 

 

  • 大小: 14.8 KB
  • 大小: 12.2 KB
  • 大小: 8.9 KB
分享到:
评论

相关推荐

    cxf入门实例(webservice)

    ### CXF入门实例详解:构建Web服务 在深入探讨如何使用Apache CXF框架构建Web服务之前,我们首先简要了解一下CXF的基本概念及其在Web服务领域的重要地位。 #### Apache CXF简介 Apache CXF(Community eXtreme ...

    CXF的入门实例

    **CXF入门实例详解** Apache CXF 是一个开源的Java框架,主要用于构建和开发Web服务。它提供了多种方式来创建和消费SOAP以及RESTful服务,是Java世界中广泛使用的Web服务实现工具。在这个"CXF HelloWorld"入门实例...

    CXF入门简单实例(spring整合)

    这个"CXF入门简单实例(spring整合)"的压缩包文件提供了使用Spring框架与CXF集成的基础教程。让我们深入了解一下CXF和Spring的整合以及如何通过这个实例来创建一个简单的Web服务。 首先,CXF支持多种协议,如SOAP、...

    CXF入门 -- 第一个简单webService

    【CXF入门 -- 第一个简单webService】 Apache CXF 是一款强大的开源服务框架,它用于构建和开发服务,包括Web服务。本篇文章将带你入门CXF,通过创建一个简单的Web服务来理解其基本概念和工作流程。 1. **CXF简介*...

    cxf入门例子(安全认证)

    【CXF入门例子(安全认证)】 Apache CXF 是一个开源的 Java 框架,主要用于构建和开发服务导向架构(SOA)和 RESTful Web 服务。它提供了丰富的功能,包括SOAP、REST、WS-* 标准支持、数据绑定、JAX-RS 和 JAX-WS ...

    cxf一个入门实例,用最新的cxf2.2.4开发的

    这个入门实例是基于CXF 2.2.4版本,一个较旧但仍然具有教育意义的版本,可以帮助初学者理解如何使用CXF来创建Web服务。 在CXF 2.2.4中,主要关注的特性包括: 1. **JAX-WS支持**:CXF支持Java API for XML Web ...

    cxf入门例子

    总的来说,"CXF入门例子"涵盖了从设置开发环境,创建服务,部署服务,编写客户端代码,以及进行安全性和性能优化的整个流程。对于初学者,这是一个很好的起点,能够让你快速理解并掌握CXF的基本用法。

    apache-cxf-2.1.4及教程

    首先,让我们探讨一下CXF入门实例。这个部分通常会涵盖如何使用CXF创建一个基本的Web服务。这包括定义服务接口,实现该接口,然后使用CXF提供的工具或配置来发布这个服务。服务的客户端则可以通过CXF生成的客户端API...

    cxf入门文档

    【标题】:“CXF入门文档”是一份专为初学者设计的教程,旨在引导读者从零开始掌握Apache CXF框架的使用。Apache CXF是一个开源的Java服务框架,它允许开发者构建和部署SOAP和RESTful Web服务。此文档将帮助新手快速...

    学习CXF WebService入门实例一.pdf

    本文将通过一个简单的入门实例介绍如何使用CXF来创建和部署Web Service。 首先,选择CXF作为Web Service框架的原因在于它对Spring的支持。CXF可以无缝地与Spring应用上下文集成,简化服务的配置和管理。在本实例中...

    CXF入门.rar

    【CXF入门】 CXF(CXF: Composite eXtensible Services Framework)是一个开源的Java框架,主要用于构建和开发Web服务。它提供了强大的服务端和客户端API,支持SOAP、RESTful、WS-*等标准,使得开发者能够轻松地创建...

    springboot+cxf实例

    一个用springboot搭建的简单的cxf实例,可以用于入门跟学习

    CXF实例源代码(客户端)

    这个"CXF实例源代码(客户端)"压缩包提供了客户端调用Web服务的示例代码,对于初学者来说,是理解如何使用CXF进行Web服务交互的绝佳资源。 在Web服务的世界里,客户端通常负责发起请求并接收服务端的响应。CXF作为...

    CXF实例源代码(服务器端)

    【CXF实例源代码(服务器端)】是一个用于学习和实践Apache CXF框架的入门教程,专注于构建Web服务。Apache CXF是一个开源的Java框架,主要用于创建和消费Web服务,它支持多种协议和标准,如SOAP、RESTful、WS-*等。...

    CXF3.0.2+Spring3.2.14 WebService入门实例四

    【CXF3.0.2+Spring3.2.14 WebService入门实例四】的知识点解析 在本文中,我们将深入探讨如何使用Apache CXF 3.0.2版本和Spring 3.2.14框架来创建一个基于WebService的文件传输应用。Apache CXF是一个流行的开源...

    cxf入门

    - Spring框架提供了很好的依赖注入和管理组件的能力,CXF可以很好地与Spring集成,利用Spring管理服务实例和服务配置。 5. **CXF工具**: - **CXF wsdl2java**:从WSDL生成Java类和服务接口。 - **CXF jaxws21**...

    cxf开发实例

    ### 二、CXF入门示例 **HelloWorld服务端**: ```java package com.hoo.service; import javax.jws.WebParam; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; import javax.jws.soap....

Global site tag (gtag.js) - Google Analytics