可基于CXFNonSpringServlet来实现
package com.cxfnospring.test;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.frontend.ServerFactoryBean;
import org.apache.cxf.transport.servlet.CXFNonSpringServlet;
public class CXFNonSpringServletImpl extends CXFNonSpringServlet {
private static final String SERVICE_SUFFIX = "";// "Facade";
private static final long serialVersionUID = 8262880864551976903L;
@Override
public void loadBus(ServletConfig servletConfig) throws ServletException {
super.loadBus(servletConfig);
Bus bus = getBus();
BusFactory.setDefaultBus(bus);
HelloWorldImpl helloworldImpl = new HelloWorldImpl();
ServerFactoryBean svrFactory = new ServerFactoryBean();
svrFactory.setServiceClass(HelloWorld.class);
svrFactory.setAddress("/HelloWorld");
svrFactory.setServiceBean(helloworldImpl);
// svrFactory.getServiceFactory().setDataBinding(new
// AegisDatabinding());
svrFactory.create();
}
}
要发布的HelloWorld是CXF上自带的列子:
package com.cxfnospring.test;
public interface HelloWorld {
String sayHi(String text);
}
实现:
package com.cxfnospring.test;
public class HelloWorldImpl implements HelloWorld {
public String sayHi(String text) {
return "Hello " + text;
}
}
然后修改Web.xml
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>
com.cxfnospring.test.CXFNonSpringServletImpl
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
在Tomcat Weblogic Jboss 中均测试通过