Maven+Spirng+Mybatis+CXF搭建WebService服务

2025-11-10 23:48:56

1、修改pom.xml配置文件

增加以下配置

<properties>

<cxf.version>3.1.1</cxf.version>

</properties>

<!-- CXF -->

<!--cxf-rt-frontend-jaxws支持soap类型服务 -->

<dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-frontend-jaxws</artifactId>

<version>${cxf.version}</version>

</dependency>

<dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-transports-http</artifactId>

<version>${cxf.version}</version>

</dependency>

<dependency>

<groupId>cglib</groupId>

<artifactId>cglib-nodep</artifactId>

<version>2.2</version>

</dependency>

<dependency>

<groupId>org.apache.ws.xmlschema</groupId>

<artifactId>xmlschema-core</artifactId>

<version>2.0</version>

</dependency>

<dependency>

<groupId>org.codehaus.woodstox</groupId>

<artifactId>woodstox-core-asl</artifactId>

<version>4.4.1</version>

</dependency>

<!--用于跨域的jar包 -->

<dependency>

<groupId>com.thetransactioncompany</groupId>

<artifactId>java-property-utils</artifactId>

<version>1.9</version>

</dependency>

<dependency>

<groupId>com.thetransactioncompany</groupId>

<artifactId>cors-filter</artifactId>

<version>1.7</version>

</dependency>

-------------------------------------------------------------------------

以下是完整的pom文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.chinasofti</groupId>

<artifactId>myservice</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>war</packaging>

<properties>

<webVersion>3.1</webVersion>

<!-- spring版本号 -->

<spring.version>4.1.9.RELEASE</spring.version>

<!-- log4j日志文件管理包版本 -->

<slf4j.version>1.6.6</slf4j.version>

<log4j.version>1.2.12</log4j.version>

<!-- junit版本号 -->

<junit.version>4.10</junit.version>

<!-- mybatis版本号 -->

<mybatis.version>3.2.1</mybatis.version>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<cxf.version>3.1.1</cxf.version>

<jackson.version>1.9.13</jackson.version>

</properties>

<dependencies>

<!-- javaee-api包 注意和项目使用的JDK版本对应 -->

<dependency>

<groupId>javax</groupId>

<artifactId>javaee-api</artifactId>

<version>6.0</version>

<scope>provided</scope>

</dependency>

<!-- javaee-web-api包 注意和项目使用的JDK版本对应 -->

<dependency>

<groupId>javax</groupId>

<artifactId>javaee-web-api</artifactId>

<version>6.0</version>

<scope>provided</scope>

</dependency>

<!-- 添加Spring依赖 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-core</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context-support</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aop</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aspects</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-tx</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-web</artifactId>

<version>${spring.version}</version>

</dependency>

<!--单元测试依赖 -->

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>${junit.version}</version>

<scope>test</scope>

</dependency>

<!-- 日志文件管理包 -->

<!-- log start -->

<dependency>

<groupId>log4j</groupId>

<artifactId>log4j</artifactId>

<version>${log4j.version}</version>

</dependency>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-api</artifactId>

<version>${slf4j.version}</version>

</dependency>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

<version>${slf4j.version}</version>

</dependency>

<!-- log end -->

<!--spring单元测试依赖 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-test</artifactId>

<version>${spring.version}</version>

<scope>test</scope>

</dependency>

<!--mybatis依赖 -->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>${mybatis.version}</version>

</dependency>

<!-- mybatis/spring包 -->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

<version>1.2.0</version>

</dependency>

<dependency>

<groupId>com.oracle</groupId>

<artifactId>ojdbc</artifactId>

<version>14</version>

</dependency>

<!-- CXF -->

<!--cxf-rt-frontend-jaxws支持soap类型服务 -->

<dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-frontend-jaxws</artifactId>

<version>${cxf.version}</version>

</dependency>

<dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-transports-http</artifactId>

<version>${cxf.version}</version>

</dependency>

<dependency>

<groupId>cglib</groupId>

<artifactId>cglib-nodep</artifactId>

<version>2.2</version>

</dependency>

<dependency>

<groupId>org.apache.ws.xmlschema</groupId>

<artifactId>xmlschema-core</artifactId>

<version>2.0</version>

</dependency>

<dependency>

<groupId>org.codehaus.woodstox</groupId>

<artifactId>woodstox-core-asl</artifactId>

<version>4.4.1</version>

</dependency>

<!--用于跨域的jar包 -->

<dependency>

<groupId>com.thetransactioncompany</groupId>

<artifactId>java-property-utils</artifactId>

<version>1.9</version>

</dependency>

<dependency>

<groupId>com.thetransactioncompany</groupId>

<artifactId>cors-filter</artifactId>

<version>1.7</version>

</dependency>

<!-- 用于序列化json服务 -->

<dependency>

<groupId>org.codehaus.jackson</groupId>

<artifactId>jackson-jaxrs</artifactId>

<version>${jackson.version}</version>

</dependency>

<!--测试框架 -->

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.9</version>

<scope>test</scope>

</dependency>

</dependencies>

<build>

<plugins>

<plugin>

<artifactId>maven-compiler-plugin</artifactId>

<configuration>

<source>1.8</source>

<target>1.8</target>

</configuration>

</plugin>

</plugins>

</build>

</project>

2、修改service类文件(MemberService)添加webservice注解

import javax.jws.WebService;

import entity.Member;

@WebService

public interface MemberService {

@WebMethod 

String getMemberInfo(@WebParam(name="acount")String name);

}

注:

@WebService 表示该接口是webservice接口

@WebMethod  表示该方法是webservice方法

@WebParam(name="acount")表示接口方法的参数并设置别名,如果不加也可以,但是系统会显示参数名为 init0、init1.。。。 

3、修改实现类 MemberServiceImpl 

import javax.jws.WebService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import dao.MemberDao;

import entity.Member;

@Service

@WebService(serviceName = "memberService", endpointInterface = "service.MemberService")

public class MemberServiceImpl implements MemberService {

@Autowired

MemberDao memberDao;

@Override

public String getMemberInfo(String name) {

return memberDao.getMemberInfo(name).toString();

}

}

添加服务名和接口类的包地址

4、修改web.xml

   <!-- 读取spring配置文件 -->

    <context-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>classpath:spring/application.xml,WEB-INF/applicationContext.xml</param-value>

    </context-param>

<!--增加cxf的配置文件 WEB-INF/applicationContext.xml-->

<!-- CXF配置 -->

    <servlet>  

        <servlet-name>CXFServlet</servlet-name>  

        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  

        <load-on-startup>1</load-on-startup>  

    </servlet>  

    <servlet-mapping>  

        <servlet-name>CXFServlet</servlet-name>  

        <url-pattern>/webservice/*</url-pattern>  

    </servlet-mapping>

--------------------------------------------------------------------------------

完整的web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

version="3.0">

    <display-name>Archetype Created Web Application</display-name>

    <!-- 读取spring配置文件 -->

    <context-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>classpath:spring/application.xml,WEB-INF/applicationContext.xml</param-value>

    </context-param>

    <!-- Spring字符集过滤器 -->

    <filter>

        <filter-name>SpringEncodingFilter</filter-name>

        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

        <init-param>

            <param-name>encoding</param-name>

            <param-value>UTF-8</param-value>

        </init-param>

        <init-param>

            <param-name>forceEncoding</param-name>

            <param-value>true</param-value>

        </init-param>

    </filter>

    <filter-mapping>

        <filter-name>SpringEncodingFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

    <!-- 解决post乱码 -->  

    <filter>  

        <filter-name>CharacterEncodingFilter</filter-name>  

        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  

        <init-param>  

            <param-name>encoding</param-name>  

            <param-value>utf-8</param-value>  

        </init-param>  

    </filter>  

    <filter-mapping>  

        <filter-name>CharacterEncodingFilter</filter-name>  

        <url-pattern>/*</url-pattern>  

    </filter-mapping>  

    

  <!-- -监听器配置 -->

<!--例:spring监听器 -->

<listener>        <!--用来设定Listener接口 -->

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class><!--定义Listener的类名称 -->

</listener>

<!-- 防止Spring内存溢出监听器 -->

<listener>

<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>

</listener>

<listener>  

   <listener-class>  

       org.springframework.web.context.ContextLoaderListener  

   </listener-class>  

   </listener>  

    <!-- 配置spring提供的上下文载入器监听器,当项目启动时加载spring配置文件,初始化spring工厂 -->

    <listener>

        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

    </listener>

    

    <!-- CXF配置 -->

    <servlet>  

        <servlet-name>CXFServlet</servlet-name>  

        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  

        <load-on-startup>1</load-on-startup>  

    </servlet>  

    <servlet-mapping>  

        <servlet-name>CXFServlet</servlet-name>  

        <url-pattern>/webservice/*</url-pattern>  

    </servlet-mapping>

</web-app>

5、xcf配置文件 放置到与web.xml同级目录  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:p="http://www.springframework.org/schema/p"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc" 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://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd  

        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd  

          http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

<bean id="cxf" class="org.apache.cxf.bus.spring.SpringBus"

destroy-method="shutdown" />

<bean id="MemberServiceImpl"

class="service.MemberServiceImpl" />

<jaxws:server address="/memberService"

serviceClass="service.MemberService">

<jaxws:serviceBean>

<ref bean="MemberServiceImpl" />

</jaxws:serviceBean>

</jaxws:server>

</beans>

需要配置的是黑体字部分

<jaxws:server address="/memberService"

serviceClass="service.MemberService">

其中  /memberService是发布的服务名,可以在这里改名

Maven+Spirng+Mybatis+CXF搭建WebService服务

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢