相关疑难解决方法(0)

Java核心库中的GoF设计模式示例

我正在学习GoF Java设计模式,我想看看它们的一些真实例子.Java核心库中这些设计模式的一些很好的例子是什么?

java oop design-patterns java-api

672
推荐指数
7
解决办法
49万
查看次数

JSF支持bean应该是可序列化的吗?

我收到这些消息:

[#| 2010-07-30T11:28:32.723 + 0000 |警告| glassfish3.0.1 | javax.faces | _ThreadID = 37; _TreadName = Thread-1; |将不可序列化的属性值设置为ViewMap :(关键字:MyBackingBean, value class:foo.bar.org.jsf.MyBackingBean)|#]

这些是否意味着我的JSF支持bean应该实现Serializable?还是他们提到了其他一些问题?

java jsf serialization

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

JSF请求作用域bean继续在每个请求上重新创建新的有状态会话bean吗?

我正在使用JSF,PrimeFaces,Glassfish和Netbeans构建我的第一个Java EE应用程序.因为我是新手,所以我可能会接近核心问题.

核心问题:我想安全地维护用户的信息.关于是否应该在JSF会话bean或有状态会话EJB中维护它似乎存在矛盾的想法.我正在尝试使用有状态会话EJB,因为它更安全.

问题是我的应用程序似乎正在创建该bean的多个实例,当我希望它创建一个并重新使用它时.如果我刷新页面它运行@PostConstruct@PostActivate3次,他们都用不同的实例.然后,当我重新部署应用程序时,它们都会被破坏.

我误解了它应该如何工作或错误配置了什么?

我将尝试显示一个修剪过的代码示例:

basic.xhtml:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        Hello from Facelets
        <c:if test="#{loginController.authenticated}">
            Authenticated
        </c:if>
        <c:if test="#{loginController.authenticated}">
            Authenticated
        </c:if>
        <c:if test="#{loginController.authenticated}">
            Authenticated
        </c:if>
    </h:body>
</html>
Run Code Online (Sandbox Code Playgroud)

LoginController:

@Named(value = "loginController")
@RequestScoped
public class LoginController implements Serializable {

    @EJB
    private UserBeanLocal userBean;

    public boolean isAuthenticated() {
        return userBean.isAuthenticated();
    }

}
Run Code Online (Sandbox Code Playgroud)

UserBean(不包括UserBeanLocal界面)

@Stateful
public …
Run Code Online (Sandbox Code Playgroud)

java-ee ejb-3.0 jsf-2

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

为什么无状态会话bean?

我正在阅读无状态会话bean,无法理解它的用法.

摘自下面的太阳教程

"..因为无状态会话bean可以支持多个客户端,它们可以为需要大量客户端的应用程序提供更好的可伸缩性"

在哪里使用无状态会话bean?什么样的应用程序使用它?

在"无状态会话bean"出现之前使用了什么机制来支持类似上下文中的多个客户端?

有人可以提供一些细节吗?

谢谢!

ejb stateless-session-bean java-ee

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

确切地说,当@Inject注释在Servlet中启动SessionScoped bean的注入时?

我需要在Servlet中修改用户会话对象(SessionScoped bean-CDI),所以我必须以某种方式获取该bean.我用以下方式注射:

@Inject
private UserSession user;
Run Code Online (Sandbox Code Playgroud)

UserSession是SessionScoped CDI bean.用户方法是从doPost或doGet servlet方法调用的.这很完美; 每次@Inject注释都会注入相应的UserSession bean,但我不明白这种行为是如何实现的.

我假设用@Inject注释的bean只注入一次(当创建对象 - 本例中的Servlet实例时),但这显然是错误的假设.

那么,这些bean什么时候注入到servlet中?按要求?当有多个UserSession对象时,这种方法如何避免冲突(一个servlet实例 - 处理它的多个线程)?

servlets cdi jsf-2

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

EntityManager线程安全性和Java EE

我是EJB和hibernate的新手,以下让我感到困惑,因为每当我寻找明确的答案时似乎都会有矛盾.题:

以下列方式将实体管理器直接注入无状态bean是否可以线程安全?

@Stateless
public class SomeBean implements SomeInterface {

//..    
@Inject
private EntityManager entityManager;

//... non related transaction1()
//... non related transaction2()
Run Code Online (Sandbox Code Playgroud)

EntityManager是否可以注入每个无状态bean都有自己的实例或共享实例?

根据Hibernate文档:

一个EntityManager是应该被使用一次,单个业务流程的廉价,非线程安全的对象,一个工作单位,然后丢弃.

EJB容器是否使其线程安全?

根据EJB文档,无状态会话bean本身就是线程安全的,因为不允许不同的客户端同时在同一个bean上运行.

然而,我看过的例子中,EntityManagerFactory应注射代替EntityManager,如果EntityManager直接注射应在状态bean来完成.

总是将EJB直接注入无状态bean(如上所示)或者什么是无用的情况下是否安全?

multithreading hibernate ejb java-ee

3
推荐指数
1
解决办法
1147
查看次数

Java EE bean 和 volatile 关键字

Java EE 规范的 Servlet、EJB 和 CDI 部分描述了 bean 管理(注入等)。但是规范也没有描述(显式或隐式)bean 容器的并发属性。如果我使用了 WildFly 或 GlassFish,那么 Java EE 应用服务器可以从一个线程访问更多的 bean 对象。

所以问题是,我是否必须对volatile所有 bean 字段使用关键字,理论上可以从多个线程访问(即对于几乎所有 bean,至少对于所有用 注释的字段@Inject)?

ejb volatile javabeans cdi jakarta-ee

3
推荐指数
1
解决办法
641
查看次数