加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java.lang.IllegalStateException:没有SessionManager

发布时间:2020-12-15 01:04:13 所属栏目:Java 来源:网络整理
导读:请给我建议如何正确设置Jetty.我正在使用最新版本的jetty(9.0.6.v20130930).我订购了服务器实现具体的servlet,它不起作用! ?我已经和Jetty做了一点工作,没有看到类似的东西. Main.class public static void main(String[] args) throws Exception { Message

请给我建议如何正确设置Jetty.我正在使用最新版本的jetty(9.0.6.v20130930).我订购了服务器实现具体的servlet,它不起作用!
?我已经和Jetty做了一点工作,没有看到类似的东西.

– Main.class

 public static void main(String[] args) throws Exception
    {
        MessageSystem ms = new MessageSystem();
        Frontend frontend = new Frontend(ms);

        (new Thread(frontend)).start();

        Server server = new Server(8080);
        server.setHandler(frontend);

        server.start();
        server.join();

    }

– Frontend.class

public class Frontend extends AbstractHandler implements Runnable,Abonent {
    ... constructor and others methods...

    public void handle(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response)
            throws IOException,ServletException
    {
        setResponseSettings(baseRequest,response);
        PrintWriter out = response.getWriter();

        try {
            int id;
            HttpSession session = request.getSession();
            if( session.isNew()){
                id = setSessionId(session);
                pageContent = "Hello new user! Your id: "+id;
                out.println(new Page().enterName());
            }else{
                id = getSessionId(session);
                pageContent = "Hi! I remember you. You are: " +id;
                out.println(new Page().normalContent());
            }
        }
        catch (IllegalStateException ex){
            System.out.println("Exception!"+ex);
        }
        out.println("

– Сonsole

2013-11-01 04:06:24.273:INFO:oejs.Server:main: jetty-9.0.6.v20130930
2013-11-01 04:06:24.309:INFO:oejs.ServerConnector:main: Started ServerConnector@358e0f79{HTTP/1.1}{0.0.0.0:8080}
Exception!java.lang.IllegalStateException: No SessionManager
Exception!java.lang.IllegalStateException: No SessionManager
最佳答案
你错过了3件事.

> A Context
> A Session ID Manager
> A Session Handler(与关联Session Manager)

Main.java

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.session.HashSessionIdManager;
import org.eclipse.jetty.server.session.HashSessionManager;
import org.eclipse.jetty.server.session.SessionHandler;

public class Main
{
    public static void main(String[] args)
    {
        MyDumpHandler dump = new MyDumpHandler();

        Server server = new Server(8080);

        // Specify the Session ID Manager
        HashSessionIdManager idmanager = new HashSessionIdManager();
        server.setSessionIdManager(idmanager);

        // Sessions are bound to a context.
        ContextHandler context = new ContextHandler("/");
        server.setHandler(context);

        // Create the SessionHandler (wrapper) to handle the sessions
        HashSessionManager manager = new HashSessionManager();
        SessionHandler sessions = new SessionHandler(manager);
        context.setHandler(sessions);

        // Put dump inside of SessionHandler 
        sessions.setHandler(dump);

        // Tree is now
        // Server
        //   + ContextHandler("/")
        //       + SessionHandler(Hash)
        //           + MyDumpHandler

        try
        {
            server.start();
            server.join();
        }
        catch (Throwable t)
        {
            t.printStackTrace();
        }
    }
}

MyDumpHandler.java

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

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

import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;

public class MyDumpHandler extends AbstractHandler
{
    public void handle(String target,HttpServletResponse response) throws IOException,ServletException
    {
        PrintWriter out = response.getWriter();
        response.setContentType("text/plain");

        try
        {
            HttpSession session = request.getSession();
            if (session.isNew())
            {
                out.printf("New Session: %s%n",session.getId());
            }
            else
            {
                out.printf("Old Session: %s%n",session.getId());
            }
        }
        catch (IllegalStateException ex)
        {
            out.println("Exception!" + ex);
            ex.printStackTrace(out);
        }
        out.close();
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读