cxf 与 spring整合

原创 2013年12月04日 10:27:59

1、需要从cxf中添加如下jar包

neethi-3.0.2.jar

wsdl4j-1.6.3.jar

xmlschema-core-2.0.3.jar

cxf-2.6.10.jar

 

2、在web.xml中添加如下配置文件

<!-- 加载Spring容器配置 -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 设置Spring容器加载配置文件路径 -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:applicationContext-server.xml</param-value>
</context-param>
 
<listener>
    <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
 
<!-- 使用CXFServlet对象来处理对外发布的服务 -->
<servlet>
    <servlet-name>CXFService</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
 
<servlet-mapping>
    <servlet-name>CXFService</servlet-name>
    <url-pattern>/webservice/*</url-pattern>
</servlet-mapping>

 

 

3、添加spring配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jaxws="http://cxf.apache.org/jaxws"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://cxf.apache.org/jaxws 
    http://cxf.apache.org/schemas/jaxws.xsd">
	
	<!-- 下面的文件全部在cxf.jar目录下面 -->
	<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"/>

</beans>

 

备注:

web应用加载类的两类路径:

1、在WEB-INF/class目录下

2、在WEB-INF/lib目录下面

这两种方式都是指向class的路径,在cxf.jar文件中有META-INF/cxf目录,里面有很多文件,因此资源引用可以使用:

classpath:META-INF/cxf/cxf.xml

 

4、写一个定制服务器接口

package adtec.ws.service;

import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

import adtec.ws.model.User;

@WebService
@SOAPBinding(style = Style.RPC)
public interface IComplexUserService {
    
    public User getUserByName(@WebParam(name = "name") String name);
    
    public void setUser(User user);
}

 

5、webservice实现类

package adtec.ws.service.imp;


import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

import adtec.ws.model.User;
import adtec.ws.service.IComplexUserService;

@WebService
@SOAPBinding(style = Style.RPC)
@SuppressWarnings("deprecation")
public class ComplexUserService implements IComplexUserService {
    
    public User getUserByName(@WebParam(name = "name") String name) {
        User user = new User();
        user.setId(111);
        user.setName(name);
        user.setAddress("china");
        user.setEmail(name + "@hoo.com");
        return user;
    }
    
    public void setUser(User user) {
        System.out.println("############Server setUser###########");
        System.out.println("setUser:" + user);
    }
}

 

6、model对象

package adtec.ws.model;

public class User {
	private int id;
	private String name;
	private String address;
	private String email;
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	private int age;
	
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

 

7、在spring配置文件中添加如下代码

<!-- 
implementor 指定web service服务的提供者,支持两种方式:
1、直接给定服务器提供者的类名
2、设置为容器中一个bean(要在bean的id前面用#)
 
<jaxws:endpoint
	implementor="adtec.ws.service.imp.ComplexUserService"
	address="/hb"
>
-->
<bean id="complexUserService" class="adtec.ws.service.imp.ComplexUserService"></bean>
<jaxws:endpoint
	implementor="#complexUserService"
	address="/hb">
	<!-- 添加in拦截器 -->
	<jaxws:inInterceptors>
		<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
	</jaxws:inInterceptors>
	
	<jaxws:outInterceptors>
		<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
	</jaxws:outInterceptors>
</jaxws:endpoint>

 备注:在endpoid里面的拦截器可以不用使用。

 

8、启动tomcat

在地址栏输入 http://localhost:8080/myspring/webservice

或者在地址栏输入 http://localhost:8080/myspring/webservice/webservice?wsdl

(五)WebService之CXF和Spring整合

引言 项目实现 1POMxml文件 2webxml文件 3soap接口实现类实体类 4rest接口实现类实体类 5spring和cxf配置文件 6验证服务是否发布成功 代码下载1.引言      在...
  • LoveCarpenter
  • LoveCarpenter
  • 2017年01月01日 15:50
  • 3057

一、CXF与springMVC整合的webService发布

1、关于spring不多说,用到cxf插件,则需要导入一些列jar包,我这里用的是maven管理jar包,在pom.xml文件中的maven依赖如下: org.apache.cxf ...
  • u013926113
  • u013926113
  • 2015年09月08日 09:44
  • 11989

手把手教你 cxf3.1.4整合spring4.2

1、开发工具:Eclipse4.5   + tomcat8  + jdk8  + cxf3.1.4  + spring4.2 2、首先Eclipse新建两个web工程,,一个模拟server端发布w...
  • jQuerys
  • jQuerys
  • 2016年02月04日 13:32
  • 11272

spring与cxf整合开发

  • 2017年11月27日 18:25
  • 117.48MB
  • 下载

webservice(cxf)与spring整合源码+文档

  • 2017年11月23日 16:15
  • 57.8MB
  • 下载

CXF与Spring整合以及所需jar

  • 2017年11月02日 22:17
  • 54MB
  • 下载

cxf+spring 整合包

  • 2014年08月06日 15:15
  • 7.54MB
  • 下载

CXF整合Spring

  • 2014年05月03日 14:33
  • 12.26MB
  • 下载

spring3+hibernate3整合CXF所需的jar包

  • 2014年12月02日 23:04
  • 34.26MB
  • 下载

cxf-2.7.3与spring3.0.7整合实例

  • 2013年06月03日 16:12
  • 9.45MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cxf 与 spring整合
举报原因:
原因补充:

(最多只允许输入30个字)