微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WebService之CXF与Spring的整合

首先准备下载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类

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐