`
lw223
  • 浏览: 100063 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Web Service:Apache CXF简单例子

    博客分类:
  • SOA
阅读更多

        service框架用apache CXF,服务器tomcat ,还有spring框架

        OpenSource中关于CXF的简介:Apache CXF一个开源的Service框架,它实现了JCP与Web Service中一些重要标准。CXF简化了构造,集成,面向服务架构(SOA)业务组件与技术的灵活复用。在CXF中,Service使用WSDL标准定义并能够使用各种不同的消息格式(或binding)和网络协议(transports)包括SOAP、XML(通过HTTP或JMS)进行访问。CXF同样支持多种model 如:JAX-WS,JBI,SCA和CORBA service。CXF设计成可灵活部署到各种容器中包括Spring-based,JBI,SCA, Servlet和J2EE容器。

       用CXF构建webservice程序的大致流程如下:

       1 配置web.xml文件,加载CXF

       2 编写java接口,和接口的实现

       3 在spring的applicationContext.xml中配置java文件

       4 创建beans.xml文件,里面配置接口的实现类

      5 运行tomca服务器即可生成wsdl文件

      6 编写测试代码:编写java测试文件和client-beans.xml文件

      7编写运行客户端文件所需的服务器,可以单独编写,也可以在随tomcat启动

示例代码。首先下载cxf,然后解压,将lib下的所有jar包拷到工程下面

    一 最简单的helloword

     1  web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd"
>


<web-app>
    
<context-param>
        
<param-name>contextConfigLocation</param-name>
        
<param-value>WEB-INF/beans.xml</param-value>
    
</context-param>

    
<listener>
        
<listener-class>
            org.springframework.web.context.ContextLoaderListener
        
</listener-class>
    
</listener>

    
<servlet>
        
<servlet-name>CXFServlet</servlet-name>
        
<display-name>CXF Servlet</display-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>/*</url-pattern>
    
</servlet-mapping>

</web-app>

2  接口HelloWord.java和接口的实现HelloWordImpl.java

package com.demo;

import javax.jws.WebService;

/** *//**
 * service interface
 * 
 * 
@author
 * 
 
*/

@WebService
public interface HelloWord ...{
    String sayHi(String text);
}

 

 

package com.demo;

import javax.jws.WebService;

/** *//**
 * implementation
 * 
 * 
@author 
 * 
 
*/

@WebService
public class HelloWordImpl implements HelloWord ...{

    
public String sayHi(String text) ...{
        
return "Hi" + text;
    }

}

 

3 beans.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"
    xsi:schemaLocation
="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

    
<import resource="classpath:META-INF/cxf/cxf.xml" />
    
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
    
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

    
<jaxws:endpoint id="helloWord"
        implementor
="com.demo.HelloWordImpl" address="/HelloWord" />

</beans>

 

4  启动tomcat服务器,在浏览器里面输入http://localhost:8888/helloword后页面上会出现

{http://demo.com/}HelloWordImplPort ,点击会看到生成的wsdl文件http://localhost:8888/helloword/HelloWord?wsdl

 

5 客户端Client.java和client-beans.xml

package com.demo;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public final class Client ...{

    
private Client() ...{

    }


    
public static void main(String args[]) throws Exception ...{
        
// START SNIPPET: client
        ApplicationContext  context = new ClassPathXmlApplicationContext(
                
new String[] ..."com/demo/client-beans.xml" });

        HelloWord client 
= (HelloWord) context.getBean("client");

        String response 
= client.sayHi("+what????");
        System.out.println(
"Response: " + response);
        System.exit(
0);
        
// END SNIPPET: client
    }

}
<?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"
    xsi:schemaLocation
="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">

    
<bean id="client" class="com.demo.HelloWord"
        factory
-bean="clientFactory" factory-method="create" />

    
<bean id="clientFactory"
        
class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
        
<property name="serviceClass" value="com.demo.HelloWord" />
        
<property name="address"
            value
="http://localhost:9002/HelloWord" />
    
</bean>

</beans>

 

6 客户端运行时所需的服务器Server.java

package com.demo;

import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Handler;
import org.mortbay.jetty.handler.DefaultHandler;
import org.mortbay.jetty.handler.HandlerCollection;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.webapp.WebAppContext;

public class Server ...{

    
protected Server() throws Exception ...{
        System.out.println(
"Starting Server");

        org.mortbay.jetty.Server server 
= new org.mortbay.jetty.Server();

        SelectChannelConnector connector 
= new SelectChannelConnector();
        connector.setPort(
9002);
        server.setConnectors(
new Connector[] ...{connector});

        WebAppContext webappcontext 
= new WebAppContext();
        webappcontext.setContextPath(
"/");

        webappcontext.setWar(
"WebRoot");

        HandlerCollection handlers 
= new HandlerCollection();
        handlers.setHandlers(
new Handler[] ...{webappcontext, new DefaultHandler()});

        server.setHandler(handlers);
        server.start();
        System.out.println(
"Server ready...");
        server.join();
    }


    
public static void main(String args[]) throws Exception ...{
        
new Server();
    }


}

 

7 运行客户端Client.java的顺序,先启动tomcat,然后运行Server.java,最后运行Client.java

二 不单独编写Server.java文件,让其和tomcat一同启动.需要改动的地方

1 web.xml

<context-param>
        
<param-name>contextConfigLocation</param-name>
         
<param-value
分享到:
评论
1 楼 elvishehai 2009-10-12  
直接发代码下载吧

相关推荐

    Apache CXF Web Service Development

    Apache CXF是一个开源的服务框架,用于帮助开发人员构建和开发SOAP(简单对象访问协议)和RESTful(代表性状态传输)Web服务。在2009年出版的书籍《Apache CXF Web Service Development》中,作者Naveen Balani和...

    apache cxf 一个helloworld的例子

    Apache CXF(以下简称为CXF)是一款非常流行的开源项目,用于构建和服务Web Services。它整合了两个著名的开源项目:Apache Celtix 和 XFire。CXF提供了一个强大而灵活的框架,能够支持JAX-WS规范,同时还提供了多样...

    Apache cxf

    在实际开发中,创建一个简单的Hello World Web Service就像在Java类上添加注解,然后配置CXF来暴露和运行这个服务。在给出的部分内容中,可以看出这个例子是一个基于Maven的Web应用项目,使用了CXF的多个模块,通过...

    apache cxf helloworld小例子

    这个简单的“Hello World”示例展示了Apache CXF如何帮助开发者快速搭建Web服务。在实际应用中,你可以扩展这个基础,处理更复杂的业务逻辑,支持各种协议和数据格式,如RESTful API、JSON、XML等。此外,CXF还提供...

    apache—CXF学习文档

    Apache CXF是一个开源的Web服务框架,主要用于构建和部署SOAP(简单对象访问协议)和RESTful(Representational State Transfer)服务。它是一个高度可扩展且功能丰富的工具,旨在简化服务的开发过程,同时提供对...

    spring2.5+ibatis3+web service cxf 例子MyEclipse工程

    标题 "spring2.5+ibatis3+web service cxf 例子MyEclipse工程" 提供的是一个基于Java技术栈的开发示例,这个工程整合了Spring 2.5、iBatis 3和CXF Web Service框架。下面将详细阐述这些技术以及它们在项目中的作用。...

    Apache CXF 与 Spring 整合简单例子

    这篇博客文章可能是一个简单的教程,教你如何将Apache CXF和Spring整合在一起,创建一个基本的服务端点。 在整合Apache CXF和Spring时,首先需要在Spring配置文件中声明CXF的相关bean。这通常包括服务接口、服务...

    apache-cxf-2.2.9

    Apache CXF是一个开源的Java框架,它主要用于构建和开发服务导向架构(SOA)和Web服务。CXF这个名字是"Confusing eXtensible Framework"的缩写,它旨在简化和融合不同技术栈,提供一个统一的开发体验。在本讨论中,...

    Apache_cxf_学习笔记

    Apache CXF 是一个开源的Java框架,主要用于构建和开发服务导向架构(Service-Oriented Architecture, SOA)和Web服务。本学习笔记旨在提供对Apache CXF的基本理解、功能特性和实际操作指导。 **1. CXF 简介** 1.1...

    Apache cxf 学习笔记.pdf

    Apache CXF 是一个开源的Java框架,它主要用于构建和开发服务导向架构(Service-Oriented Architecture, SOA)的应用程序。CXF这个名字来源于两个曾经流行的Java Web服务项目的合并:Celtix和XFire,CXF意在强调其对...

    Apache CXF之helloworld

    这个"Apache CXF之helloworld"示例旨在帮助初学者理解如何使用CXF来创建和消费简单的Web服务。CXF允许开发者通过Java API(如JAX-WS和JAX-RS)来定义服务接口,并自动将其转换为HTTP服务。 首先,我们来了解一下CXF...

    cxf入门例子

    标题"cxg入门例子"表明我们将探讨如何开始使用CXF进行Web服务开发。这通常涉及以下几个关键步骤: 1. **环境配置**:首先,你需要在你的开发环境中安装Java Development Kit (JDK) 和Apache CXF。你可以通过Maven或...

    Apache_cxf_学习笔记.docx

    - **背景介绍**:Apache CXF 是一个高性能、功能丰富的开源框架,用于构建和消费 Web 服务。它融合了 Celtix 和 XFire 两个开源项目的优点,提供了一个强大的平台来支持多种 Web 服务标准和技术。 - **发展历程**:...

    cxf.apache.org/schemas/(jaxrs.xsd、jaxrs.xsd、core.xsd)文件下载

    Apache CXF是一个开源的服务框架,它支持多种Web服务标准,包括JAX-WS和JAX-RS。在本文中,我们将深入探讨与标题和描述相关的知识点,主要关注JAX-RS和CXF的集成,以及如何利用xsd文件来增强IDE的配置提示。 JAX-RS...

    cxf webservice简单例子 服务端 客户端

    本教程将基于CXF构建一个简单的Web服务,包括服务端和客户端的实现。我们将使用CXF提供的工具和服务接口来创建服务,然后通过客户端调用来验证服务的正确性。 ### 1. CXF简介 CXF是Apache软件基金会的一个项目,它...

    cxf简单例子

    本示例将带你了解如何使用CXF创建一个简单的Web服务。 首先,让我们了解CXF的核心概念。CXF支持两种主要的Web服务标准:SOAP(Simple Object Access Protocol)和REST(Representational State Transfer)。SOAP是...

    spring 集成 cxf 简单例子

    在这个简单的例子中,我们看到了Spring和CXF如何协同工作,提供了一种高效且灵活的方式来创建和部署Web服务。通过Spring的自动化配置和CXF的Web服务支持,开发人员可以专注于业务逻辑,而不是底层的基础设施。 注意...

    ApacheCxf提供Json格式接口服务demo

    Apache CXF是一个开源的Java框架,它主要用于构建和开发服务导向架构(SOA)和Web服务。这个项目的核心目标是使开发Web服务变得简单而高效。在本示例中,我们将探讨如何使用Apache CXF来提供JSON格式的接口服务。 ...

    web service cxf获取第三方天气数据

    CXF是Apache组织提供的一款开源框架,专门用于构建和开发Web服务。本项目主要讲述了如何使用CXF框架来获取第三方天气数据。 首先,我们需要了解CXF的核心概念。CXF提供了一种简单的方式来创建和消费Web服务,支持...

Global site tag (gtag.js) - Google Analytics