`
longgangbai
  • 浏览: 7331005 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多

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包拷到工程下面

package com.easyway.cxf.service;

import javax.jws.WebParam;
import javax.jws.WebService;
import java.util.List;


import com.easyway.cxf.model.User;
/**
 *
 * 采用JaxWS发布服务
 * 备注在接口中必须使用@WebService 注解否则出现错误
 *
 *
 * @author longgangbai
 *
 */
@WebService
public interface HelloService {
 /**
  * The @WebParam annotation is necessary as java interfaces do not store the Parameter name in the .class file. So if you leave out the annotation your parameter will be named arg0.
  * @param name
  * @return
  */
  public String hello(@WebParam(name="text")String name);
 
  /**
   * Advanced usecase of passing an Interface in.  JAX-WS/JAXB does not
   * support interfaces directly.  Special XmlAdapter classes need to
   * be written to handle them
   */
  public String sayHi(User user);

  public String[] getAllUseNames(List<User> userList);
}

 

package com.easyway.cxf.service;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.jws.WebService;

import com.easyway.cxf.model.User;
/**
 *
 *  采用JaxWS发布服务
 * 
 * JAX-WS includes many more annotations as well such as:
 *
 * @WebMethod - allows you to customize the operation name, exclude the operation from inclusion in the service, etc
 * @WebParam - allows you to customize a parameter's name, namespace, direction (IN or OUT), etc
 * @WebResult - allows you to customize the return value of the web service call
 *
 * @author longgangbai
 *
 */
@WebService(endpointInterface = "com.easyway.cxf.service.HelloService",
        serviceName = "HelloService")
public class HelloServiceImpl implements HelloService {

    Map<Integer, User> users = new LinkedHashMap<Integer, User>();
   

 public String hello(String username) {
        return "Hello " + username;
 }

 public String sayHi(User user) {
         users.put(users.size() + 1, user);
         return "Hello "  + user.getUsername();
 }
 public String[] getAllUseNames(List<User> userList) {
  String[] userListArr=new String[userList.size()];
  for (int i=0;i<userList.size();i++) {
   userListArr[i]=userList.get(i).getUsername();
  }
  return userListArr;
 }

}

 

 

package com.easyway.cxf.test.server;

import javax.xml.ws.Endpoint;

import com.easyway.cxf.service.HelloServiceImpl;
/**
 * run webServiceApp.java 类来启动服务。 访问 http://localhost:8080/HelloService?wsdl  查看是否显示
 *   wsdl。
 * @author longgangbai
 *
 */
public class CFX {
 public  final static  String SERVICE_ADDRESS="http://localhost:8080/HelloService";
 public static void main(String[] args) {
  System.out.println("web service start");
  HelloServiceImpl implementor= new HelloServiceImpl();
  //采用JWS发布服务
        Endpoint.publish(SERVICE_ADDRESS, implementor);
        System.out.println("web service started");
 }

}
package com.easyway.cxf.test.client;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

import com.easyway.cxf.model.User;
import com.easyway.cxf.service.HelloService;
import com.easyway.cxf.test.server.CFX;
/**
 * 调用服务端代码
 * @author longgangbai
 *
 */
public class CFXClient {
 public static void main(String[] args) {
  //采用JWS获取服务
  JaxWsProxyFactoryBean svr = new JaxWsProxyFactoryBean();
     svr.setServiceClass(HelloService.class);
     //和服务端发送路径一样的
     svr.setAddress(CFX.SERVICE_ADDRESS);
     HelloService hw = (HelloService) svr.create();
     User user = new User();
     user.setUsername("Tony");
     user.setPassword("test");
     System.out.println(hw.sayHi(user));
}
}

分享到:
评论

相关推荐

    cxf 开发webservice客户端

    在IT行业中,CXF是一个广泛使用的开源框架,用于开发...了解这些知识点,能够帮助我们更高效地构建和测试与Web服务交互的应用程序。在实际项目中,还需要根据具体需求进行相应的调整和优化,确保客户端的稳定性和性能。

    Cxf应用全部jar包

    Apache CXF是一个开源的Java框架,它允许开发人员创建、部署和管理基于Web服务的应用程序。CXF提供了丰富的API和工具,支持SOAP、RESTful、WS-*规范等多种通信协议,使得Web服务的开发变得更加便捷。 【描述】"本...

    jdk21集成cxf示例程序

    在Java开发中,CXF是一个广泛使用的开源框架,主要用于构建和开发服务导向架构(SOA)的应用程序。它提供了SOAP和RESTful Web服务的支持,同时也支持WS-*规范。CXF允许开发者利用Java语言的强大力量,创建和消费Web...

    apache cxf 开发包 1

    Apache CXF 是一个开源的Java框架,主要用于构建和开发服务导向架构(Service-Oriented Architecture, SOA)和Representational State Transfer(RESTful)应用程序。它提供了多种方式来实现Web服务,包括Java API ...

    cxf开发webservice所用jar包

    这个标题“cxf开发webservice所用jar包”表明我们正在讨论一组CXF框架所需的JAR文件,这些文件对于利用CXF开发基于Web服务的应用程序至关重要。在描述中提到“cxf-2.4.1整合spring3.0所用jar包”,这暗示了我们使用...

    cxf+spring开发webservice客户端与服务端实例

    在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而CXF和Spring框架的结合则为开发高质量的Web服务提供了强大的支持。本实例将详细阐述如何利用CXF和Spring来构建Web服务的客户端和服务端。 一、CXF简介...

    CXF WS-Security WSS4J 例子

    WSS4J(Web Services Security for Java)是Apache的开源库,它为Java应用程序提供了实施WS-Security标准的功能。 本示例是关于如何在CXF中使用WS-Security和WSS4J进行安全配置和实践的实例。运行此例子时,你需要...

    apache-cxf-2.2.6.zip webservice cxf开发利器完整开发包

    1. **Web服务基础**:Web服务是一种基于开放标准(如XML、WSDL和SOAP)的应用程序接口,使得不同系统间能进行通信和数据交换。Apache CXF提供了一种实现这些标准的方法,使得开发者可以快速地构建和整合Web服务。 2...

    cxf服务端开发jar包

    总结,"cxf服务端开发jar包"是CXF框架用于构建服务端应用的核心组件,涵盖了服务接口定义、实现、发布、部署以及各种高级功能,如安全机制、性能优化等。开发者可以借助CXF提供的工具和插件,高效地开发和管理Web...

    用cxf开发webservice

    例如,设置`contextConfigLocation`以指示CXF加载应用程序上下文,包括`applicationContext-cxf.xml`文件。同时,配置CXFServlet,它是CXF处理HTTP请求的入口点。`url-pattern`的设置确定了CXF服务的访问路径。 在`...

    CXF服务端程序

    【CXF服务端程序】是基于Apache CXF框架构建的一个简单Web服务应用,它使得开发者能够轻松地创建和消费Web服务。Apache CXF是一个开源的Java框架,它提供了丰富的功能来支持SOAP、RESTful以及WS-*协议栈。通过CXF,...

    用CXF开发SOAP接口

    SOAP是一种用于交换结构化和类型化的信息的协议,常用于企业级应用程序之间的通信。 【描述】虽然描述为空,但我们可以假设这篇博文可能详细讲解了如何利用CXF来搭建SOAP服务,包括配置项目、创建服务接口、实现...

    使用CXF开发WebService服务器端和客户端

    WebService是一种基于XML的标准化方式,它允许不同平台、语言和操作系统之间的应用程序进行互操作。SOAP(Simple Object Access Protocol)是Web服务最常用的通信协议,而WSDL(Web Services Description Language)...

    使用cxf和spring开发基于https的webservice服务端以及客户端样例

    在IT行业中,Web服务是一种广泛使用的通信协议,用于应用程序之间的数据交换。本示例将详细介绍如何使用Apache CXF和Spring框架来开发基于HTTPS的安全Web服务,包括服务端和客户端的实现。 Apache CXF是一个开源的...

    cxf+ws-security-JAR

    3. webservice:Web服务是一种通过网络进行通信的应用程序接口,允许不同系统间的互操作性。 4. 安全调用:指的是在Web服务调用过程中,使用安全机制确保数据传输的保密性和调用者的身份真实性。 【详细说明】 ...

    WebService Axis和XFire(CXF)的开发流程

    在IT领域,WebService是一种基于XML的通信标准,用于构建分布式系统中的应用程序接口(API)。本篇主要介绍两种常用的WebService框架——Axis和XFire(现已被CXF合并)的开发流程。 1. **Axis**:Axis是Apache软件...

    spring+cxf 开发webservice

    MyEclipse是一个集成开发环境(IDE),专为Java EE应用程序设计,它支持直接导入和运行此类项目,从而简化了开发流程。通过这个项目,开发者可以直接开始构建基于Spring和CXF的Web服务,或者在现有基础上进行扩展。 ...

    cxf开发工具包

    REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,用于简化分布式系统之间的交互。CXF提供了一套强大的工具,支持开发RESTful服务,包括注解驱动的API(如JAX-RS)和...

    spring集成cxf的ws与rs

    通过以上步骤,我们可以实现一个集成了Spring、CXF、Struts的Web应用程序,具备了处理HTTP请求、提供SOAP和RESTful服务的能力,同时也具备了Action的业务处理能力,为企业级应用开发提供了强大而灵活的解决方案。...

    cxf开发webservice服务端

    CXF允许开发者以Java SE或Java EE环境轻松创建服务端和客户端应用程序。本文将深入探讨如何使用CXF开发Web服务端。 【描述】: 通过博客链接(https://liuwuhen.iteye.com/blog/1666189)我们可能能够获取到关于...

Global site tag (gtag.js) - Google Analytics