Spring+CXF整合来管理webservice

    xiaoxiao2022-06-23  65

    实现步骤:

     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()); }

    转载请注明原文地址: https://ju.6miu.com/read-1123154.html

    最新回复(0)