`
wiiln
  • 浏览: 151824 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

CXF 2.0 webservice 学习笔记系列

    博客分类:
  • J2SE
阅读更多
对比了一下CXF2 和 AXIS 2 还是选择在框架中集成CXF2。不过CXF2的文档更新的真是慢啊,试了一下,目前CXF2支持的两种绑定方式jaxb2和aegis,看了半天源码总算调通了。又忍不住批一下他的文档,给的都是半调子的例子,希望开发小组能尽快完善啊!

先放一个HelloWold的aegis的配置:
一、server 端:
1. HelloWorld.java
Java代码
package demo.spring;  
 
import javax.jws.WebService;  
 
@WebService 
public interface HelloWorld {  
    String sayHi(String text);  


package demo.spring;

import javax.jws.WebService;

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


2.HelloWorldImpl.java
Java代码
package demo.spring;  
 
import javax.jws.WebService;  
 
@WebService(endpointInterface = "demo.spring.HelloWorld")  
public class HelloWorldImpl implements HelloWorld {  
 
    public String sayHi(String text) {  
        return "Hello " + text;  
    }  


package demo.spring;

import javax.jws.WebService;

@WebService(endpointInterface = "demo.spring.HelloWorld")
public class HelloWorldImpl implements HelloWorld {

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


3.beans.xml
Java代码
<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" />  
 
    <bean id="jaxWsServiceFactoryBean" 
        class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">  
        <property name="wrapped" value="true" />  
        <property name="dataBinding" ref="aegisBean" />  
    </bean>  
 
    <bean id="aegisBean" 
        class="org.apache.cxf.aegis.databinding.AegisDatabinding" />  
 
    <jaxws:endpoint id="CollectiveServices" 
        implementor="demo.spring.HelloWorldImpl" address="/HelloWorld">  
        <jaxws:serviceFactory>  
            <ref bean="jaxWsServiceFactoryBean"/>  
        </jaxws:serviceFactory>  
    </jaxws:endpoint>  
</beans> 

<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" />

<bean id="jaxWsServiceFactoryBean"
class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
<property name="wrapped" value="true" />
<property name="dataBinding" ref="aegisBean" />
</bean>

<bean id="aegisBean"
class="org.apache.cxf.aegis.databinding.AegisDatabinding" />

<jaxws:endpoint id="CollectiveServices"
implementor="demo.spring.HelloWorldImpl" address="/HelloWorld">
<jaxws:serviceFactory>
<ref bean="jaxWsServiceFactoryBean"/>
</jaxws:serviceFactory>
</jaxws:endpoint>
</beans>


4.web.xml
Java代码
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
 
    <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>  
        <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>/ws/*</url-pattern>  
    </servlet-mapping>  
 
</web-app> 

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<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>
<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>/ws/*</url-pattern>
</servlet-mapping>

</web-app>


二、客户端

1.ClientTest.java
Java代码
package demo.spring.client;  
 
import static org.junit.Assert.assertEquals;  
 
import org.apache.cxf.aegis.databinding.AegisDatabinding;  
import org.apache.cxf.frontend.ClientProxyFactoryBean;  
import org.junit.AfterClass;  
import org.junit.BeforeClass;  
import org.junit.Test;  
import org.springframework.context.support.ClassPathXmlApplicationContext;  
 
import demo.spring.HelloWorld;  
 
public final class ClientTest {  
 
    private static ClassPathXmlApplicationContext context;  
 
    @BeforeClass 
    public static void beforeClass() {  
        context = new ClassPathXmlApplicationContext(  
                new String[] { "demo/spring/client/client-beans.xml" });  
    }  
 
    @AfterClass 
    public static void afterClass() {  
        context = null;  
    }  
 
    @Test 
    public void testSayHiWithSpringConfig() throws Exception {  
 
        HelloWorld client = (HelloWorld) context.getBean("client");  
 
        String response = client.sayHi("Joe");  
        assertEquals("Hello Joe", response);  
    }  
      
    /** 
     * 这个官方有例子(http://cwiki.apache.org/CXF20DOC/aegis-databinding.html) 
     *  
     * @throws Exception 
     */ 
    @Test 
    public void testSayHiByCode() throws Exception {  
 
         ClientProxyFactoryBean factory = new ClientProxyFactoryBean();  
         factory.setServiceClass(HelloWorld.class);  
         factory.setAddress("http://localhost:8080/testCxf/ws/HelloWorld");  
         factory.getServiceFactory().setDataBinding(new AegisDatabinding());  
         HelloWorld client = (HelloWorld) factory.create();  
 
         assertEquals("Hello Joe", client.sayHi("Joe"));  
    }     


package demo.spring.client;

import static org.junit.Assert.assertEquals;

import org.apache.cxf.aegis.databinding.AegisDatabinding;
import org.apache.cxf.frontend.ClientProxyFactoryBean;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import demo.spring.HelloWorld;

public final class ClientTest {

private static ClassPathXmlApplicationContext context;

@BeforeClass
public static void beforeClass() {
context = new ClassPathXmlApplicationContext(
new String[] { "demo/spring/client/client-beans.xml" });
}

@AfterClass
public static void afterClass() {
context = null;
}

@Test
public void testSayHiWithSpringConfig() throws Exception {

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

String response = client.sayHi("Joe");
assertEquals("Hello Joe", response);
}

/**
* 这个官方有例子(http://cwiki.apache.org/CXF20DOC/aegis-databinding.html)
*
* @throws Exception
*/
@Test
public void testSayHiByCode() throws Exception {

ClientProxyFactoryBean factory = new ClientProxyFactoryBean();
factory.setServiceClass(HelloWorld.class);
factory.setAddress("http://localhost:8080/testCxf/ws/HelloWorld");
factory.getServiceFactory().setDataBinding(new AegisDatabinding());
HelloWorld client = (HelloWorld) factory.create();

assertEquals("Hello Joe", client.sayHi("Joe"));
}
}



2.client_beans.xml(testSayHiWithSpringConfig()中需要使用的配置文件)

Java代码
<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="aegisBean" 
        class="org.apache.cxf.aegis.databinding.AegisDatabinding" />  
          
    <bean id="serviceFactoryBean" class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">  
        <property name="dataBinding" ref="aegisBean" />  
    </bean>  
 
    <bean id="client" class="demo.spring.HelloWorld" 
        factory-bean="clientFactory" factory-method="create" />  
 
    <bean id="clientFactory" 
        class="org.apache.cxf.frontend.ClientProxyFactoryBean">  
        <property name="serviceFactory" ref="serviceFactoryBean" />  
        <property name="serviceClass" 
            value="demo.spring.HelloWorld" />  
        <property name="address" 
            value="http://localhost:8080/testCxf/ws/HelloWorld" />  
    </bean>  
 
</beans> 


分享到:
评论

相关推荐

    eclipse+CXF开发webService

    eclipse+CXF开发webService 本文档主要介绍了使用eclipse和CXF开发webService的步骤,涵盖了准备工作、配置eclipse上的CXF插件、开发代码和生成WSDL文件等方面的内容。 一、准备工作 在开发webService之前,需要...

    使用CXF和camel-cxf调用webservice

    在IT行业中,Web服务是一种广泛使用的通信方式,它允许不同系统之间通过网络交换数据和执行功能。Apache CXF和camel-cxf是两个流行的开源框架,...同时,不断学习和掌握最新的技术趋势,能够提升你在IT行业的竞争力。

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

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

    使用CXF搭建webService服务

    使用cxf搭建webService,客户端通过接口进行调用

    SpringBoot框架及CXF发布WebService

    **SpringBoot框架** SpringBoot是由Pivotal团队提供的全新框架,其设计目标是简化Spring应用...这两个部分可以作为学习和实践SpringBoot发布和消费Web服务的起点,帮助开发者深入理解SpringBoot与CXF的协同工作方式。

    cxf发布webservice示例

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

    用CXF开发webservice所用jar包

    最近用CXF开发webservice,发现老是报jar包的错误,但是又不能把所有从官网下载下来的都复制过来。官网下载的有好几十个呢,这是官网CXF的下载地址:http://cxf.apache.org/download.html。于是网上整理了一下,做个...

    Spring+CXF 发布WebService服务

    本文将深入探讨如何使用Spring和CXF来发布WebService服务。 首先,Spring是一个开源的Java平台,它提供了全面的编程和配置模型,用于简化企业级应用的开发。Spring框架的核心特性包括依赖注入、面向切面编程(AOP)...

    cxf实现webservice 常用注解总结

    CXF 实现WebService常用注解总结 CXF 实现WebService时,使用注解来指定与WebService相关的元数据,简化WebService的开发。下面总结了CXF实现WebService常用注解。 @WebService注解 @WebService注解标记Java类,...

    springboot整合CXF发布webservice和客户端调用

    SpringBoot整合CXF是将流行的Java Web服务框架CXF与SpringBoot轻量级框架结合,以便更方便地创建和消费Web服务。这个项目提供了一个很好的示例,通过详细注释帮助开发者理解如何在SpringBoot应用中发布和调用Web服务...

    Webservice笔记含使用cxf和jaxws两种方式开发webservice【源代码+笔记】

    第一天: 什么是webservice? 从案例(便民查询网站)分析如何实现? 使用socket实现。 使用jaxws开发webservice。 Webservice三要素 ... CXF发布rest的webservice。(重点) 综合案例: 实现便民查询网站

    Spring + cxf = webservice 完整实例源码免费下载

    Spring + cxf = webservice 完整实例源码免费下载 完全免费。此资源仅为文档提供。 版权为百度文档 "Spring + cxf = webservice 完整实例源码免费下载" 所有。

    CXF webservice初学笔记

    【CXF Webservice初学笔记】 在IT行业中,Web服务是一种允许不同系统之间进行通信和交换数据的方法。Apache CXF是一个流行的开源框架,用于构建和部署Web服务。本笔记将探讨CXF Webservice的基础知识,包括其核心...

    基于cxf 的webService 接口开发及调用步骤文档

    ### 基于CXF的WebService接口开发及调用步骤详解 #### 一、概述 在当前企业级应用开发中,服务化与微服务架构逐渐成为主流趋势,而WebService作为一种跨语言、跨平台的服务交互方式,在众多场景下仍然发挥着重要...

    cxf-webservice 最简单的

    【CXF Webservice 最简单的应用详解】 Apache CXF 是一个开源的 Java 框架,主要用于构建和开发 Web 服务。它提供了丰富的功能,包括支持多种 Web 服务规范,如 SOAP、RESTful API 和 JAXB,使得创建和消费 Web ...

    cxf实现webservice 多种方式

    cxf实现soap webservice服务,服务端\客户端均与spring结合使用,多种方式实现,花了三天时间弄懂,还有许多不懂的地方,欢迎大家交流.参考我的博文:http://blog.csdn.net/qq_33764491/article/details/78831010

    WebService CXF 详细教程

    **WebService CXF 详解** **一、WebService简介** WebService是一种基于标准的,可以在不同操作系统、编程...通过学习和实践CXF,开发者能够高效地构建和部署高质量的WebServices,实现企业间的系统集成和数据交换。

    webService(基于cxf)的完整例子

    Web服务在IT行业中扮演着重要的角色,它允许不同的应用程序通过网络进行通信和交换数据。CXF是一个流行的开源Java框架,用于...通过学习这个例子,开发者可以掌握CXF的基本使用方法,进一步拓展到更复杂的Web服务场景。

    Spring2+CXF实现webservice笔记

    ### Spring2 + CXF 实现 WebService 的关键知识点 #### 一、概述 在现代软件架构设计中,WebService 是一种非常重要的技术手段,它能够帮助开发者实现不同系统间的交互和服务共享。Spring 框架与 Apache CXF 结合...

Global site tag (gtag.js) - Google Analytics