Spring+ cxf做服务

来源:互联网 发布:超市美工基础知识 编辑:程序博客网 时间:2024/05/22 10:56

介绍
个人觉的这已经是最简单的了,不费脑,好记。一步一步来,就实现了

工程环境所依赖的各软件的版本

首先需要新建一个maven工程,工程运行环境为:

java:jdk1.8.0_92

tomcat:apache-tomcat-8.0.35

cxf:cxf-3.1.5

操作系统:win7

一、动不动咱先来个javabean压压惊

package com.zkrj.wl.health.controller.webservice.server;public class User {    private String name;    private String age;    private String sex;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getAge() {        return age;    }    public void setAge(String age) {        this.age = age;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    @Override    public String toString() {        return "用户 [用户姓名:=" + name + ", 用户年龄=" + age + ", 用户性别=" + sex + "]";    }}

二、首先先导入cxf的包,spring这里不做解释

<properties><!-- cxf -->        <cxf.version>3.1.5</cxf.version><!-- 添加cxf支持  --></properties>
<dependency>            <groupId>org.apache.cxf</groupId>            <artifactId>cxf-core</artifactId>            <version>${cxf.version}</version>        </dependency>        <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>

三、紧接着,咱按着套路走,配置web.xml

      <!--cxf核心控制器  -->    <servlet>        <servlet-name>CXFServlet</servlet-name>        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>    </servlet>    <servlet-mapping>         <servlet-name>CXFServlet</servlet-name>         <url-pattern>/webservice/*</url-pattern>      </servlet-mapping>

四、java接口

package com.zkrj.wl.health.controller.webservice.server;import javax.jws.WebParam;import javax.jws.WebService;import javax.jws.soap.SOAPBinding;import javax.jws.soap.SOAPBinding.Style;@WebService@SOAPBinding(style = Style.RPC)public interface IUserService {public User findAll(@WebParam(name="arg0") User user);}package com.zkrj.wl.health.controller.webservice.server;import javax.jws.WebService;import org.springframework.stereotype.Component;

五、实现类

@Component("helloWorld")@WebServicepublic class UserServiceImpl implements IUserService {@Overridepublic User findAll(User user) {System.out.println(user.toString());user.setAge("12");return user;}}

六、applicationContext.xml配置

<!-- 利用Spring管理实现类webservice-->    <context:component-scan base-package="com.zkrj.wl.health.controller.webservice.server" />    <!-- cxf服务端 -->    <import resource="classpath:META-INF/cxf/cxf.xml"/>    <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>    <!-- 暴露webservice服务  -->    <!-- implementor对应实现类上的注解   @Component("helloWorld"),address的值是暴露的服务-->    <jaxws:endpoint        implementor="#helloWorld"        address="IUserService">      </jaxws:endpoint>

七、以上完成,启动tomcat即可。
wsdl地址:http://192.168.1.108:8080/health/webservice/IUserService?wsdl
下面便是生成的wsdl

<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://server.webservice.controller.health.wl.zkrj.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="UserServiceImplService" targetNamespace="http://server.webservice.controller.health.wl.zkrj.com/"><wsdl:types><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://server.webservice.controller.health.wl.zkrj.com/" version="1.0"><xs:complexType name="user"><xs:sequence><xs:element minOccurs="0" name="age" type="xs:string"/><xs:element minOccurs="0" name="name" type="xs:string"/><xs:element minOccurs="0" name="sex" type="xs:string"/></xs:sequence></xs:complexType></xs:schema></wsdl:types><wsdl:message name="findAll"><wsdl:part name="arg0" type="tns:user"></wsdl:part></wsdl:message><wsdl:message name="findAllResponse"><wsdl:part name="return" type="tns:user"></wsdl:part></wsdl:message><wsdl:portType name="IUserService"><wsdl:operation name="findAll"><wsdl:input message="tns:findAll" name="findAll"></wsdl:input><wsdl:output message="tns:findAllResponse" name="findAllResponse"></wsdl:output></wsdl:operation></wsdl:portType><wsdl:binding name="UserServiceImplServiceSoapBinding" type="tns:IUserService"><soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/><wsdl:operation name="findAll"><soap:operation soapAction="" style="rpc"/><wsdl:input name="findAll"><soap:body namespace="http://server.webservice.controller.health.wl.zkrj.com/" use="literal"/></wsdl:input><wsdl:output name="findAllResponse"><soap:body namespace="http://server.webservice.controller.health.wl.zkrj.com/" use="literal"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="UserServiceImplService"><wsdl:port binding="tns:UserServiceImplServiceSoapBinding" name="UserServiceImplPort"><soap:address location="http://192.168.1.108:8080/health/webservice/IUserService"/></wsdl:port></wsdl:service></wsdl:definitions>

八、客户端实现
请参考:
http://blog.csdn.net/qq_35123802/article/details/77247145

原创粉丝点击