标签: session-scope

如何在JSF 2.0中使会话无效?

在JSF 2.0应用程序中使会话无效的最佳方法是什么?我知道JSF本身不会处理会话.到目前为止我能找到

private void reset() {
    HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
            .getExternalContext().getSession(false);
    session.invalidate();
}
Run Code Online (Sandbox Code Playgroud)
  1. 这种方法是否正确?有没有办法没有触及ServletAPI?
  2. 考虑一种方案,其中@SessionScopedUserBean处理用户的登录注销.我在同一个bean中有这个方法.现在,当我reset()完成必要的数据库更新后调用该方法时,我当前的会话作用域bean会发生什么?既然豆本身也存放在HttpSession

session session-scope httpsession jsf-2 managed-bean

58
推荐指数
2
解决办法
8万
查看次数

在JSP EL中session和sessionScope是否相同?

public class LoginAction extends ActionSupport {
    private String username;
    private String password;

    @Override
    public String execute() throws Exception {
        ActionContext ctx = ActionContext.getContext();
        Integer counter = (Integer)ctx.getApplication().get("counter");
        // put counter into application 
        ctx.getApplication().put("counter", counter);
        // put username into session
        ctx.getSession().put("user", username);
        if (getUsername().equals("crazyit.org")
                && getPassword().equals("leegang")) {
            ctx.put("tip", "Login Success! ");
            return SUCCESS;
        }
        else {
            ctx.put("tip", "Login Falied!");
            return ERROR;
        }        
    }
}
Run Code Online (Sandbox Code Playgroud)

我把"counter"在应用"user"会话和"tip"ActionContext.在JSP中,我可以使用${session.user}${sessionScope.user}引用"user"属性.${request.tip}${requestScope.tip}参考 …

jsp el session-scope

17
推荐指数
2
解决办法
4万
查看次数

在Web过滤器中访问会话范围的JSF托管bean

我有一个名为userSession的SessionScoped bean来跟踪用户(用户名,ifLogged等).我想过滤一些页面,因此我需要从我创建的webFilter访问bean.我怎么做?我看起来甚至不可能将豆子导入到潜在的可见区域.

jsf session-scope servlet-filters managed-bean

16
推荐指数
1
解决办法
1万
查看次数

ScopedProxy如何决定使用哪个Session?

Singleton无法自动装配SessionBean,但ScopedProxy可以.

假设100个用户在同一个应用程序中同时拥有一个有效的Session,ScopedProxy如何决定会话的含义?

我不认为ScopedProxy正在选择任何随机会话,这在我看来是无稽之谈.

  1. ScopedProxy如何决定使用哪个会话?
  2. 如果0个用户有会话怎么办?会NullPointerException发生吗?
  3. @Async是一个不同的线程而不是调用Request-Processing-Thread如何将HttpRequest-Context注入Async任务?

java singleton spring session-scope

11
推荐指数
1
解决办法
1553
查看次数

在会话范围的JSF bean中请求范围属性

我想有一个会话作用域的JSF bean与一个请求(页面)作用域的属性.有可能吗?

jsf session-scope

9
推荐指数
1
解决办法
4517
查看次数

为什么我们要在JSF中使SessionScoped ManagedBean线程安全?

我知道Application-Scope持久存在于多个用户之间,因此我们应该确保所有ApplicationScoped ManagedBeans都是线程安全的.

我也明白,我们不需要关心RequestScoped ManagedBean的线程安全性.这是因为它仅针对一个HTTP请求而持续,并且如果被引用则针对每个请求进行新实例化.

但我不太清楚为什么我们应该担心SessionScoped ManangedBean的线程安全性.即使它在多个请求中持续存在,每个用户都可以获得自己的实例,对吧?

那么,为什么我们需要在SessionScoped ManagedBeand的情况下担心线程安全,这也适用于ViewScoped ManagedBean吗?ViewScope在同一视图的两个连续请求中持续存在,对吧?

jsf thread-safety session-scope managed-bean

7
推荐指数
1
解决办法
3167
查看次数

异常 - 无法为托管bean凭据设置属性userLogin

出于身份验证的目的,我将请求范围的支持bean注入另一个将存储已记录用户的会话范围bean.或者至少它应该...以下,一些代码:

请求scoped bean - 托管属性

@ManagedProperty(value="userLogin")
Run Code Online (Sandbox Code Playgroud)

错误 无法为托管bean凭据设置属性userLogin

堆栈跟踪

com.sun.faces.mgbean.ManagedBeanCreationException: Unable to set property userLogin for managed bean credentials
at com.sun.faces.mgbean.ManagedBeanBuilder$BakedBeanProperty.set(ManagedBeanBuilder.java:615)
at com.sun.faces.mgbean.ManagedBeanBuilder.buildBean(ManagedBeanBuilder.java:133)
at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:104)
at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409)
at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)
at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244)
at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:72)
at org.apache.el.parser.AstValue.getValue(AstValue.java:161)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
at javax.faces.component.UIOutput.getValue(UIOutput.java:169)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at …
Run Code Online (Sandbox Code Playgroud)

jsf session-scope managed-bean

7
推荐指数
1
解决办法
8048
查看次数

如何从Castle ActiveRecord SessionScope检索当前的NHibernate Session对象

我有一个开放的Castle ActiveRecord SessionScope.我需要使用包装在SessionScope中的nhibernate会话.

如何从SessionScope检索当前的NHibernate会话对象?

非常感谢你的回复.

[更新]我有这个代码

    ISession session = SessionScope.Current.GetSession( );
Run Code Online (Sandbox Code Playgroud)

但我不知道什么传递给GetSession参数

nhibernate session castle-activerecord object session-scope

6
推荐指数
2
解决办法
2917
查看次数

如何根据用户属性创建 Spring 会话作用域 bean

我开发了一个 Spring Web-MVC 应用程序。我的项目中有一些办公室。每个用户属于一个办公室。user.getOfficeType()返回一个表示用户办公室类型的整数。如果 office 类型为 1,则用户属于 Office1 等。但是我想将经过身份验证的用户的 office 注入我的服务类:

class MyService{
   @Autowired
   Office currentOffice;
   ...
}
Run Code Online (Sandbox Code Playgroud)

我阅读了 Spring 文档。我需要一个会话范围的 bean 将它注入到我的服务类中。

applicationContext.xml :

<mvc:annotation-driven />
<tx:annotation-driven transaction-manager="hibernateTransactionManager"/>
<context:annotation-config />
<context:component-scan base-package="com.package.controller" />
<context:component-scan base-package="com.package.service" />
...
<bean id="office" class="com.package.beans.Office" scope="session">
    <aop:scoped-proxy/>
</bean>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我有Office接口的三个实现。一旦用户请求资源,我想知道他的办公室。所以我需要将他的会话范围的 Office 注入我的服务类。但是我不知道如何根据用户的办公室来实例化它。请帮忙!

java spring spring-mvc session-scope spring-bean

6
推荐指数
1
解决办法
3574
查看次数

CDI会话范围bean未被破坏导致内存泄漏

我对会话作用域CDI bean的生命周期有疑问.
据我所知,会话范围内的CDI bean是在会话开始时由容器构造的,并在会话结束时销毁.在销毁bean之前,调用@PreDestroy方法,如https://docs.oracle.com/javaee/6/tutorial/doc/gmgkd.html所述.它还说要在这种方法中释放资源.

在我构建的JSF应用程序中,我遇到内存泄漏,因为bean似乎没有被销毁,因此不会调用@PreDestroy方法来释放垃圾收集器的一些引用.所以我构建了一个简单的应用程序来测试行为.我的经验是会话bean在会话结束时不会被破坏,而且当需要内存空间时它甚至不会被破坏.我不敢相信我是第一个遇到这种情况的人,但我没有找到任何有关此行为的信息.

所以我的问题是:在上下文过期之后,不应该销毁CDI bean - 因此调用@PreDestroy方法吗?如果不是,在需要空间时,它至少应该被破坏吗?

我的测试应用:

我不允许发布图片,但大纲是eclipse生成的非常基本的jsf webapp.我也有beans.xml文件.

Test.java:

package com.test;

import java.io.Serializable;
import java.util.ArrayList;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;

@SessionScoped
@Named
public class Test implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private String test;
    private ArrayList<ComplexType> cps;
    private ArrayList<ComplexType> cps_2;

    @PostConstruct
    public void init() {
        System.out.println("test postconstruct..");
        test = "Cdi Test";
    }

    @PreDestroy
    public void cleanUp() {
        cps …
Run Code Online (Sandbox Code Playgroud)

jsf session-scope destroy cdi weld

5
推荐指数
2
解决办法
2889
查看次数