Apache Cxf WebService整合Spring(1)

1:步骤

    (1)复制CXF的JAR包;
    (2)在web.xml配置CXF的核心控制器(CXFServlet);
    (3)在Spring配置文件中导入CXF的Schema和XML配置文件;
    (4)在Spring配置文件中使用jaxws:endponit元素标签来暴露Web Service;
    (5)如果要添加拦截器:在jaxws:endponit元素标签里添加
              inInterceptors、outInterceptors子元素


2:CXF和spring整合,我准备如下jar包文件:

Apache Cxf WebService整合Spring(1)_第1张图片


3:我的项目结构:


Apache Cxf WebService整合Spring(1)_第2张图片

4:代码

package com.lzw.springcxf.model;

public class ClubModel {
	
	private Integer clubId;
	private String clubName;
	private String country;
	
	public ClubModel() {
		super();
	}

	public ClubModel(Integer clubId, String clubName, String country) {
		super();
		this.clubId = clubId;
		this.clubName = clubName;
		this.country = country;
	}

	public Integer getClubId() {
		return clubId;
	}

	public void setClubId(Integer clubId) {
		this.clubId = clubId;
	}

	public String getClubName() {
		return clubName;
	}

	public void setClubName(String clubName) {
		this.clubName = clubName;
	}

	public String getCountry() {
		return country;
	}

	public void setCountry(String country) {
		this.country = country;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((clubId == null) ? 0 : clubId.hashCode());
		result = prime * result + ((clubName == null) ? 0 : clubName.hashCode());
		result = prime * result + ((country == null) ? 0 : country.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		ClubModel other = (ClubModel) obj;
		if (clubId == null) {
			if (other.clubId != null)
				return false;
		} else if (!clubId.equals(other.clubId))
			return false;
		if (clubName == null) {
			if (other.clubName != null)
				return false;
		} else if (!clubName.equals(other.clubName))
			return false;
		if (country == null) {
			if (other.country != null)
				return false;
		} else if (!country.equals(other.country))
			return false;
		return true;
	}
}

package com.lzw.springcxf.model;

public class ClubModel {
	
	private Integer clubId;
	private String clubName;
	private String country;
	
	public ClubModel() {
		super();
	}

	public ClubModel(Integer clubId, String clubName, String country) {
		super();
		this.clubId = clubId;
		this.clubName = clubName;
		this.country = country;
	}

	public Integer getClubId() {
		return clubId;
	}

	public void setClubId(Integer clubId) {
		this.clubId = clubId;
	}

	public String getClubName() {
		return clubName;
	}

	public void setClubName(String clubName) {
		this.clubName = clubName;
	}

	public String getCountry() {
		return country;
	}

	public void setCountry(String country) {
		this.country = country;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((clubId == null) ? 0 : clubId.hashCode());
		result = prime * result + ((clubName == null) ? 0 : clubName.hashCode());
		result = prime * result + ((country == null) ? 0 : country.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		ClubModel other = (ClubModel) obj;
		if (clubId == null) {
			if (other.clubId != null)
				return false;
		} else if (!clubId.equals(other.clubId))
			return false;
		if (clubName == null) {
			if (other.clubName != null)
				return false;
		} else if (!clubName.equals(other.clubName))
			return false;
		if (country == null) {
			if (other.country != null)
				return false;
		} else if (!country.equals(other.country))
			return false;
		return true;
	}
}
package com.lzw.springcxf.service;

import java.util.List;

import com.lzw.springcxf.model.ClubModel;
import com.lzw.springcxf.model.PlayerModel;

public interface ClubService {
	
	public List<PlayerModel> getPlayerByClub(ClubModel Club);
	
}

package com.lzw.springcxf.service;

import java.util.List;

import javax.jws.WebService;

import com.lzw.springcxf.model.ClubModel;
import com.lzw.springcxf.model.PlayerModel;

@WebService
public interface HandleService {
	
	public String sayName(String name);
	
	public List<PlayerModel> getPlayerByClub(ClubModel Club);

}

package com.lzw.springcxf.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.lzw.springcxf.model.ClubModel;
import com.lzw.springcxf.model.PlayerModel;
import com.lzw.springcxf.service.ClubService;

public class ClubServiceImpl implements ClubService {
    
	static Map<ClubModel, List<PlayerModel>> initData = new HashMap<ClubModel, List<PlayerModel>>();
	
	static {
		List<PlayerModel> playA = new ArrayList<PlayerModel>();
		playA.add(new PlayerModel(1, "梅西", "10", "前锋"));
		playA.add(new PlayerModel(2, "内马尔", "11", "前锋"));
		initData.put(new ClubModel(1111, "巴塞罗那", "西班牙"), playA);
		
		List<PlayerModel> playB = new ArrayList<PlayerModel>();
		playB.add(new PlayerModel(3, "C罗", "7", "前锋"));
		playB.add(new PlayerModel(4, "贝尔", "11", "中场"));
		initData.put(new ClubModel(2222, "皇家马德里", "西班牙"), playB);
	}
	@Override
	public List<PlayerModel> getPlayerByClub(ClubModel Club) {
		return initData.get(Club);
	}

}

package com.lzw.springcxf.service.impl;

import java.util.List;

import javax.jws.WebService;

import com.lzw.springcxf.model.ClubModel;
import com.lzw.springcxf.model.PlayerModel;
import com.lzw.springcxf.service.ClubService;
import com.lzw.springcxf.service.HandleService;

@WebService(endpointInterface="com.lzw.springcxf.service.HandleService", serviceName="handleServiceTest")
public class HandleServiceImpl implements HandleService {
    
	private ClubService clubService;
	
	public void setClubService(ClubService clubService) {
		this.clubService = clubService;
	}

	@Override
	public String sayName(String name) {
		return "本次西班牙国家德比的最佳球员是:" + name;
	}

	@Override
	public List<PlayerModel> getPlayerByClub(ClubModel Club) {
		return clubService.getPlayerByClub(Club);
	}

}

5:配置文件

(1)applicationContext.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:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:jaxws="http://cxf.apache.org/jaxws"
	xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
       http://cxf.apache.org/jaxws 
	   http://cxf.apache.org/schemas/jaxws.xsd"
	default-lazy-init="true">
     
    <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="clubService" class="com.lzw.springcxf.service.impl.ClubServiceImpl">
	</bean>
	
	<bean id="handleService" class="com.lzw.springcxf.service.impl.HandleServiceImpl">
		<property name="clubService">
			<ref bean="clubService"/>
		</property>
	</bean>
    
    <jaxws:endpoint 
    	implementor="#handleService" 
    	address="/cxf">
    </jaxws:endpoint>
</beans>
(2)web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 
		xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
		id="WebApp_ID" version="3.0">
  <display-name>Spring-Cxf-Demo</display-name>
  
  <!--定义Spring的配置的位置,可以定义多个配置文件,可以使用通配符。 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/applicationContext.xml</param-value>
	</context-param>
	
    <!--设置一起动当前的Web应用,就加载Spring,让Spring管理Bean -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
	<servlet>
    	<servlet-name>cxf</servlet-name>
    	<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    </servlet>
	
	<servlet-mapping>
    	<servlet-name>cxf</servlet-name>
    	<url-pattern>/lzw/*</url-pattern>
	</servlet-mapping>
	
</web-app>


你可能感兴趣的:(Apache Cxf WebService整合Spring(1))