介绍
个人觉的这已经是最简单的了,不费脑,好记。一步一步来,就实现了
工程环境所依赖的各软件的版本
首先需要新建一个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.youkuaiyun.com/qq_35123802/article/details/77247145