Ver Fonte

解决 jetty embedded 问题

hugui há 9 anos atrás
pai
commit
a5f94833f3

+ 65 - 7
lts-admin/src/main/java/com/lts/web/support/H2ConsoleWebServlet.java

@@ -3,27 +3,85 @@ package com.lts.web.support;
 import com.lts.core.constant.Constants;
 import org.h2.server.web.WebServlet;
 
+import javax.servlet.ServletConfig;
 import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * H2 Console 的 servlet
+ *
  * @author Robert HG (254963746@qq.com) on 9/26/15.
  */
 public class H2ConsoleWebServlet extends WebServlet {
 
     @Override
-    public void init() {
+    public void init(ServletConfig config) throws ServletException {
+        ServletConfigFacade servletConfigFacade = new ServletConfigFacade(config);
 
-        ServletContext servletContext = this.getServletConfig().getServletContext();
         String monitorDBPath = AppConfigurer.getProperties("lts.admin.data.path",
                 Constants.USER_HOME) + "/.lts/h2/lts-admin";
         // http://h2database.com/html/features.html#connection_modes
         // http://h2database.com/html/features.html#auto_mixed_mode
-        String url = "jdbc:h2:" + monitorDBPath+";AUTO_SERVER=TRUE";
-        servletContext.setInitParameter("url", url);
-        servletContext.setInitParameter("user", "lts");
-        servletContext.setInitParameter("password", "");
+        String url = "jdbc:h2:" + monitorDBPath + ";AUTO_SERVER=TRUE";
+        servletConfigFacade.setInitParameter("url", url);
+        servletConfigFacade.setInitParameter("user", "lts");
+        servletConfigFacade.setInitParameter("password", "");
+        servletConfigFacade.setInitParameter("webAllowOthers", "true");
 
-        super.init();
+        super.init(servletConfigFacade);
     }
 }
+
+/**
+ * 主要为解决 jetty embedded 的问题
+ */
+class ServletConfigFacade implements ServletConfig {
+
+    private ServletConfig servletConfig;
+
+    private Map<String, String> initParams;
+
+    public ServletConfigFacade(ServletConfig servletConfig) {
+        this.servletConfig = servletConfig;
+        this.initParams = new HashMap<String, String>();
+
+        initParams();
+    }
+
+    private void initParams() {
+        Enumeration<?> en = servletConfig.getInitParameterNames();
+        while (en.hasMoreElements()) {
+            String name = en.nextElement().toString();
+            String value = servletConfig.getInitParameter(name);
+            initParams.put(name, value);
+        }
+    }
+
+    @Override
+    public String getServletName() {
+        return servletConfig.getServletName();
+    }
+
+    @Override
+    public ServletContext getServletContext() {
+        return servletConfig.getServletContext();
+    }
+
+    @Override
+    public String getInitParameter(String name) {
+        return initParams.get(name);
+    }
+
+    @Override
+    public Enumeration<String> getInitParameterNames() {
+        return Collections.enumeration(initParams.keySet());
+    }
+
+    public void setInitParameter(String name, String value) {
+        initParams.put(name, value);
+    }
+}

+ 2 - 0
lts-admin/src/main/java/com/lts/web/support/LtsAdminJobClient.java

@@ -1,6 +1,7 @@
 package com.lts.web.support;
 
 import com.lts.core.commons.utils.StringUtils;
+import com.lts.core.constant.Constants;
 import com.lts.core.domain.Job;
 import com.lts.jobclient.JobClient;
 import com.lts.jobclient.domain.Response;
@@ -27,6 +28,7 @@ public class LtsAdminJobClient implements InitializingBean {
         if (StringUtils.isEmpty(clusterName)) {
             throw new IllegalArgumentException("clusterName in lts-admin.cfg can not be null.");
         }
+        jobClient.setFailStorePath(AppConfigurer.getProperties("lts.admin.data.path", Constants.USER_HOME));
         jobClient.setClusterName(clusterName);
         jobClient.setRegistryAddress(AppConfigurer.getProperties("registryAddress"));
 

+ 1 - 1
lts-startup/lts-startup-admin/src/main/java/com/lts/startup/JettyContainer.java

@@ -39,7 +39,7 @@ public class JettyContainer {
             server.setStopAtShutdown(true);
             server.start();
 
-            System.out.println("LTS-Admin started. http://" + NetUtils.getLocalHost() + ":" + port + "/main.html");
+            System.out.println("LTS-Admin started. http://" + NetUtils.getLocalHost() + ":" + port + "/index.htm");
 
         } catch (Exception e) {
             e.printStackTrace();