Spring+CXF整合来管理webservice

来源:互联网 发布:centos 6.4 登陆 编辑:程序博客网 时间:2024/06/05 15:20
实现步骤:

 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"));}@Overridepublic Student getStudent(int num) {return list.get(num);}@Overridepublic 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());}



0 0
原创粉丝点击