我试图将远程句柄持久化为有状态EJB3.0 bean。该bean的接口已定义:
@Remote
public interface Hello extends Serializable {
Handle getHandle();
void sayHello();
}
实现是:
@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 Spec,那应该抓住我一个可序列化的句柄。但是我得到了:
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中是否有“正确”的方法来获取可序列化的句柄?
getEJBObject不适用于EJB 3.0编程模型。您将需要使用@RemoteHome并实现EJBHome / EJBObject。
EJB2.0对象处理(从getHandle()检索)如何帮助在从服务器断开连接后恢复状态bean? 在我们的应用程序体系结构中,我们将有状态bean的句柄保留在客户端的缓存中。如果集群中创建有状态bean的节点由于某种原因关闭,句柄会将下一次对有状态bean的调用重定向到新节点吗?有没有任何配置,我们可以做,如果一个节点关闭,然后重新路由调用的状态Bean到集群中的另一个节点?
有状态会话bean是一种企业bean,它保留与客户端的会话状态。 有状态会话bean根据其名称在其实例变量中保持关联的客户端状态。 EJB容器创建一个单独的有状态会话bean来处理客户端的每个请求。 一旦请求范围结束,就会销毁statelful会话bean。 创建有状态EJB的步骤 以下是创建有状态EJB所需的步骤 - 创建公开业务方法的远程/本地接口。 EJB客户端应用程序将使用此接口。 如果E
问题内容: 我正在阅读Java EE 6教程,试图理解无状态会话bean和有状态会话bean之间的区别。如果无状态会话bean在方法调用之间没有保持其状态,为什么我的程序按原样运行? 客户端 我原本希望getNumber每次都返回0,但它返回1,并且在浏览器中重新加载servlet会使它更多。问题在于我对无状态会话Bean如何工作的理解,而与库或应用程序服务器无关。有人可以给我一个无状态会话bea
Flink去/序列化操作员状态的频率是多少?每次获取/更新或基于检查点?状态后端有什么不同吗? 我怀疑,对于具有不同键(数百万)和每个键每秒数千个事件的键控流,去/序列化可能是一个大问题。我说得对吗?
我是JavaEE的新手,我试图找出无状态和有状态会话bean之间的区别。到目前为止我所理解的: 1.)在有状态会话bean中,bean的状态与客户机绑定;因此,只要我们与同一个用户在同一个会话中,就应该有相同的bean实例状态 2.)在无状态会话bean中,没有绑定到会话和客户机的状态;事实上,bean实例可以在用户的每次调用或请求中进行交换 为了尝试这一点,我编写了一个简短的servlet,它只
对于有状态会话bean(SFSB)和无状态会话bean(SLSB)的用法,我有点困惑。 我知道SFSB与客户保持状态。这很有帮助:什么时候使用有状态会话bean而不是无状态会话bean? 这里和许多其他地方提供的示例是SFSB的购物车。 “如果一个任务需要一系列方法调用(不止一次),并且您需要保留以前的结果以在下一次调用中使用它们,那么就可以使用SFSB”--Source。这将更像是签出(页面之间