在 EJB 中使用 "private static" 辅助方法

Using "private static" helper method in EJBs

我有一个简单的 EJB:

@Stateless
public class EJB {

    public void aMethod() {
        // ...
        Event event = createEvent();
        // ...
    }

    private static Event createEvent() {
        Event event = new Event();
        // ...
        return event;
    }
}

IntelliJ Ultimate 显示错误,因为 EJB 中有一个静态方法。

使用 JBoss EAP EJB 工作正常。 EJB 规范是否禁止使用(私有)静态 "helper" 方法?为什么?为什么它与 JBoss EAP(以及很可能是其他应用程序服务器)一起工作?

Does the EJB spec forbids using (private) static "helper" methods?

不,不是。它确实禁止组成 EJB 与容器的接口的方法是 static,无论这些方法是通过方法命名模式还是通过注释来标识的。它还禁止 EJB 读取或写入 static 但不是 final 的字段。但它并未全面禁止具有或调用 static 方法的 EJB。

And why does it work with JBoss EAP (and most likely othe application servers)?

因为它应该。据我所知,这里错的是 IntelliJ。我推测 IntelliJ 可能会被它标记的特定方法的名称搞糊涂,因为其中出现了 "create"。这有点接近但实际上并不匹配一些对 EJB 很重要的老式方法名称模式。