| 1 15 16 package com.jdon.bussinessproxy.remote.http; 17 18 import java.io.IOException ; 19 import java.io.ObjectInputStream ; 20 import java.io.ObjectOutputStream ; 21 import java.io.OutputStream ; 22 import java.io.PrintWriter ; 23 import java.util.ArrayList ; 24 import java.util.Collection ; 25 26 import javax.servlet.ServletContext ; 27 import javax.servlet.ServletException ; 28 import javax.servlet.http.HttpServlet ; 29 import javax.servlet.http.HttpServletRequest ; 30 import javax.servlet.http.HttpServletResponse ; 31 import javax.servlet.http.HttpSession ; 32 33 import com.jdon.bussinessproxy.TargetMetaDef; 34 import com.jdon.bussinessproxy.meta.MethodMetaArgs; 35 import com.jdon.container.ContainerWrapper; 36 import com.jdon.container.config.app.AppConfigureCollection; 37 import com.jdon.container.finder.ComponentKeys; 38 import com.jdon.container.finder.ServletContainerFinder; 39 import com.jdon.container.startup.ContainerSetupScript; 40 import com.jdon.controller.service.Service; 41 import com.jdon.controller.service.ServiceFacade; 42 import com.jdon.controller.service.ServiceFactory; 43 44 import com.jdon.util.Debug; 45 import com.jdon.util.StringUtil; 46 47 59 public class InvokerServlet extends HttpServlet { 60 61 public final static String module = InvokerServlet.class.getName(); 62 private ContainerSetupScript css = new ContainerSetupScript(); 63 private final static ServletContainerFinder scf = new ServletContainerFinder(); 64 70 public void init() throws ServletException { 71 ServletContext sc = this.getServletContext(); 72 String configList = this.getServletConfig().getInitParameter("configList"); 73 String [] configs = StringUtil.split(configList, ","); 74 for(int i = 0 ; i < configs.length; i ++){ 75 Debug.logVerbose("[JdonFramework] locate a configuration in web.xml :" + configs[i], module); 76 css.prepare(configs[i], sc); 77 } 78 } 79 80 public void destroy() { 81 css.destroyed(this.getServletContext()); 82 } 83 84 protected void doGet(HttpServletRequest request, 85 HttpServletResponse response) throws ServletException , 86 IOException { 87 response.setContentType("text/html"); 88 PrintWriter out = new PrintWriter (response.getOutputStream()); 89 out.println("<html>"); 90 out.println("<head><title>InvokerServlet</title></head>"); 91 out.println("<body> "); 92 out.println(request.getRemoteUser()); 93 out.println(" Welcome to login in !!</body></html>"); 94 out.close(); 95 } 96 97 protected void doPost(HttpServletRequest request, 98 HttpServletResponse response) throws ServletException , 99 IOException { 100 if (request.getParameter("login") != null) { 101 doGet(request, response); 103 return; 104 } 105 HttpRequest httpRequest = getHttpServiceRequest(request); 107 if (httpRequest == null) return; 108 HttpResponse httpResponse = null; 109 try { 110 TargetMetaDef targetMetaDef = httpRequest.getTargetMetaDef(); 111 String p_methodName = httpRequest.getMethodName(); 112 Class [] paramTypes = httpRequest.getParamTypes(); 113 Object [] p_args = httpRequest.getArgs(); 114 115 ServiceFacade serviceFacade = new ServiceFacade(); 116 Service service = serviceFacade.getService(request); 117 118 MethodMetaArgs methodMetaArgs = new MethodMetaArgs(p_methodName, 120 paramTypes, p_args); 121 Object object = service.execute(targetMetaDef, 122 methodMetaArgs, 123 request); 124 httpResponse = new HttpResponse(object); 125 } catch (Exception e) { 126 Debug.logError(e, module); 127 httpResponse = new HttpResponse(new Throwable (e)); 128 } catch (Throwable te) { 129 Debug.logError(te, module); 130 httpResponse = new HttpResponse(te); 131 } 132 133 HttpSession session = request.getSession(true); 135 response.addHeader("jsessionid", session.getId()); 136 writeHttpServiceResponse(response, httpResponse); 137 } 138 139 142 private void writeHttpServiceResponse(HttpServletResponse response, 143 HttpResponse httpResponse) throws 144 IOException { 145 OutputStream outputStream = response.getOutputStream(); 146 ObjectOutputStream oos = new ObjectOutputStream (outputStream); 147 oos.writeObject(httpResponse); 148 oos.close(); 149 } 150 151 154 private HttpRequest getHttpServiceRequest(HttpServletRequest request) throws 155 IOException { 156 HttpRequest httpServiceRequest = null; 157 ObjectInputStream ois = null; 158 try { 159 ois = new ObjectInputStream (request.getInputStream()); 160 httpServiceRequest = (HttpRequest) ois.readObject(); 161 } catch (Exception e) { 162 Debug.logError(e, module); 163 }finally{ 164 if (ois != null) 165 ois.close(); 166 } 167 return httpServiceRequest; 168 } 169 170 } 171 | Popular Tags |