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包文件:
3:我的项目结构:
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>
- <?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>