Java 如何登录用户无状态bean

Java 如何登录用户无状态bean,java,validation,jakarta-ee,stateless,Java,Validation,Jakarta Ee,Stateless,我对如何验证登录用户感到困惑。我想从无状态bean调用有状态bean,但我读了这个主题 这是我的想法 ProductBean.java @Stateless @LocalBean public class ProductBean { @EJB private UserBean userBean; // UserBean is SFSB public Product addProduct(Product product) { if(userBean == null

我对如何验证登录用户感到困惑。我想从无状态bean调用有状态bean,但我读了这个主题

这是我的想法

ProductBean.java

@Stateless
@LocalBean
public class ProductBean {
    @EJB private UserBean userBean; // UserBean is SFSB
    public Product addProduct(Product product) {
        if(userBean == null || userBean.getLoggedInUser() == null) {
            // throw an exception
        }
        // persist 
    }
}
@ManagedBean
@RequestScope
public class ProductController {
    @EJB private ProductBean productBean;
    private Product product;
    public void addProduct() {
        Object result = productBean.addProduct(productBean);
    }
}
ProductController.java

@Stateless
@LocalBean
public class ProductBean {
    @EJB private UserBean userBean; // UserBean is SFSB
    public Product addProduct(Product product) {
        if(userBean == null || userBean.getLoggedInUser() == null) {
            // throw an exception
        }
        // persist 
    }
}
@ManagedBean
@RequestScope
public class ProductController {
    @EJB private ProductBean productBean;
    private Product product;
    public void addProduct() {
        Object result = productBean.addProduct(productBean);
    }
}

提前谢谢。:)

关于保护bean-您应该使用
javax.ejb.SessionContext
获取主要信息或检查特定角色并从中开始


Oracle的

中有一些关于安全性的好例子,如果您想保护您的bean,您应该使用Java EE安全机制,如
@RolesAllowed
sessionContext.getCallerPrincipal()
,而不是创建自己的机制。如果您将在web模块中执行适当的身份验证,安全上下文将传播到EJB


有状态bean不是很好的主意,尤其是在您的设计中。您不能在无状态bean中使用有状态bean,因为无状态bean实例在不同的调用/用户之间重用。

感谢您的回复,我将阅读有关会话上下文的文章。你们有并没有为这个领域的初学者推荐过教程网站?@bell看一看他在回答中发布的JavaEE教程链接,它显示了所有这些。