jetty server -- embedded environment use

The jetty server is a very good java web application server. It supports the java jsp and servlet standards. It is as popular as tomcat. In addition, jetty is lighter and allows jetty to be embedded in the program. In some scenarios, it is very it works. Using the built-in jetty server in

the jetty embedded environment


package com.gbcom.frame.jetty.demo;


import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
import org.eclipse.jetty.server.handler.DefaultHandler;
import org.eclipse.jetty.server.handler.HandlerCollection;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.util.thread.QueuedThreadPool;

/**
 * Create server:
 * Start the service and access it through a browser: http://localhost:8888/index and http://localhost:8888/hello
 *
 *
 * mvn reference: 2.0. Add dependencies

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty.aggregate</groupId>
      <artifactId>jetty-all</artifactId>
      <version>7.6.9.v20130131</version>
    </dependency>

If you use jsp in your application, you need to add jetty-jsp dependency in jetty-all and aggregate jetty-jsp module.

 * @author SYZ
 * @date 2016-2-23 09:54:01 AM
 * @version 1.0.0
 * @see com.gbcom.frame.jetty.demo.EmbedJettyServer
 */
public class EmbedJettyServer {

  public static void main(String[] args) throws Exception {
    // create server
    Server server = new Server();

    // add ThreadPool
    QueuedThreadPool queuedThreadPool = new QueuedThreadPool();
    queuedThreadPool.setName("queuedTreadPool");
    queuedThreadPool.setMinThreads(10);
    queuedThreadPool.setMaxThreads(200);

    server.setThreadPool(queuedThreadPool);

    // add Connector
    SelectChannelConnector connector = new SelectChannelConnector();
    connector.setPort(8888);
    connector.setAcceptors(4);
    connector.setMaxBuffers(2048);
    connector.setMaxIdleTime(10000);

    server.addConnector(connector);

    // add handler
    ContextHandlerCollection context = new ContextHandlerCollection();
    ContextHandler contextHandler = context.addContext("/", "/");
    contextHandler.setHandler(new DispatchHandler());

    Handler defaults = new DefaultHandler();

    HandlerCollection collection = new HandlerCollection();
    collection.setHandlers(new Handler[] { context, defaults });

    server.setHandler(collection);

    // start the service
    server.start();
    while (server.isStarted()) {
      System.out.println("server starting...");
      break;
    }
    System.out.println("server stared...");
    System.out.println("ContextHandlerCollectio.getServer() = "
        + context.getServer().hashCode());
    System.out.println("Server:" + server.hashCode());
    server.join();
  }
}



Dispatcher: DispatchHandler
package com.gbcom.frame.jetty.demo;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
/**
 * Write the dispatch handler class DispatchHandler
 *
 * @author SYZ
 * @date 2016-2-23 09:54:34 AM
 * @version 1.0.0
 * @see com.gbcom.frame.jetty.demo.DispatchHandler
 */
public class DispatchHandler extends AbstractHandler {

  public void handle(String target, Request baseRequest,
      HttpServletRequest request, HttpServletResponse response)
      throws IOException, ServletException {

    /**
     * This will be distributed to different Handlers for processing according to different requests
     */
    if (target.equals("/index")) {
      new IndexHandler().handle(target, baseRequest, request, response);
    } else {
      new HelloHandler().handle(target, baseRequest, request, response);
    }
  }
}


business processing
package com.gbcom.frame.jetty.demo;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
/**
 * Write the corresponding Handler (IndexHandler and HelloHandler)
 *
 * @author SYZ
 * @date 2016-2-23 09:54:45 AM
 * @version 1.0.0
 * @see com.gbcom.frame.jetty.demo.IndexHandler
 */
public class IndexHandler extends AbstractHandler {

	  @Override
	  public void handle(String target, Request baseRequest,
	      HttpServletRequest request, HttpServletResponse response)
	      throws IOException, ServletException {

	    response.setCharacterEncoding("UTF-8");
	    response.setContentType("text/html;charset=UTF-8");

	    PrintWriter out = response.getWriter();
	    out.write("<h3>Hello World Jetty!</h3>");
	    out.write(Calendar.getInstance().getTime().toString());
	    out.flush();
	    out.close();
	    
	    System.out.println("process http success!!!!");
	  }


	}


package com.gbcom.frame.jetty.demo;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
/**
 * Write the corresponding Handler (IndexHandler and HelloHandler)
 * @author SYZ
 * @date 2016-2-23 09:54:55 AM
 * @version 1.0.0
 * @see com.gbcom.frame.jetty.demo.HelloHandler
 */
public class HelloHandler extends AbstractHandler {

	  public void handle(String target, Request baseRequest,
	      HttpServletRequest request, HttpServletResponse response)
	      throws IOException, ServletException {

	    response.setContentType("text/html;charset=UTF-8");
	    PrintWriter out = response.getWriter();
	    out.write("<h3>This is a HelloHandler and contextPath is '/hello'.</h3>");
	    out.flush();
	    out.close();
	  }
	}



Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326582502&siteId=291194637