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

webservice编程基础—cxf

阅读更多
最近研究了一下cxf的使用,主要的步骤如下:
一, 下载最新的cxf包apache-cxf-2.6.2.tar.zip,并解压,有一个lib文件,里面的jar包,就是webservice需要的(不完全需要,看你的应用,但是懒的分),加载进你的webservice的工程即可。
二, 配置两个配置文件,为beans.xml和web.xml,内容如下:
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="HelloWorld" address="/HelloWorld" implementor="com.demo.HelloWorldImpl"/>
</beans>
需要注意的是,上面红色的部分,其中,id不用管,主要是和spring集成需要的吧,address就是你的服务名,这里配置为HelloWorld。Implementor配置的是服务的实现类,这里是com.demo包里的类HelloWorldImpl。

Web.xml
<?xml version="1.0" encoding="UTF-8"?>  
<web-app xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"> 
     <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>  
     </servlet>  
     <servlet-mapping>  
         <servlet-name>CXFServlet</servlet-name>  
         <url-pattern>/services/*</url-pattern>  
     </servlet-mapping>  
</web-app>
   上面红色部分是在weblogic配置需要主要的(在上一篇文章中提过)。
下面是服务端的代码:
HelloWorld.java:
package com.demo;
import java.util.ArrayList;
import java.util.List;
import javax.jws.WebParam;
import javax.jws.WebService;
          @WebService
          public interface HelloWorld {
          //@WebParam(name="text",targetNamespace="http://demo.com/")
               String sayHi(@WebParam(targetNamespace="http://demo.com/")String text);
               String sayHiToUser(@WebParam(targetNamespace="http://demo.com/")User user);
               ArrayList<String> SayHiToUserList(@WebParam(targetNamespace="http://demo.com/")List<User> userList);
           }
HelloWorldImpl.java
  package com.demo;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
        
         //注解
        //@WebService(endpointInterface="com.demo.HelloWorld",serviceName="HelloWorld")
         public class HelloWorldImpl implements HelloWorld {
 
           Map<Integer, User> users = new LinkedHashMap<Integer, User>();

                    public String sayHi(String text) {
                                return "Hello " + text;
                   }
                    public String sayHiToUser(User user) {
                             users.put(users.size()+1, user);
                             return "Hello "+ user.getName();
                   }
           public ArrayList<String> SayHiToUserList(List<User> userList) {
                     String[] result = new String[userList.size()];
                     ArrayList<String> list = new ArrayList<String>();
                     int i=0;
                     for(User u:userList)
{
                                  result[i] = "Hello " + u.getName();
                                  list.add(result[i]);
                                  i++;
                      }
                      return list;
                   }
       }

注意在HellWorld.java中@WebService是表明如下的接口是webservice接口,不能删除。如果不加@WebParam(targetNamespace)以指定参数的命名空间,用xfire根据wsdl生成客户端时,会出现错误。原因为:
查看soap信息,发现在soap信息中多加入了namespace:ns2。如下:<ns2:operation xmlns:ns4="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="url2" xsi:type="ns4:url4">
原因是服务器端的operation是没有定义targetNamespace,而xfire生成客户端时,如果也没有定义targetNamespace,它会默认的取Service的targetNamespace。

部署在Weblogic时,可能会出现jar包冲突:
解决办法是:
在startWebLogic.cmd。配置:
set CLASSPATH_CXF=E:\JavaWorkSpace\CXFServer2\WebRoot\WEB-INF\lib\geronimo-ws-metadata_2.0_spec-1.1.3.jar
set  CLASSPATH=%CLASSPATH_CXF%;%CLASSPATH%;%MEDREC_WEBLOGIC_CLASSPATH%
大概就是这些了,很容易吧。

PS:使用xfire调用cxf的服务时,如果传递List类型时,可能会出现问题,不知道什么原因,麻烦哪位大哥知道,告诉我,我们一起学习吧。
3
2
分享到:
评论
3 楼 fenger_chui 2012-09-21  
zhenglongfei 写道
本人用cxf以后觉的很简单,但是返回list类型不建议用,可全部返回string类型的xml字符串,调用者只需要解析字符串即可,不会出现任何错误。。

我是参数如果是List的时候会出现问题,而不是返回值是list出现问题。麻烦请教这是什么原因呢?
2 楼 freezingsky 2012-09-20  
虽然没用CXF,但是如果返回List的时候,出问题的话,可以考虑把List JSON化,这样肯定没问题了吧!
1 楼 zhenglongfei 2012-09-20  
本人用cxf以后觉的很简单,但是返回list类型不建议用,可全部返回string类型的xml字符串,调用者只需要解析字符串即可,不会出现任何错误。。

相关推荐

    WebService技术手册 CXF&XFire

    **WebService技术概述** WebService是一种基于...通过以上内容,你可以全面了解并掌握WebService的基础知识,以及CXF和XFire这两个关键框架的使用。学习并熟练运用这些技术,将有助于你构建高效、可靠的分布式系统。

    spring+CXF实现WebService(http+https)

    Spring框架提供了灵活的依赖注入和AOP(面向切面编程)特性,可以方便地集成各种服务组件。CXF作为Web服务提供商,它支持SOAP和RESTful两种风格的服务,能够与Spring无缝对接。通过Spring的ApplicationContext配置...

    部署WebService服务(cxf,spring)

    本篇将深入探讨如何利用CXF和Spring来部署WebService服务。 首先,CXF全称是CXF Commons eXtensible Framework,它是一个Java Web服务框架,支持多种Web服务标准,如SOAP、RESTful(Representational State ...

    webservice spring与CXF结合实现 实例和jar包都有

    Spring是一个全面的Java企业级应用开发框架,提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等核心功能。Spring还支持多种数据访问技术,如JDBC、ORM(对象关系...

    webservice cxf.jar 相关包

    1. 服务端开发:CXF允许开发者使用Java编程模型(如JAX-WS或JAX-RS)来定义服务接口,然后自动生成服务实现和WSDL(Web Services Description Language)。 2. 客户端调用:CXF也支持生成客户端代理代码,使得Java...

    WebService之CXF开发指南.doc

    2. Frontends:CXF支持多种“Frontend”编程模型,CXF实现了JAX-WS API(遵循JAX-WS 2.0TCK版本),它也包含一个“simple frontend”允许客户端和EndPoint的创建,而不需要Annotation注解。 3. 容易使用:CXF设计得...

    webservice demo sprintboot cxf

    【标题】"webservice demo springboot cxf" 涉及到的是一个使用Spring Boot框架和Apache CXF库创建Web服务的示例项目。在Java世界中,Spring Boot以其简化微服务开发的特性广受欢迎,而CXF是用于构建和消费Web服务的...

    webservice+cxf基础笔记和视频,

    总的来说,这份“webservice+cxf基础笔记和视频”资源将引导你进入Web服务的世界,通过学习和实践,你可以掌握使用CXF和Spring进行Web服务开发的基本技能。无论你是初学者还是有一定经验的开发者,这都将是一份有...

    maven项目 cxf webservice

    3. **定义Web服务接口**:使用Java编程语言定义Web服务的接口,这些接口通常继承自JAX-WS或JAX-RS的接口,如`javax.jws.WebService`或`javax.ws.rs.GET`。 4. **实现Web服务**:创建接口的实现类,实现服务的具体...

    webservice cxf 整合spring例子源代码

    【标题】:Webservice CXF 整合Spring的实例源码解析 在Web服务开发中,Apache CXF是一个广泛使用的开源框架,它提供了创建、部署和管理Web服务的强大功能。CXF不仅支持SOAP,还支持RESTful API,使得开发者能够...

    Spring+CXF 发布WebService服务

    Spring框架的核心特性包括依赖注入、面向切面编程(AOP)、事务管理等,这使得开发者可以更专注于业务逻辑,而不是基础设施代码。 Apache CXF,另一方面,是一个开源的服务框架,主要用于构建和部署SOAP和RESTful ...

    webservice的cxf框架客户端调用所需jar包

    它负责构建并管理Web服务的生命周期,同时也是其他CXF模块的基础。 2. `xmlbeans-2.6.0.jar`: XMLBeans是一个用于Java的XML处理库,它可以将XML文档映射为Java对象,反之亦然。在CXF中,XMLBeans用于解析和生成XML...

    webservice+cxf+spring

    【标题】:“WebService+CXF+Spring”是一个关于在Java环境中使用Apache CXF框架与Spring框架集成实现Web服务的专题。Apache CXF是一个开源的Web服务框架,它允许开发人员创建和部署SOAP和RESTful Web服务。Spring...

    webservice(cxf),客户端和服务器端

    1. **CXF**:CXF允许开发者使用Java编程模型来创建和使用Web服务。它可以处理SOAP消息,同时也支持RESTful服务。CXF集成了Spring框架,使得配置和服务的生命周期管理变得更加容易。 2. **Spring MVC**:Spring MVC...

    WebService_CXF学习.doc

    ### WebService与CXF基础知识详解 #### 一、WebService简介 **WebService** 是一种通过网络提供的服务,允许不同系统之间进行交互。它采用标准的Internet协议(如HTTP、XML、SOAP等),使得不同语言编写的程序能够...

    Cxf+webservice(客服端和服务端)

    【Cxf+WebService:构建服务与客户端的详解】 在IT行业中,Web Service是一种通过互联网交换业务数据的应用程序接口(API)。它允许不同系统之间的互操作性,即使这些系统使用不同的编程语言、操作系统或硬件平台。...

    13.为CXF与Spring整合发布WebService添加拦截器进行权限控制

    当我们需要在CXF和Spring整合的基础上发布Web服务,并对权限进行控制时,可以利用拦截器来实现这一目标。本文将详细介绍如何为CXF与Spring整合发布WebService添加拦截器进行权限控制。 首先,我们需要理解CXF拦截器...

    webservice cxf+spring maven项目

    总结来说,"webservice cxf+spring maven项目"是一个适合初学者的示例,它展示了如何利用CXF、Spring和Maven构建、部署和测试Web服务。这个项目涵盖了Web服务的基本概念,以及CXF和Spring在Web服务中的实际应用,为...

    cxf+spring webservice demo client

    通过Spring,我们可以利用其依赖注入(DI)和面向切面编程(AOP)特性,更方便地管理CXF组件。下面将详细阐述如何构建一个基于CXF和Spring的Web服务客户端。 1. **配置Spring XML**: 在项目中,首先需要创建一个...

Global site tag (gtag.js) - Google Analytics