Tag: session

Java servlet – 会话清理(HttpServletRequest)

关于java servlet的一般问题和处理请求的最佳方法。 如果我从远程服务器请求中点击我的doGet方法: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { …. …. kill(request); } private void kill(HttpServletRequest request) { //How do I kill the user session here? } 在我结束处理请求并生成输出到请求者之后,我想基本上“杀死”他们的会话。 目前,该会话徘徊,从而占用内存。 然后,一旦达到最大值,所有其他呼叫都将超时。 我尝试使用请求对象创建一个HttpSession对象,但得到了相同的结果: HttpSession session = request.getSession(); session.invalidate();

JSF:如何根据特定FacesContext会话属性的值将用户重定向到另一个页面

在我的JSF应用程序中,如果会话属性(如userRole)的值为“contributor”,则需要将用户从页面A重定向到页面B,如果是“作者”,则需要将用户重定向到页面C. 我被告知我必须实现页面监听器或会话监听器。 虽然我理解编写一个监听器类是非常简单和标准的,但我不知道如何在JSF页面本身上设置它(听取会话)。 任何人?

Jsch – 一个会话多个频道

我设法通过ssh用Jsch执行单个命令但是当我尝试执行第二个命令时它失败了 为了调试我把这个问题归结为这样: import java.io.IOException; import java.io.InputStream; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; public class Exec { public static void test(Session session) throws Exception { Channel channel = session.openChannel(“exec”); ((ChannelExec) channel).setCommand(“pwd”); channel.setInputStream(null); ((ChannelExec) channel).setErrStream(System.err); InputStream in = channel.getInputStream(); channel.connect(); byte[] tmp = new byte[1024]; while (true) { while (in.available() > 0) { […]

帮助在春季捕获会话超时

我有一个简单的Spring 3 MVC应用程序。 我正在使用sessionAttribute,一切正常,除非我让页面停留30分钟或更长时间。 然后我得到一个 org.springframework.web.HttpSessionRequiredException 告诉我在会话中找不到我的对象。 我想我需要在会话超时发生时以某种方式重定向回同一页面。 我不确定如何正确使用弹簧。 无需登录,我已经在检查对象是否为空。 任何建议,将不胜感激。 谢谢

getSession()始终创建一个新会话

我们在应用程序中通过实现Filter来安装SecurityFilter类,我们的doFilter方法如下所示。 public void doFilter(ServletRequest sres, ServletResponse sreq, FilterChain chain) throws IOException, ServletException { LOGGER.debug(Logger.buildLogMessage(“Starting SecurityFilter.doFilter”)); HttpServletRequest request = (HttpServletRequest) sres; HttpServletResponse response = (HttpServletResponse) sreq; HttpSession session = request.getSession(); 我们的web.xml中有以下条目 SecurityFilter com.abcweb.filter.SecurityFilter SecurityFilter /resources/* 我们对应用程序进行了很多REST调用,所有这些调用都通过了这个filter。 Java API文档说,request.getSession()返回会话(如果存在),否则会创建新会话。 但是在我们的应用程序中,request.getSession()总是为每个REST调用创建一个新会话。 这可能会出错?

Hibernate开启/关闭会话,DAO的正确方法

我已经编写了这个Hibernate对象DAO,但是使用这种方法,它使用的是每次更新的方法(我不认为这是正确的)。 之所以我认为它是正确的,是因为我遇到了我的User类的问题,其中包含了延迟提取的集合。 从DAO检索每个用户时,会话将关闭。 因此我无法获得我的collections品。 有时,它也会对表进行大量不必要的更新,因为该对象已分离。 那么有没有办法修复我的DAO,比如使用getCurrentSession() ? import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import org.test.util.DataAccessLayerException; import org.test.util.HibernateUtil; public abstract class AbstractDao { protected Session session; protected Transaction tx; public AbstractDao() { HibernateUtil.buildIfNeeded(); } protected void saveOrUpdate(Object obj) { try { startOperation(); session.saveOrUpdate(obj); tx.commit(); } catch (HibernateException e) { handleException(e); } finally […]

Java:确保Web应用程序仅在一个浏览器选项卡中打开

确保特定页面(假设单页Web应用程序)仅在一个浏览器选项卡中打开的最佳方法是什么? 假设Java Web应用程序具有身份validation,即用户必须登录(因此我们可以通过Java Session API识别哪个用户正在查看哪个页面)。 目的是如果为同一个URL打开另一个选项卡,则用户将被重定向到静态页面,该页面告诉他应用程序在其他位置打开(另一个选项卡)。 我目前的方法无法在同一浏览器中使用标签,因为JSESSIONID存储在cookie中,可用于所有浏览器的标签。

GWT会话管理

关于java的gwt session,我没有太多关注。 我有点怀疑。 任何人都可以检查下面的实现是否需要完成。 public class ServiceImpl extends RemoteServiceServlet implements Service { void CreateSession(String Username) { HttpServletRequest request = this.getThreadLocalRequest(); HttpSession session = request.getSession(); session.setAttribute(“Username”, Username); } boolean ValidateSession(String Username) { HttpServletRequest request = this.getThreadLocalRequest(); HttpSession session = request.getSession(); if (session.getAttribute(“Username”)) { return true; } return false; } } 这是实现这两个function的正确方法吗???

Spring Boot,Websockets无法从Session获取用户(即java.security.Principal)

使用Spring Boot 1.2.1.RELEASE和Spring Websockets 。 有一个部署运行时问题,当运行嵌入式Jetty 9 ,除了localhost之外的其他地方应用程序部署时,我无法成功伪造用户( java.security.Principal )。 我咨过过 http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html#websocket-stomp-authentication http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html#websocket-server-runtime-configuration 下面的配置(我相信)已经“升级”了一个请求 @Configuration @EnableWebSocketMessageBroker @EnableScheduling public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { @Override public void configureMessageBroker(MessageBrokerRegistry registry) { // see http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html#websocket-stomp-handle-broker-relay // requires an external broker like AMQP or RabbitMQ //registry.enableStompBrokerRelay(“/queue/”, “/topic/”); // XXX This might wind up being the impl we actually deploy; […]

JSF:清除会话Scoped Bean

我想知道,在用户关闭JSF 1.2上的窗口(点击浏览器的’X’)之后,我将如何在JSF中执行session.remove(“userBean”) 。 我想在用户点击浏览器的’X’之后弹出一个确认弹出,但不太确定我如何访问或将Ok按钮绑定到我定义的方法,在那里我有清除scoped bean的逻辑。 或者有更好的方法吗? 任何帮助将受到高度赞赏。 谢谢。