jfinal+cxf

通过servlet发布webservice

public class WebServiceServlet extends CXFNonSpringServlet {
    @Override
    protected void loadBus(ServletConfig servletConfig) {
        super.loadBus(servletConfig);
        createFactoryBean();
    }

    protected void createFactoryBean() {
        Bus bus = this.getBus();
        BusFactory.setDefaultBus(bus);

        //方法一
        //Endpoint.publish("/helloWorldService", new HelloWorldServiceImpl());
        
        //方法二
        JaxWsServerFactoryBean factroy = new JaxWsServerFactoryBean();
        factroy.setBus(bus);
        factroy.setServiceClass(HelloWorldService.class);
        factroy.setAddress("/helloWorldService");
        factroy.setServiceBean(new HelloWorldServiceImpl());
        factroy.create();
    }
}

在web.xml 中添加

<!--CXF -->
<servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>com.Servlet.WebServiceServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/CXFServlet/*</url-pattern>
</servlet-mapping>


在JFinalConfig的configHandler中添加,将/CXFServlet的所有请求转给CXF处理


// CXF 
me.add(new UrlSkipHandler(".*/CXFServlet.*",false));


启动后就可以测试了

/**
 * 测试
 */
public void test() {
    try {
         JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
         factory.setServiceClass(HelloWorldService.class);
         factory.setAddress("http://127.0.0.1/CXFServlet/helloWorldService");
         Object client = factory.create();
         if (client != null) {
             HelloWorldService ws = (HelloWorldService) client;
             //调用
             //....
          }
     } catch (Exception ex) {
         ex.printStackTrace();
     }
}






你可能感兴趣的:(jfinal+cxf)