Java 我可以在无状态会话bean中使用实例变量吗?

Java 我可以在无状态会话bean中使用实例变量吗?,java,jakarta-ee,javabeans,stateless,Java,Jakarta Ee,Javabeans,Stateless,我知道无状态bean不维护会话状态,但我需要的只是一个记录器。我应该在调用的每个方法中都使用logger吗?如果没有,我应该在哪里初始化它 这是否可以确定,如果我编写这样的代码,在使用logger的方法中不会得到NullPointerException @PostConstruct public void init() { logger = Logger.getLogger(); } 我猜您不希望有一个特定于请求/会话的记录器,对吗?在这种情况下,您甚至可以使用静态类成员添加记录器

我知道无状态bean不维护会话状态,但我需要的只是一个记录器。我应该在调用的每个方法中都使用logger吗?如果没有,我应该在哪里初始化它

这是否可以确定,如果我编写这样的代码,在使用logger的方法中不会得到NullPointerException

 @PostConstruct
 public void init() {
   logger = Logger.getLogger();
 }

我猜您不希望有一个特定于请求/会话的记录器,对吗?在这种情况下,您甚至可以使用静态类成员添加记录器,并让所有bean实例使用相同的记录器。

创建一个具有以下属性的单例类:

  • 类本身类型的静态字段
  • 私有构造函数,以确保此记录器只有一个实例 课程开始了
  • getInstance()
    方法,该方法将给出类的唯一实例
  • 获取记录器的方法
  • 在此类的构造函数中初始化记录器,然后
    每次需要使用记录器时,您都可以从getLogger()方法获取记录器

    尝试:

    private static final Logger log = Logger.getLogger();
    

    如果您需要特定于线程的值,请注意记录器的输出处理程序会在每一行中写入线程名称,这样您就可以了。

    这不是“有争议”状态,而是“对话”状态,尽管该主题可能有争议:)谢谢,Thomas!我真的为我的英语感到抱歉。