疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

三个步骤搞定CXF集成Servlet发布WEB服务


 

 
 
步骤很简单:
    1.在web.xml文件中,配置一个CXFServlet,并且初始化Spring
    2.通过Spring的配置文件配置WEB服务
    3.编写对应的服务接口和服务实现
 
 
1.配置web.xml
1.1.初始化Spring
<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:/beans.xml</param-value>
</context-param>
<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
 
 
 
1.2.配置CXF
<servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup> 
</servlet>
 
<servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>
 
 
 
2.通过Spring的配置文件配置WEB服务
<?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:jaxws="http://cxf.apache.org/jaxws"
        xsi:schemaLocation="
                http://www.springframework.org/schema/beans 
                        http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
                http://cxf.apache.org/jaxws 
                        http://cxf.apache.org/schemas/jaxws.xsd">
 
        <import resource="classpath:META-INF/cxf/cxf.xml" />
 
   <!-- 发布WEB服务 -->
        <jaxws:endpoint id="helloWorld"
                implementor="org.fkjava.ws.first.impl.HelloWorldImpl" address="/HelloWorld" />
</beans>
 
 
3.编写对应的服务接口和服务实现
接口
package org.fkjava.ws.first;
 
import javax.jws.WebService;
 
@WebService(targetNamespace="http://ws.fkjava.org")
public interface HelloWorld {
 
        String sayHi(String name);
}
 
 
 
实现类
package org.fkjava.ws.first.impl;
 
import javax.jws.WebService;
 
import org.fkjava.ws.first.HelloWorld;
 
public class HelloWorldImpl implements HelloWorld {
 
        @Override
        public String sayHi(String name) {
                System.out.println("服务端sayHi方法被调用");
                return "Hello: " + name;
        }
}
 
 
 
还可以在哪些地方进行改进?
    1.在implementor="org.fkjava.ws.first.impl.HelloWorldImpl"的引号里面,可以用#beanId的方式引用其他的bean,可以不写类的全名
    2.注解@WebService(targetNamespace="http://ws.fkjava.org")不一定是必须的,只是通过此注解可以自定义命名空间之类的
 
写好以后,发布到tomcat里面,即可访问服务,下面假定发布的contextPath为/fkjava
    1.服务列表:http://127.0.0.1:8080/fkjava/services,可以显示当前服务器中,有哪些服务暴露了出来。
    2.WSDL是服务描述器,上面例子的WSDL位置:http://127.0.0.1:8080/fkjava/services/HelloWorld
 
【阅读原文】