1 package jfun.yan.xfire; 2 3 4 import javax.servlet.ServletConfig ; 5 import javax.servlet.ServletException ; 6 7 import jfun.util.ClassLoaderUtils; 8 import jfun.yan.Container; 9 import jfun.yan.web.YanLoader; 10 11 import org.codehaus.xfire.XFire; 12 import org.codehaus.xfire.transport.http.XFireServlet; 13 import org.codehaus.xfire.transport.http.XFireServletController; 14 15 16 20 public class XFireYanServlet 21 extends XFireServlet 22 { 23 private final String default_xfire = "xfire"; 24 private final String default_controller = "xfire.servletController"; 25 private YanLoader loader; 26 private Container yan; 27 private String xfire_name; 28 private String controller_name; 29 private String getXfireName(ServletConfig servletConfig){ 30 return getParamValue(servletConfig, "XFireBeanName", default_xfire); 31 } 32 private String getControllerName(ServletConfig config){ 33 return getParamValue(config, "XFireControllerName", default_controller); 34 } 35 private String getParamValue(ServletConfig config, String key, String def){ 36 String val = config.getInitParameter(key); 37 if((val != null) && (!"".equals(val.trim()))){ 38 return val; 39 } 40 else{ 41 return def; 42 } 43 } 44 public void init(ServletConfig servletConfig) 45 throws ServletException { 46 this.xfire_name = getXfireName(servletConfig); 47 this.controller_name = getControllerName(servletConfig); 48 this.loader = new XFireLoader(xfire_name); 49 50 this.yan = loader.initContainer(ClassLoaderUtils.guessClassLoader(getClass().getClassLoader()), 51 servletConfig.getServletContext()); 52 if(this.yan==null){ 53 throw new IllegalStateException ("Failed to bootstrap Yan."); 54 } 55 super.init(servletConfig); 56 System.out.println("services: " + super.getXFire().getServiceRegistry().getServices()); 57 } 58 59 public XFire createXFire(){ 60 return (XFire)yan.getInstance(this.xfire_name); 61 } 62 public XFireServletController createController(){ 63 return (XFireServletController)yan.getInstance(this.controller_name); 64 } 65 public void destroy() { 66 loader.destroy(getServletContext()); 67 super.destroy(); 68 } 69 } 70 | Popular Tags |