【问题标题】:Java EE EJB 3.0 AnnotationsJava EE EJB 3.0 注释
【发布时间】:2013-08-04 20:34:20
【问题描述】:

我正在使用 Glassfish 版本 3,当我尝试编译应用程序时,此错误日志出现在日志文件中,

SEVERE: The annotation symbol defined in super-class is not compatible with Session ejb ManagerDaoImpl

注解为@Singleton@Stateless

有没有办法解决这个问题?

【问题讨论】:

  • 发布 EJB 有意义的代码和完整的堆栈跟踪。

标签: java jakarta-ee glassfish ejb


【解决方案1】:

带有@Singleton 注释的bean 用于Java VM 的一个实例,带有@Stateless 的bean 用于Java VM 的多个实例。

如果你有公共方法,你可以定义一个基类,类似下一个:

public abstract class AbstractBean {
    public void commonMethod() {
        // do common operation
    }
}

public interface LocalFoo {
    public void foo();
}

public interface RemoteFoo {
    public void foo();
}

@LocalBean
@Local(LocalFoo.class)
@Remote(RemoteFoo.class)
@Stateless
public class FooBean extends AbstractBean implements LocalFoo, RemoteFoo {
    @Override
    public void foo() {
        // do something
    }
}  

【讨论】:

  • 问题解决了,但是@Lock注解出现了新问题。我收到了这个错误,
  • 在您的 bean 中将 @Stateless 注释更改为 @Singleton
【解决方案2】:

我们的 bean 是 ;

@Stateless
@Singleton
public class ManagerDaoImpl extends AbstractDAO<X> implements ManagerDAO {

@EJB
PersonDAO personDao;
@PersistenceContext(unitName = "PoyrazPU")
private EntityManager em;

。 . .

严重:超类中定义的注解符号与Session ejb ManagerDaoImpl ++不兼容使用@LocalBean @Local(LocalFoo.class) 代替@Singleton 解决

我们的新 bean 是 ;

@Stateless
@LocalBean
@Local(MAanagerDAO.class)
public class ManagerDaoImpl extends AbstractDAO<X> implements ManagerDAO {

@EJB
PersonDAO personDao;
@PersistenceContext(unitName = "PoyrazPU")
private EntityManager em;

问题解决了,但是@Lock注解又出现了一个新问题。我收到了这个错误,

严重:@Lock 仅允许用于单例会话 bean

@Asynchronous
@Lock()
@AccessTimeout(-1)
@Override
public void doStuff(Mass mass) {

    for (int i = 0; i < RETRY_COUNT; i++) {
        notify(mass);
        try {
            Thread.sleep(TIME);
        } catch (InterruptedException ex) {
            BeanLogger.logError("Thread sleep threw exception while informing masses: ", new ThreadSleepException(ex));

        }
    }
}

【讨论】:

    猜你喜欢
    • 2013-08-02
    • 1970-01-01
    • 2019-07-08
    • 2012-06-03
    • 2014-01-19
    • 2012-06-07
    • 2011-01-02
    • 2013-06-30
    • 2017-09-20
    相关资源
    最近更新 更多