/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package ws.apps.webservice;
import javax.jws.WebService;
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.frontend.ServerFactoryBean;
import org.apache.cxf.transport.servlet.CXFNonSpringServlet;
import javax.servlet.ServletConfig;
import ws.framework.ioc.Ioc;
import ws.framework.ioc.loader.annotation.IocBean;
import ws.framework.lang.Strings;
import ws.framework.log.Log;
import ws.framework.log.Logs;
@IocBean
public class WebserviceAct extends CXFNonSpringServlet{
protected final static Log log = Logs.get();
@Override
public void loadBus(ServletConfig sc) {
super.loadBus(sc);
Bus bus = getBus();
bus.getInInterceptors().add(new IpAddressInInterceptor());
BusFactory.setDefaultBus(bus);
Ioc ioc = (Ioc)sc.getServletContext().getAttribute("DEFINEIOC");//Mvcs.ctx().getDefaultIoc();
for (String name : ioc.getNames()) {
try {
Object obj = ioc.get(null, name);
if (!obj.getClass().getPackage().getName().equals("ws.apps.webservice")) {
continue;
}
if (obj.getClass().getAnnotation(WebService.class) == null)
continue;
Class face = Class.forName(obj.getClass().getPackage().getName() + "." + Strings.upperFirst(name));
ServerFactoryBean serverFactoryBean = new ServerFactoryBean();
// 设置服务接口类
serverFactoryBean.setServiceClass(face);
// 服务请求路径
serverFactoryBean.setAddress("/" + name.substring(0, name.indexOf("Service")));
// 设置服务实现类
serverFactoryBean.setServiceBean(obj);
serverFactoryBean.setBindingId("http://schemas.xmlsoap.org/wsdl/soap12/");
serverFactoryBean.create();
} catch (Exception e) {
log.debug(e.getMessage());
}
}
}
}