您的位置:首页 > 编程语言 > Java开发

Web应用中使用CXF不基于Spring的WebService发布

2012-07-17 22:48 501 查看
最近要将一个thrift服务转为提webservices服务,提供给pad应用调用。

但是公司没有使用Spring的习惯,可基于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();

}

}


例子:

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>


maping 到/ws/*

发布到tomcat,ok!

wsdl地址为http://ip:port/project_name/ws/fuctionname?wsdl
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: