问题标签 [session-bean]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 会话 bean 中的静态变量限制
在会话 bean 代码上使用静态变量是不可能的。这种限制是任意的还是有根据的?为什么?
此致
jakarta-ee - Java-EE6:从子项目调用无状态 bean 的正确方法是什么?
我的企业应用程序 (E-APP) 具有一个额外的类库项目 (CLP),它充当我的 E-APP 和我的独立 Java SE 胖客户端之间的接口库(E-APP 引用 CLP 的内置 jar 文件) . 现在我需要调用驻留在我的 E-APP 中的会话 bean 的方法,但由于只有 E-APP 引用 CLP,我无权访问这些 bean 类。我将如何解决这个问题?进行 JNDI 远程调用,尽管 CLP 类作为 jar 文件驻留在应用程序服务器上?或者在这种情况下有没有办法使用依赖注入?
ejb-3.0 - 从无状态 bean 创建有状态会话 bean
上下文如下:
客户端应用程序使用无状态会话 bean 来登录 EJB 服务器应用程序。如果登录成功,客户端应该获得一个有状态的会话 bean,以便对他的个人数据执行一些事务。但是,我希望登录方法返回这个有状态会话 bean 的一个新实例,这样客户端不应该能够手动调用这个会话 bean 并在没有经过身份验证的情况下执行事务。可能吗 ?
在我的无状态 bean 中,我有以下代码:
查找总是失败。我不知道我做错了什么......
jpa - 无状态会话 Bean - 停止多个调用
因此,我从 BalusC 的这篇文章中读到了如何阻止无状态会话 bean 在被 JSF 访问(可能/将进行多次调用)时不断破坏数据存储(例如 DB),所以我已经实现了我的代码'd like to think is in what was posted by BalusC (and other forum posts from "best practice" I've seen about this issue).
我的无状态会话 bean 如下所示:
编辑:我已将同步块添加到相关部分以确保串行访问,尽管现在这开始感觉更像是一个单例。我仍然很想知道其他人如何处理与多次调用数据存储有关的问题。
具体来说,我创建了一个检查的“脏”标志,如果数据库已更新,则脏标志设置为 true(通过更新数据库)。在检测到脏标志后,它被设置回假,因此只调用了一次数据库。因此,不会发生 DB 抖动。
我的问题是:我所做的,这是解决解决方案的适当“最佳实践”,还是有一种我不知道的更聪明的方法?我在考虑旧的“J2EE”蓝图设计模式以及可能在 Java EE 6 的上下文中丢失的注释。
session - 尝试从 Session Scoped Bean 获取 .getSessionMap() 时出现 IllegalStateException
我是 Java 和 JSF 的新手。我需要有关 IllegalStateException 的帮助。这是场景:
在我当前的项目中,我为应用程序菜单提供了这个 Session Scoped bean:
在我的逻辑上,我需要更新菜单,所以我这样做:
bean 构造良好,但是当我尝试手动更新它时,如上所示,我在更新方法的第一行得到 IllegalStateExceptionupdateMenu()
我不明白出了什么问题,因为我可以在第一次构建菜单时使用相同的调用来获取会话映射。
此外,使用 NetBeans 调试器,我可以看到 MenuBean 的实例已正确恢复。
你们能帮帮我吗?
java - 如何在 OGS 中实现 Session Bean 的集群、负载均衡和故障转移
JBoss 似乎有一组非常简单的注释/配置,用于集群和负载平衡会话 bean,但我在 GlassFish 3.x 文档中没有看到相同的功能。
假设我有MyStatefulBean
和MyStatelessBean
豆子。对于他们两个,我想要以下功能:
- 我希望能够创建一个 bean 集群(任意数量或规模)并将它们放在一个软件负载均衡器后面,该负载均衡器将循环 bean;和
- 如果 1 个集群 bean 因任何原因失败,我希望将其从池中取出
GlassFish 免费/(社区版)甚至支持这个还是我必须自己实现这个?
与第一个问题相切:集群/负载平衡是否对有状态 bean 有意义?我不认为现在我想到它......但这个问题仍然适用于两种类型的豆子,除非另有证明!
jsf - 无法序列化会话 Bean - 引发警告
我正在使用 EclipseLink (JPA 2.0) 在 netbeans 中运行 JSF + Primefaces + tomcat 6.0.32 的环境。
我的应用程序运行良好,但是每次运行它时,我都会收到很多警告说不能序列化我的会话 bean,并为每个会话 bean 显示这样的块:
问题是我的会话 bean 已经实现了可序列化。那么我能做些什么来解决这个问题呢?
谢谢 !
---- 添加信息 07/20/2012 ----
我从会话 bean 中引用 EntityManager 的唯一一点是当我在 getter 属性中创建 jpaController 时,如下所示:
那是因为我这样定义了 jpaController 构造函数:
jakarta-ee - 尝试从 servlet 内的独立 POJO 类查找本地 EJB 会话时出现查找失败错误
在一个 Java EE 应用程序中,我编写了一个布局管理器类。从这个类中,有时我需要从 EJB 模块访问 EJB 会话。
这是代码,这是生成的代码:
但是,在尝试使用它时,我得到了一个错误
java.lang.RuntimeException:javax.naming.NamingException:
查找“java:global/CMS/CMS-ejb/MessagesFacade!cms.model.beans.MessagesFacadeLocal”失败
在 SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory,java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [根异常是 javax.naming.NameNotFoundException: CMS]
我不确定为什么会遇到这个问题。如何解决这个问题呢?
java - 在会话超时时无法获取会话范围的 bean
我需要在HttpSessionListener.sessionDestroyed()
. 目标是在会话被销毁时进行清理(通过invalidate()
或超时)。我添加了ContextLoaderListener
以公开上下文并让 bean 通过WebApplicationContextUtils.getWebApplicationContext()
.
如果我自己在 Servlet 中使会话无效,一切都会正常工作,但是当会话超时时,我会得到一个Scope 'session' is not active for the current thread;
. 我知道清理问题是由 Servlet 引擎的内部线程完成的,但我仍然需要能够从HttpSessionListener
.
我似乎有很多相同的问题,没有人有解决方案,这就是我再次问的原因。
我的applicationContext.xml没有 bean 声明,因为我正在使用注释。
这是会话超时时我需要访问的bean :
这是手动或会话的控制器。create
destroy
这是监听会话销毁的HttpSessionListener ,我需要访问Access
会话范围 bean的内容。
下面的异常在v.getSerial()
.
最后,这是我的web.xml
正如我所说,当我在控制器的方法中使会话无效时,一切都很好destroy
。
更新 1:找到可能的解决方案
出现问题是因为需要一个请求才能 Spring 访问会话 bean。事件虽然我们有一个关联到线程的上下文,但没有请求。
这里有一些可能的选择:
- 按照alexwen的建议实现接口 DisposableBean 。这意味着将业务逻辑移动到模型对象[here];
- 实施alexwen
DestructionAwareBeanPostProcessor
也建议的。这意味着您需要在进行任何处置[here]之前检查要处置的 bean 是否为 a ;Access
- 直接从会话中检索 bean。这种方式不是一个很好的方式,因为您使用未记录的行为来实现结果,但确实有效[here];
- 模拟一个 servlet 请求并将其属性绑定到 Thread 通过
RequestContextHolder
. 这也会导致未记录的行为,可以在未来的版本中进行更改[这里];
我没有选择最后两个,因为它们没有记录。另外,我不喜欢在一个特定的豆子之后清除每个豆子的想法。由于我也不想将业务逻辑混合到我的模型 bean 中,所以我最终创建了一个@Service
创建 bean 并且还有一个方法的destroy
方法。
此方法由访问 bean 的处置负责。我在 beanDisposableBean
上实现了接口并将服务Access
注入AccessManager
到 Access
bean 并调用服务destroy
方法。该服务如下所示:
java - 应用程序关闭时清理 JSF 会话范围 bean
当 JSF 应用程序关闭或 tomact 关闭时,我需要使活动会话对象无效并清理。以下是我在 application scoped bean 中编写的代码
并且以下被覆盖 HttpSessionListener
运行此代码时
没有被执行。我错过了什么?谢谢。