当前位置: 首页 > 面试题库 >

java.lang.IllegalStateException:没有SessionManager

强阳曜
2023-03-14
问题内容

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

-主类

 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("<H1>" + pageContent + "</H1>");
        Iterator iterator = listStrings.iterator();
        while (iterator.hasNext()){
            out.println("<br>");
            out.println("Your text from TextField: "+iterator.next());
        }
        out.close();
    }

-С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

问题答案:

您缺少三件事。

  • 一个上下文
  • 一个会话ID经理
  • 一个会话处理程序(与相关的会话管理器)

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, Request baseRequest, HttpServletRequest request, 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();
    }
}


 类似资料:
  • 问题内容: 项目使用Hibernate(JPA),Spring和Maven。我的实体和DAO在单独的JAR中。 pom.xml: 道: } 我有一个使用Spring的模块。 pom.xml: AppContext.xml: 服务: 当我尝试从EntityManager中获取会话时,遇到以下异常: 问题答案: 您必须在方法周围加上@Transactional批注: 并在您的Spring的xml配置文

  • 我在EJB中有一个java.lang.IllegalStateException。 当我试图通过调用managedbean中的insertNewCustomer方法插入新Customer时,就会发生这种情况 下面是例外情况的详细信息

  • 嗨,我正在运行一个spring MVC应用程序,但是由于java.lang.IllegalStateException我 无法运行它。 IllegalStateException:既不是BindingResult也不是普通目标对象 for bean名称“unixmodel11”可作为请求属性使用 public class TroubleController{ unixModel,ModelMap

  • 问题内容: 我正在尝试构建一个应用程序,该应用程序粘贴上一个活动的输入(工作正常),然后向我展示数据库中的某些内容(按ButtonGet时)。问题是,当我尝试运行项目时,我得到了 。我的代码有什么问题? 问题答案: 在您的onCreate中,您要调用super.onCreate()两次,还要调用setContentView()两次。我很确定那不是您想要的。

  • 问题内容: 我正在基于RSelenium Basics CRAN页面 运行以下脚本: 这将产生以下错误: 基于GitHub上此对话的评论,我对命令进行了如下修改: 然后,我在控制台中收到以下错误: 然后弹出的Java提示中的错误: 我不确定缺少Opera驱动程序是实际错误还是警告。无论如何,我都想使用Chrome,所以好像没关系。我究竟做错了什么? 问题答案: 通过将来自许多不同来源的信息拼凑在一

  • 我编写了一个功能并与我正在使用改装,但总是“失败” 获取: LoginAPI.java: 登录活动.java: User.java: 日志说 下面是我的< code>login.php脚本: