WebService之CXF与Spring的整合
发布时间:2020-12-16 23:22:19 所属栏目:安全 来源:网络整理
导读:首先准备下载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
首先准备下载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整合的例子: 首先准备一个实体类Student: 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,数显服务列表: 如何在使用WebService服务已在上一篇介绍了使用wsimport命令来导出java类。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |