From 1df79bc940d62e9e2ebd1ca653e4caf2ab884c35 Mon Sep 17 00:00:00 2001 From: "xueli.xue" Date: Thu, 3 Mar 2016 16:17:12 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E8=B0=83=E5=BA=A6=E9=80=9A?= =?UTF-8?q?=E8=AE=AF=EF=BC=8C=E6=96=B0=E5=A2=9EJetty=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + xxl-job-admin/.gitignore | 3 +- xxl-job-client-demo/.gitignore | 1 + xxl-job-client/.gitignore | 2 +- .../netcom/jetty/XxlJobJettyServer.java | 55 +++++++++++++++++++ .../jetty/XxlJobJettyServerHandler.java | 43 +++++++++++++++ 6 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 xxl-job-client/src/main/java/com/xxl/job/client/netcom/jetty/XxlJobJettyServer.java create mode 100644 xxl-job-client/src/main/java/com/xxl/job/client/netcom/jetty/XxlJobJettyServerHandler.java diff --git a/.gitignore b/.gitignore index 0c2b833e..4c034ebd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /.settings/ /.project +/xxl-job.iml diff --git a/xxl-job-admin/.gitignore b/xxl-job-admin/.gitignore index e59a178d..f302498c 100644 --- a/xxl-job-admin/.gitignore +++ b/xxl-job-admin/.gitignore @@ -1,6 +1,5 @@ /target/ /.settings/ -/target/ /.classpath /.project -/target/ +/xxl-job-admin.iml \ No newline at end of file diff --git a/xxl-job-client-demo/.gitignore b/xxl-job-client-demo/.gitignore index d98981cc..d5cf4a3e 100644 --- a/xxl-job-client-demo/.gitignore +++ b/xxl-job-client-demo/.gitignore @@ -2,3 +2,4 @@ /.classpath /.project /.settings/ +/xxl-job-client-demo.iml diff --git a/xxl-job-client/.gitignore b/xxl-job-client/.gitignore index 779f1ece..5c6b4658 100644 --- a/xxl-job-client/.gitignore +++ b/xxl-job-client/.gitignore @@ -2,4 +2,4 @@ /.classpath /.project /.settings/ -/target/ +/xxl-job-client.iml diff --git a/xxl-job-client/src/main/java/com/xxl/job/client/netcom/jetty/XxlJobJettyServer.java b/xxl-job-client/src/main/java/com/xxl/job/client/netcom/jetty/XxlJobJettyServer.java new file mode 100644 index 00000000..29756b24 --- /dev/null +++ b/xxl-job-client/src/main/java/com/xxl/job/client/netcom/jetty/XxlJobJettyServer.java @@ -0,0 +1,55 @@ +package com.xxl.job.client.netcom.jetty; + +import org.eclipse.jetty.server.Connector; +import org.eclipse.jetty.server.Handler; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.handler.HandlerCollection; +import org.eclipse.jetty.server.nio.SelectChannelConnector; +import org.eclipse.jetty.util.thread.ExecutorThreadPool; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Created by xuxueli on 2016/3/2 21:14. + */ +public class XxlJobJettyServer { + private static final Logger logger = LoggerFactory.getLogger(XxlJobJettyServer.class); + + private int port = 9999; + public void setPort(int port) { + this.port = port; + } + + public void start() throws Exception { + + new Thread(new Runnable() { + @Override + public void run() { + Server server = new Server(); + server.setThreadPool(new ExecutorThreadPool(200, 200, 30000)); // 非阻塞 + + // connector + SelectChannelConnector connector = new SelectChannelConnector(); + connector.setPort(port); + connector.setMaxIdleTime(30000); + server.setConnectors(new Connector[] { connector }); + + // handler + HandlerCollection handlerc =new HandlerCollection(); + handlerc.setHandlers(new Handler[]{new XxlJobJettyServerHandler()}); + server.setHandler(handlerc); + + try { + server.start(); + logger.info(">>>>>>>>>>>> xxl-job jetty server start success at port:{}.", port); + server.join(); // block until server ready + logger.info(">>>>>>>>>>>> xxl-job jetty server join success at port:{}.", port); + } catch (Exception e) { + e.printStackTrace(); + } + } + }).start(); + + } + +} diff --git a/xxl-job-client/src/main/java/com/xxl/job/client/netcom/jetty/XxlJobJettyServerHandler.java b/xxl-job-client/src/main/java/com/xxl/job/client/netcom/jetty/XxlJobJettyServerHandler.java new file mode 100644 index 00000000..82bc48a9 --- /dev/null +++ b/xxl-job-client/src/main/java/com/xxl/job/client/netcom/jetty/XxlJobJettyServerHandler.java @@ -0,0 +1,43 @@ +package com.xxl.job.client.netcom.jetty; + +import com.xxl.job.client.handler.HandlerRepository; +import org.eclipse.jetty.server.Request; +import org.eclipse.jetty.server.handler.AbstractHandler; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +/** + * Created by xuxueli on 2016/3/2 21:23. + */ +public class XxlJobJettyServerHandler extends AbstractHandler { + + @Override + public void handle(String s, Request baseRequest, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException, ServletException { + + httpServletRequest.setCharacterEncoding("UTF-8"); + httpServletResponse.setCharacterEncoding("UTF-8"); + + Map _param = new HashMap(); + if (httpServletRequest.getParameterMap()!=null && httpServletRequest.getParameterMap().size()>0) { + for (Object paramKey : httpServletRequest.getParameterMap().keySet()) { + if (paramKey!=null) { + String paramKeyStr = paramKey.toString(); + _param.put(paramKeyStr, httpServletRequest.getParameter(paramKeyStr)); + } + } + } + + String resp = HandlerRepository.pushHandleQueue(_param); + + httpServletResponse.setContentType("text/html;charset=utf-8"); + httpServletResponse.setStatus(HttpServletResponse.SC_OK); + baseRequest.setHandled(true); + httpServletResponse.getWriter().println(resp); + } + +}