dropwizard 0.7 @Session注释

时间:2014-05-17 10:50:18

标签: java session dropwizard

我正在努力让Dropwizard与会话合作。 我在0.7中看过,Dropwizard增加了会话支持。 从发行说明: “添加了对HTTP会话的支持。将带注释的参数添加到资源方法:@Session HttpSession会话以注入会话上下文。”

我有一个示例资源类,它从http get请求中获取用户/密码,我想在会话中保存用户名:

@GET
public Response auth(@QueryParam("user") String user, @QueryParam("password") String password,         @Session HttpSession session) throws URISyntaxException {
    URI rootUri = getApplicationRootUri();
    if(!user.equals(config.getUser()) || !password.equals(config.getPassword())) {

        return Response.temporaryRedirect(rootUri).build();
    }
    session.setAttribute("user", user);
    return Response.temporaryRedirect( new URI("/../index.html")).build();
}

尝试从我的应用程序登录时我得到了:

ERROR [2014-05-17 10:33:45,244] com.sun.jersey.spi.container.ContainerRequest: A message body reader for Java class javax.servlet.http.HttpSession, and Java type interface javax.servlet.http.HttpSession, and MIME media type application/octet-stream was not found.

我试过在github上的dropwizard源代码中查看一些测试,似乎@Session注释的使用方式与我的代码相同。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

应用程序类中我必须做的事情(dropwizard 0.7)是:

    environment.jersey().register(HttpSessionProvider.class);
    environment.servlets().setSessionHandler(new SessionHandler());