我正在使用JBoss为基于Flex的RIA提供一堆RESTful服务。无论如何,我通过一些痛苦来实现登录(使用基于表单的登录),但我正在提供一个RESTful方法来记录用户。 在JSP中,我可以简单地调用类似:
session.invalidate()
如何使用无状态会话bean实现RESTful服务的JBoss,Resteasy?
答案 0 :(得分:4)
经过一些googeling后我创建了一个解决方案:
这是我的RESTful服务bean的本地接口:
@Local
@Path("/Rest")
public interface SessionController {
...
@GET
@Path("/logout/")
@Produces("text/xml")
String logout(@Context HttpServletRequest req);
}
这是实施:
@RolesAllowed({ "TheBoss", "SomeUser", ... })
@SecurityDomain("mysqlLogin")
@Stateless
public class SessionControllerBean implements SessionController {
...
public String logout(@Context HttpServletRequest req) {
...
req.getSession().invalidate();
return "SUCCESS";
}
}
你可以看到非常简单。正如我可能已经想象的那样,依赖注入就是诀窍。使用@Context注释,我可以要求JBoss注入HTTPServletRequest,我可以从中获取会话并调用invalidate。
通过resteasy作为RESTful服务调用bean。
在使用Java EE进行开发时,我发现我花了更多的时间来跟踪如何在所有这些xml文件中配置内容(maven配置是纯粹的地狱),使用哪种API以及注入的方式和方式比实际开发功能要多。