Tag: 会话

HttpSession中的同步是否可行?

更新:解决方案后问题。 题: 通常,同步是在JVM内串行化并行请求,例如 private static final Object LOCK = new Object(); public void doSomething() { … synchronized(LOCK) { … } … } 在查看Web应用程序时,“JVM全局”范围上的某些同步可能会成为性能瓶颈,仅在用户的HttpSession范围内进行同步会更有意义。 以下代码是否可能? 我怀疑同步会话对象是一个好主意,但听到你的想法会很有趣。 HttpSession session = getHttpServletRequest().getSession(); synchronized (session) { … } 关键问题: 是否保证会话对象是处理来自同一用户的请求的所有线程的相同实例 ? 总结答案/解决方案: 看来会话对象本身并不总是相同,它依赖于servlet容器(Tomcat,Glassfish,…)的实现,而getSession()方法可能只返回一个包装器实例。 因此,建议使用存储在会话中的自定义变量作为锁定对象。 这是我的代码提案,欢迎提供反馈: 帮手类中的某个地方,例如MyHelper : private static final Object LOCK = new Object(); public static Object getSessionLock(HttpServletRequest […]

Java Orkut登录

我想在java中使用ORKUT( http://www.ORKUT.com )主页的页面源。 但它需要在访问ORKUT的任何页面之前登录到ORKUT。 我该怎么做。 它不应该介于两者之间的浏览器

Java安全会话

无论何时进行身份validation,您的应用程序都应更改其使用的会话标识符。 这有助于防止某人设置会话,复制会话标识符,然后欺骗用户使用会话。 由于攻击者已经知道会话标识符,因此他们可以在用户登录后使用它来访问会话,从而为其提供完全访问权限。 这种攻击被称为“会话固定”等。 一旦用户登录系统,如何更改会话ID?

使用Google Cloud Endpoints的“会话”

这个问题只是为了证实我对这个概念很清楚。 据我了解, Google Cloud Endpoints是Google实施的REST服务,因此无法将任何“会话”数据保留在内存中,因此: 用户必须随每个请求发送身份validation数据 。 我以后想要使用的所有数据都必须保持不变 ,即,对于我收到的每个API请求,我必须访问数据存储区,执行某些操作并再次存储数据。 它是否正确? 如果是这样,这在性能方面是否真的很好?

如果用户关闭浏览器,如何自动结束会话

我需要在用户处于非活动状态一段时间后自动结束会话,比如10分钟。 我们有一个方法 HttpSession session=request.getSession(); session.setAttribute(“User”, au); session.setAttribute(“name”, firstname); response.sendRedirect(“doLogin.jsp”); session.setMaxInterval(); 但即使用户活动了10分钟,这也将结束会话。 如何在用户关闭浏览器时结束会话?

如何检查java中的会话已经过期?

有没有其他方法来检查除此之外的会话到期 session.isNew()

Java:关闭选项卡或浏览器时为什么不会销毁http会话?

我有HttpSessionlistener的以下实现 public class SessionListener implements HttpSessionAttributeListener, HttpSessionListener { public void attributeAdded(HttpSessionBindingEvent event) { … } public void attributeRemoved(HttpSessionBindingEvent event) { … } public void attributeReplaced(HttpSessionBindingEvent event) { } //HttpSesion creation & destruction public void sessionCreated(HttpSessionEvent event) { HttpSession session = event.getSession(); //log created time } public void sessionDestroyed(HttpSessionEvent event) { HttpSession session = event.getSession(); long […]

org.hibernate.Session.clear()被认为有害吗?

这是一个设计问题,没有提交具体代码来保护我的底线。 使用Hibernate时,标准工作流程如下: 公开会议 开始交易 做生意(阅读和修改数据) 提交交易 关闭会话 可能迭代到2-4。 Session.clear()的合理用例是什么? 答:我遇到的具体问题是一段(大)代码,它加载并修改实体,然后清除()会话,基本上抛弃了所做的更改。 (要完成的业务任务不包括修改实体,因此代码“有效”)。 在我看来,正确的设计是确保(大)代码不会进行不想保存的更改? B:我猜想Session.clear()是为了方便/灵活而存在,不是因为使用它是个好主意。 我误解了Hibernate的理念吗? C:Subquestion:框架代码在任务完成时无条件清除()会话是不是一个坏主意? 恕我直言,如果任务完成时会话是脏的,框架应该抱怨! 应该关闭会话,看看任务完成…(忽略分钟的表现) (标签A,B和C,以便您可以指出您要回答的部分)。

Google AppEngine会话示例

我刚刚在我的Google AppEngine / Java + GWT应用程序中启用了Session 。 我该如何使用它? 如何从中获取会话ID和播放所有好东西? 是否有任何简单登录页面的真实示例,我只是输入LoginName和Password,然后通过RPC调用进入服务器,对数据库进行身份validation并将会话ID发送回客户端。 我已经有以下代码,但不知道下一步该做什么: GWT登录表格: public class LoginForm { private final LoginServiceAsync loginService = GWT.create(LoginService.class); VerticalPanel loginVp = new VerticalPanel(); TextBox loginTxt = new TextBox(); TextBox passTxt = new TextBox(); Button loginBtn = new Button(“Login”); public Widget getLoginWidget(){ loginBtn.addClickHandler(new ClickHandler(){ public void onClick(ClickEvent arg0) { loginService.authenticateUser(loginTxt.getText(), passTxt.getText(), new […]

在视图模式中打开会话

鉴于我选择的JPA(Hibernate实现),Spring和,我问这个问题。 我一直在考虑我的实体层中的关系 – 例如我有一个订单实体,它有许多订单行。 我已经设置了我的应用程序,因此它急切地为每个订单加载订单行。 如果我将获取策略设置为false,你认为这是一种懒惰的方法来解决我会遇到的延迟初始化问题吗? 我看到它的方式,在检索实体及其关联时,我有以下备选方案: 使用Open Session In View模式为每个请求创建会话,并在返回响应之前提交事务。 实现DTO(数据传输对象)层,以便我执行的每个DAO查询都返回正确初始化的DTO以用于我的目的。 我真的不太喜欢这个选项,因为根据我的经验,我发现它创建了许多样板复制代码并且变得很难维护。 不要映射JPA中的任何关联,以便我执行的每个查询都只返回我感兴趣的实体 – 这可能要求我无论如何都要使用DTO,这将是一个难以维护的问题,我认为无法实现ORM的目的首先。 急切地获取所有(或大多数关联) – 在上面的示例中,总是在检索订单时获取所有订单行。 所以我的问题是,你何时以及在什么情况下会使用哪些选项? 你总是坚持一种做法吗? 我会问一位同事,但我认为,如果我甚至提到“开放式会议”这一术语,我会受到一片空白的欢迎:(我真正想要的是来自资深或经验丰富的开发人员的一些建议。 多谢你们!