Servlet Embeded Container (Jetty6.0)

这段代码几百年前就已经写了,可一直都没拿出来(给忘了),OK,今就拿出来给各位做参考啊,没准什么时候你也会需要 Jetty Embeded Container 

package net.hupoo;

import java.io.IOException;
import java.util.Map;

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

import net.hupoo.util.HSXBGlobals;
import net.hupoo.util.IdentityUtil;
import net.hupoo.xmpp.WebClientDataForm;
import net.hupoo.xmpp.WebClientMetadata;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.servlet.ServletHandler;

import edu.emory.mathcs.backport.java.util.concurrent.BlockingQueue;

/**
 *
 * Embeded servlet container for jetty 6.0
 *
 * @author <a href="zhuaming@gmail.com">Ben </a>
 *
 */

public class EmbededContainer implements Runnable
{
 private static Log log = LogFactory.getLog(EmbededContainer.class);
 private static int port = 80;
 private static Map kvMap;
 private static Map aiMap;
 private static BlockingQueue kvQueue;
    
 static{ 
  HSXBGlobals.setHomeDirectory(System.getProperty("user.dir"));  
  port = Integer.parseInt(HSXBGlobals.getXMLProperty("httpServerPort"));
 }
 
    public EmbededContainer(Map keepAliveMap, BlockingQueue keepAliveQueue, Map agentInviteMap){
     this.kvMap = keepAliveMap;
     this.kvQueue = keepAliveQueue;
     this.aiMap = agentInviteMap;
    }
   
 public void run()
 {
  try{
   Server server = new Server();
         Connector connector=new SelectChannelConnector();
         connector.setPort(port);
         server.setConnectors(new Connector[]{connector});
        
         ServletHandler handler=new ServletHandler(); 
         server.setHandler(handler);
        
         handler.addServletWithMapping("net.hupoo.EmbededContainer$KeepAliveServlet", "/webclient/keepalive");
         handler.addServletWithMapping("net.hupoo.EmbededContainer$StartTalkServlet", "/webclient/starttalk");
         handler.addServletWithMapping("net.hupoo.EmbededContainer$StopTalkServlet", "/webclient/stoptalk");
         handler.addServletWithMapping("net.hupoo.EmbededContainer$AssignCidServlet", "/webclient/assigncid");

         server.start();
         server.join();
        }catch(Exception e){
         log.error(e);
        }
 }
 
 private static String handleKeepAlive(WebClientMetadata metadata){ 
  if (!kvMap.containsKey(metadata.getCid())) {
   WebClientDataForm wcDataForm = new WebClientDataForm();
   wcDataForm.setWebClientMetadata(metadata);
   wcDataForm.setStatus(WebClientDataForm.WebStatus.WEB_ONLINE);
   kvQueue.offer(wcDataForm); 
  }
  kvMap.put(metadata.getCid(), metadata);

  if (aiMap.containsKey(metadata.getCid())){    
   aiMap.remove(metadata.getCid());
   return metadata.getCid();
  }
  return "OK";
 }
 
 private static String handleStartTalk(WebClientMetadata metadata){
  WebClientDataForm wcDataForm = new WebClientDataForm();
  wcDataForm.setWebClientMetadata(metadata);
  wcDataForm.setStatus(WebClientDataForm.WebStatus.WEB_TALKING);
  kvQueue.offer(wcDataForm);
  return "OK";
 }
 
 private static String handleStopTalk(WebClientMetadata metadata){
  WebClientDataForm wcDataForm = new WebClientDataForm();
  wcDataForm.setWebClientMetadata(metadata);
  wcDataForm.setStatus(WebClientDataForm.WebStatus.WEB_ONLINE); 
  kvQueue.offer(wcDataForm);
  return "OK";
 }
 
 private static String handleAssignCid(){
  return String.valueOf(IdentityUtil.getIdentity()); 
 }
 
 /* ------------------------------------------------------------ */
    public static class KeepAliveServlet extends HttpServlet
    {
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {
            doGet(request, response);
        }
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {
   log.info("KeepAliveServlet ..");
   
   WebClientMetadata metadata = new WebClientMetadata();  
   metadata.setCid(request.getParameter("cid"));
   metadata.setWorkgroupId(request.getParameter("workgroupid"));
   metadata.setIp(request.getRemoteHost());
   metadata.setDateTime(System.currentTimeMillis());
   metadata.setTitle(request.getParameter("title"));
   metadata.setLink(request.getParameter("link"));

    
            response.setContentType("text/html");
            response.setStatus(HttpServletResponse.SC_OK);
            response.getWriter().println(handleKeepAlive(metadata)); 
        }
    }
   
 /* ------------------------------------------------------------ */
    public static class StartTalkServlet extends HttpServlet
    {   
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
   doGet(request, response);
  }
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
   log.info("StartTalkServlet");
   
   WebClientMetadata metadata = new WebClientMetadata();  
   metadata.setCid(request.getParameter("cid"));
   metadata.setWorkgroupId(request.getParameter("workgroupid"));
   metadata.setIp(request.getRemoteHost());
   metadata.setDateTime(System.currentTimeMillis());

   response.setContentType("text/html");
            response.setStatus(HttpServletResponse.SC_OK);
            response.getWriter().println(handleStartTalk(metadata)); 
  }
    }
   
 /* ------------------------------------------------------------ */
    public static class StopTalkServlet extends HttpServlet
    {
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
   doGet(request, response);
  }
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
   log.info("StopTalkServlet");
   
   WebClientMetadata metadata = new WebClientMetadata();  
   metadata.setCid(request.getParameter("cid"));
   metadata.setWorkgroupId(request.getParameter("workgroupid"));
   metadata.setIp(request.getRemoteHost());
   metadata.setDateTime(System.currentTimeMillis());
   
   response.setContentType("text/html");
            response.setStatus(HttpServletResponse.SC_OK);
            response.getWriter().println(handleStopTalk(metadata)); 
  }
    }
   
 /* ------------------------------------------------------------ */
    public static class AssignCidServlet extends HttpServlet
    {
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
   doGet(request, response);
  }
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
   log.info("AssignCidServlet");
   
   response.setContentType("text/html");
            response.setStatus(HttpServletResponse.SC_OK);
            response.getWriter().println(handleAssignCid());     
  }  
    }
}

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值