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