Spring与apache CXF结合实例

本文的前提是已经有一个Spring的项目,在此基础上如何跟apache CXF进行结合,开发出WebService服务和调用WebService服务。

1.开发WebService

  1.引入jar包

  下载最新的jar包,并引入:\apache-cxf-3.0.1\lib\*(当然里面有些是不必要的,有兴趣的可以自己删减)。

  2.修改web.xml

<servlet>
        <servlet-name>cxf</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>cxf</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

  3.引入单独的spring配置文件cxf-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
    license agreements. See the NOTICE file distributed with this work for additional
    information regarding copyright ownership. The ASF licenses this file to
    you under the Apache License, Version 2.0 (the "License"); you may not use
    this file except in compliance with the License. You may obtain a copy of
    the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
    by applicable law or agreed to in writing, software distributed under the
    License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
    OF ANY KIND, either express or implied. See the License for the specific
    language governing permissions and limitations under the License. -->
<!-- START SNIPPET: 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-servlet.xml" />
    <jaxws:endpoint id="UserService"
        implementor="cn.telchina.standard.service.user.UserServiceImpl" address="/UserService" />
</beans>
<!-- END SNIPPET: beans -->

上述代码中:

    jaxsw:endpoint是关键。

在web.xml中加入配置

  4.开发服务接口和服务实现类

接口类:

package cn.telchina.standard.service.user;

import javax.jws.WebService;

/**
 * 必须要有接口
 * @author Administrator
 *
 */
@WebService
public interface UserService {

    public boolean updateTheUser(String user);

    public boolean updateUsersCode(String user);

}

接口实现类:

package cn.telchina.standard.service.user;

import javax.jws.WebService;

@WebService(endpointInterface = "cn.telchina.standard.service.user.UserService")
public class UserServiceImpl implements UserService {

    @Override
    public boolean updateTheUser(String user) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean updateUsersCode(String user) {
        // TODO Auto-generated method stub
        return false;
    }

}

 

此时发布程序即可:

http://localhost:8080/cxfProject/services

http://localhost:8080/cxfProject/services/UserService?wsdl

2.调用WebService

调用CXF服务的方式有三种:

1.配置spring bean的方式

   新增配置文件:client-beans,并在web.xml中配置。

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

        <jaxws:client id="client"
        address="http://localhost:8080/cxfProject/services/UserService"
        serviceClass="cn.telchina.standard.service.user.UserService" />
</beans>

java代码:

public static void invokeBySpring(){
        // TODO Auto-generated method stub
                ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
                        new String[] { "client-beans.xml" });

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

                boolean response = client.updateTheUser("Joe");
                System.out.println("Response: " + response);
    }

2.CXF的方式

public static void invokeService(){
            JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
            factory.setServiceClass(UserService.class);
            factory.setAddress("http://localhost:8080/cxfProject/services/UserService");
            UserService service = (UserService) factory.create();  

            boolean response = service.updateTheUser("Joe");
            System.out.println("#############"+response+"##############");
    }

3.RPC方式

public static void invokeService2() throws Exception{
         //这个是用cxf 客户端访问cxf部署的webservice服务
        //千万记住,访问cxf的webservice必须加上namespace ,否则通不过
        //现在又另外一个问题,传递过去的参数服务端接收不到
        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
        org.apache.cxf.endpoint.Client client = dcf.createClient("http://localhost:8080/cxfProject/services/UserService?wsdl");
        //url为调用webService的wsdl地址
        QName name=new QName("http://user.service.standard.telchina.cn/","updateTheUser");
        //namespace是命名空间,methodName是方法名
        String xmlStr = "name";
        //paramvalue为参数值
        Object[] objects=client.invoke(name,xmlStr);
        //调用web Service//输出调用结果
        System.out.println(objects[0].toString());
    }

 

PS:

   cxf的类库和axis2的类库不能放到一个项目中,否者会报错:

Invocation of init method failed; nested exception is java.lang.NoSuchFieldError: REFLECTION

时间: 2024-10-28 08:16:50

Spring与apache CXF结合实例的相关文章

Apache CXF实现Web Service(4)——Tomcat容器和Spring实现JAX-RS(RESTful) web service

准备 我们仍然使用 Apache CXF实现Web Service(2)——不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service 中的代码作为基础,并引入spring来进行RESTful web service的配置和管理. 项目目录结构如下图 首先我们要在web.xml中加入通过Spring的ContextLoaderListener加载的Spring运行时环境以及CXF的Spring配置文件 web.xml <?xml version="

Apache cxf 整合 Spring MVC

1.添加依赖pom.xml <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.o

Apache CXF+Spring开发环境搭建小试

最近手上一个项目要开发webservice,而原有系统使用了spring,所以在选择框架的时候,我选择了cxf,这样在开发整合的时候就比较方便了.在搭建开发环境的过程中发现这篇文章写得比较详细,所以就搬到自己博客里,希望给自己和同行做参考. CXF 应用开发 下面就将开始我们的 CXF Web Services 的开发之旅!首先,要有一个基于 Eclipse 的开发环境:然后,我们将利用这个开发环境开发一个简单的“调查投票”示例,同时我们将解释一些 CXF 在开发中进行配置的基本方法. 开发环境

Apache CXF 整合Spring

一.创建一个 Java Web 工程,目录最终的结构如下图,下面我们将遂一说明: 二.把我们要用到的jar包全部放到lib目录下. 三.修改web.xml文件,整合CXF. <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2e

Apache CXF实现Web Service(3)——Tomcat容器和不借助Spring的普通ServletJAX-RS(RESTful) web service

起步 参照这一系列的另外一篇文章: Apache CXF实现Web Service(2)——不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service 首先在eclipse中新建一个Dynamic Web Project,然后实现上篇文章中的所有类,唯一不同的是这里,我们不需要一个Server.java来启动一个Web Service.我们用CXF自带的org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServ

Apache CXF实现Web Service(2)——不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service

实现目标 http://localhost:9000/rs/roomservice 为入口, http://localhost:9000/rs/roomservice/room为房间列表, http://localhost:9000/rs/roomservice/room/001/ 为001号房间的信息, http://localhost:9000/rs/roomservice/room/001/person 为在001号房间主的人的列表 在Eclipse中新建一个Java Project (可

springMVC3+apache CXF+spring security3+mybatis3(proxool)整合项目

整合出现很多问题,这里就不例举了,大家各自修炼吧,这里我只提供demo架包,可以在里面折腾.这里我说一下为什么会有这样的框架:我们项目要求是为子系统提供权限认证和管理(web service),同时对这些web service进行权限管理.所以demo中对security做了url和方法级的认证做了扩展,但没做具体实现. 1.web.xml <?xml version="1.0" encoding="UTF-8" ?> <web-app xmlns

Error creating bean with name &#39;org.apache.cxf.spring.boot.autoconfigure.CxfAutoConfiguration

Error starting Tomcat context. Exception: org.springframework.beans.factory.BeanCreationException. Message: Error creating bean with name 'org.apache.cxf.spring.boot.autoconfigure.CxfAutoConfiguration': Initialization of bean failed; nested exception

Web应用使用Apache CXF 建立 WebService——详细案例(与Spring结合)

转载请注明出处:http://blog.csdn.net/u013474104/article/details/45097957 步骤- - 1.使用Maven依赖jar文件 2.web.xml配置 a.加载cxf-beans.xml配置文件 b.配置CXF Servlect 3.cxf-beans.xml服务配置 a.lics2uldwms.java服务接口类 b.lics2uldwms.java服务接口的实现类 4.访问服务接口 5.Client调用服务接口--TestDemo.java类