Jakarta ee 在EJB3.1中存储SFSB引用

Jakarta ee 在EJB3.1中存储SFSB引用,jakarta-ee,glassfish,java-ee-6,ejb-3.1,Jakarta Ee,Glassfish,Java Ee 6,Ejb 3.1,我想存储对有状态会话Bean的引用,并将其保存到数据库或将其传输到另一个VM。据我所知,在EJB2.x中,这可以使用getHandle()实现。 如果尝试使用Glassfish 3.1.1序列化SFSB实例,则会出现以下异常: java.io.NotSerializableException: com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate 此外,我还没有找到获得SFSB句柄的方法。SFSB SessionConte

我想存储对有状态会话Bean的引用,并将其保存到数据库或将其传输到另一个VM。据我所知,在EJB2.x中,这可以使用
getHandle()
实现。 如果尝试使用Glassfish 3.1.1序列化SFSB实例,则会出现以下异常:

java.io.NotSerializableException: com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate
此外,我还没有找到获得SFSB句柄的方法。SFSB SessionContext中对EFBHome、EFBObObject、EFBLocalHome的所有引用都为null,即使容器正确管理bean也是如此。如果我正确理解了规范,那么EJB3.1中就不需要句柄,因为开发人员应该能够直接使用SFSB引用

处理相同的问题,但是建议使用JavaEEObjectInputStream类并没有在我的测试中公开readObject方法。我想知道这种方法是如何起作用的


有人能推荐一种在Glassfish中序列化SFSB以存储引用的好方法吗?我不想将引用附加到HTTPSession(我只是这么说,因为到处都有人推荐它)。

这家伙显然找到了一种特定于glassfish的解决方案:


在我的问题中,我已经链接到了这篇文章,并解释了为什么它对我不起作用。也许这不是一个令人满意的答案,但为什么不将旧的原始EJB2代码与jndi查找和可移植的窄对象一起使用呢?它仍然适用于使用3.x注释声明的EJB。。。