EJB3.0将句柄序列化为有状态Bean [英] EJB3.0 Serializing a handle to a Stateful Bean

查看:59
本文介绍了EJB3.0将句柄序列化为有状态Bean的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图将远程句柄持久化为一个有状态的EJB3.0 bean。这个bean的接口被定义为:

I'm attempting to persist the remote handle to a Stateful EJB3.0 bean. This bean's interface is defined:

@Remote
public interface Hello extends Serializable {
     Handle getHandle();
     void sayHello();
}

这个实现是:

The implementation is:

@Stateful
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public class HelloBean implements Hello {

    @Resource
    private SessionContext ctx;

    @Override
    public Handle getHandle() {
          try {
              return ctx.getEJBObject().getHandle();
          } catch (Exception e) {
              throw new RuntimeException(e);
          }
    }

    @Override
    public Handle sayHello() {
        System.out.println("hello");
    }
}

根据EJB规范,应该抓住我可序列化的句柄。但取而代之的是:

According to the EJB Spec, that should grab me a serializable handle. But instead I get:

Caused by: java.lang.IllegalStateException: EJBObject not available
    at com.sun.ejb.containers.EJBContextImpl.getEJBObject(EJBContextImpl.java:328)
    at com.zzz.zzz.HelloBean.getHandle(WorkHolderBean.java:125)
    ... 75 more

我不知道我明白我做错了什么......所有有状态的bean都应该有一个可序列化的句柄。在EJB3.0中获得可序列化句柄是否存在正确方式?

I'm not sure I understand what I did wrong... All Stateful beans should have a serializable handle. Is there a 'correct' way of obtaining the serializable handle in EJB3.0?

推荐答案

getEJBObject不适用于EJB 3.0编程模型。您需要使用@RemoteHome并实现EJBHome / EJBObject。

getEJBObject is not usable with the EJB 3.0 programming model. You'll need to use @RemoteHome and implement EJBHome/EJBObject.

这篇关于EJB3.0将句柄序列化为有状态Bean的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆