Spring+CXF整合来管理webservice

实现步骤:

 1. 添加cxf.jar 包(集成了Spring.jar、servlet.jar ),spring.jar包 ,servlet.jar 包。

 2. 编写业务类,通过CXF来发布webservice        

 3. 添加一个CXF请求的 Servlet,用来处理webservice的请求 。

过滤的地址例如:/ws/*

 4. 配置Spring的配置文件: applicationContext.xml ,把cxf的bean在spring配置 。     

 5. 在web.xml中配置 CXF的 Servlet , 添加spring的监听 。

 6. 通过wsimport生成本地代理 ,访问webservice 。


下面举个例子,向外暴露StudentInter接口,里面有获取学生和添加学生的方法:


1、引入CXF的jar包,这里把Spring和Servlet相关的去取,因为Spring的我自己加,Servlet的我myEclipse会自动添加。



2、创建暴露出去的接口类(服务类),并添加@webServer注释:

//通过注释更改server的名称,如果不改,也要添加@WebService此注释,不然发布失败
@WebService(serviceName="StudentManager")
public interface StudentInter {
    //获取学生
	public abstract Student getStudent(int num);
   //添加学生
	public abstract void addStudent(Student student);

}

3、实现该接口的类(服务的实现类):

public class StudentManagerImpl implements StudentInter {

	//为了测试添加的数据
	private static List<Student> list = null;
	static {
		list = new ArrayList<Student>();
		list.add(new Student(0, "lmk0"));
		list.add(new Student(1, "lmk1"));
		list.add(new Student(2, "lmk2"));
	}

	
	@Override
	public Student getStudent(int num) {
		return list.get(num);
	}

	
	@Override
	public void addStudent(Student student) {
		list.add(student);
	}

}



4、添加Spring相应的jar包

添加cxf的语言格式:



配置bean:

<!-- CXF的配置:
address:
	地址:http://192.168.114.10:8080/CXF_Server/ws/studentManager
	组成说明:http://192.168.114.10:8080 +CXF_Server( 项目名)+ws(过滤的路径)+/studentManager(自定义部分)。
serviceClass:暴露出去的接口(服务类)。
serviceBean:服务的实现类。
inInterceptors/outInterceptors:有人用到这个服务时候打印的log
 -->
<jaxws:server address="/studentManager" serviceClass="com.lmk.service.inter.StudentInter">
	<jaxws:serviceBean>
		<ref bean="studentManagerImpl" />
	</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>


5、web.xml的配置:

<!-- cxf的Servlet拦截器 -->
	<servlet>
		<servlet-name>cxf</servlet-name>
		<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>cxf</servlet-name>
		<!-- 拦截地址,是wsdl文件地址的组成一部分 -->
		<url-pattern>/ws/*</url-pattern>
	</servlet-mapping>

	<!-- 初始化Spring -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>

6、发布完成后运行tomcat,输入http://localhost:8080/CXF_Server/ws



测试部分(你可以用myEclipse自带的webServer浏览器,这里是用生成本地代理的方式测试):


1、在cmd命令窗口中输入以下代码,生成class字节码:wsimport  ./   http://localhost:8080/CXF_Server/ws/studentManager?wsdl  

2、把字节码打成jar包: jar  cvf jobService.jar  xx(刚才的字节码文件地址)



3、新建项目,把以上jar包放入项目中,编写以下代码,测试:

public static void main(String[] args) {
		//获取服务
		StudentManager sm=new StudentManager();
		//获取服务的实现类
		StudentInter studentInterPort = sm.getStudentInterPort();
		//调用实现的方法
		Student student = studentInterPort.getStudent(0);
		System.out.println(student.getName());
	}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章