Spring+ cxf做服务

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

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

首先需要新建一个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")
@WebService
public class UserServiceImpl implements IUserService {

@Override
public 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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值