前面有篇文章(1,2)介绍了发布CXF webservice的方法,在这篇文章中并没有启动web服务,笔者也提出了自己的一些疑问与思考,接下来的文章是上一篇文章疑问的解答,这里将通过servlet的方式来发布webservice

1.编写服务发布servlet-WebServiceServlet

--因为CXF提供的Demo以及网上大多例子都是和spring框架集成的,这里我们没有用spring,而是一个纯粹的cxf环境,让我们的servlet继承自CXFNoSpringSevlet--这个名字太直接了,呵呵

package com.flyfox.servlet;

 

import javax.servlet.ServletConfig;

import javax.xml.ws.Endpoint;

 

import org.apache.cxf.transport.servlet.CXFNonSpringServlet;

 

import com.flyfox.service.HelloWorldService;

 

public class WebServiceServlet extends CXFNonSpringServlet{

    private static final long serialVersionUID = -5314312869027558456L;

 

       @Override

       protected void loadBus(ServletConfig sc) {

              // TODO Auto-generated method stub

              super.loadBus(sc);

              System.out.println("start servlet........");

              Endpoint.publish("/helloWorld", new HelloWorldService());

       } 

 

}

2.复写loadBus类

在这个方法当中把我们要对外提供的服务配置在里面,比如我们的服务名称为helloWorldService--注意这个方法只在第一次访问时才被触发,也就是我们那行打印语句只执行一遍

3.配置WebServiceServlet

在web.xml中对我们的servlet进行配置,这里为了统一管理所有的webservice请求,我们将webservice统一放在/webservice/路径下(相对)

    <servlet>

       <servlet-name>webservice</servlet-name>       <servlet-class>com.flyfox.servlet.WebServiceServlet</servlet-class>

    </servlet>

    <servlet-mapping>

       <servlet-name>webservice</servlet-name>

       <url-pattern>/webservice/*</url-pattern>

    </servlet-mapping>

4.启动tomcat服务器通过http://localhost:8080/CXF/webservice/helloWorldService?wsdl访问webservice是不是看到和第一节同样的东东了

 

转自:http://www.oschina.net/question/54100_26066

没有登录不能评论