首先准备下载apache-cxf-2.4.4,解压之后拷贝lib文件夹的jar包倒进工程。
下面第一个例子没有与Spring整合的例子,用代码发布WebService:
package com.ws.demo2; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; import javax.xml.ws.Endpoint; import org.apache.cxf.frontend.Serverfactorybean; import org.apache.cxf.interceptor.LoggingInInterceptor; import org.apache.cxf.interceptor.LoggingOutInterceptor; import org.apache.cxf.jaxws.JaxWsServerfactorybean; import org.apache.cxf.jaxws.support.JaxWsServicefactorybean; /**JAXWS: Java AND XML WebService 就是我们昨天说支持WSDL SOAP的WS服务 * 特点: 支持注解,支持日志,支持Spring管理 * 但是到目前为止: 我们的服务并没有发布到Tomcat中而且没有交给Spring管理 */ @WebService( name="MyWebService1",// 真正的服务类的名称,portName="MyWebServicePort1",// 端口名称 serviceName="MyWebServiceService1",// 服务名,默认是MyWebService+Service targetNamespace="a.b.c" // 指定解析存储类的包名 ) public class MyWebService { public @WebResult(name="result1") String showName(@WebParam(name="name1") String name){ System.out.println("name:"+name); return "你好:"+name; } /** * 在main方法中发布自己的WebService * @param args */ public static void main(String[] args) { String address="http://127.0.0.1:8888/hello"; //Endpoint.publish(address,new MyWebService()); // JAXWS: Java AND XML WebService 就是我们昨天说支持WSDL SOAP的WS服务 Serverfactorybean factorybean=new JaxWsServerfactorybean(); factorybean.setAddress(address); // 指定端点,服务的实现类 factorybean.setServiceBean(new MyWebService()); //给WS服务配置日志 factorybean.getininterceptors().add(new LoggingInInterceptor()); factorybean.getininterceptors().add(new LoggingOutInterceptor()); factorybean.create(); System.out.println(address+"?wsdl"); } }
下面是CXF与Spring整合的例子:
package com.ws.demo3; public class Student { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
服务接口StudentService:
package com.ws.demo3; import java.util.List; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; @WebService( <span style="white-space:pre"> </span>name="StudentService", // 真正的服务类的名称,<span style="white-space:pre"> </span>portName="StudentServiceSOAP", // 端口名称 <span style="white-space:pre"> </span>serviceName="StudentServiceWS" // 服务名,默认是MyWebService+Service ) public interface StudentService { <span style="white-space:pre"> </span>public void save(@WebParam(name="student") Student student); <span style="white-space:pre"> </span>public @WebResult(name="student") List<Student> getStudentList(); }
实现类StudentServiceImpl:
package com.ws.demo3; import java.util.ArrayList; import java.util.List; public class StudentServiceImpl implements StudentService { //模拟存储数据 List<Student> studentList=new ArrayList<Student>(); public void save(Student student) { // Todo Auto-generated method stub studentList.add(student); } public List<Student> getStudentList() { // Todo Auto-generated method stub return studentList; } }
applicationContext配置与CXF的整合:
<?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:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd "> <!-- 此bean可以提供项目本身调用 --> <bean id="studentService" class="com.ws.demo3.StudentServiceImpl"/> <!-- bean 发布成 WS服务 address: 可以访问此ws服务名称,如果指定了serviceClass:则把注解统一放到接口中,实现类的可以删除 全地址是: http://localhost:8080/ws/student--> <jaxws:server serviceClass="com.ws.demo3.StudentService" address="/student"> <!-- 引用在Spring中已经配置好Bean,那么此bean既可以被本地访问又是WS Bean --> <jaxws:serviceBean> <ref bean="studentService"/> </jaxws:serviceBean> <!-- 配置输入日志 --> <jaxws:inInterceptors> <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/> </jaxws:inInterceptors> <!-- 配置输出日志 --> <jaxws:outInterceptors> <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/> </jaxws:outInterceptors> </jaxws:server> </beans>
启动tomcat,发布该WEB项目,在浏览器的地址栏中输入http://127.0.0.1:8080/ws/ws,数显服务列表:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。