问题标签 [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.

0 投票
3 回答
11327 浏览

java - 会话 bean 中的静态变量限制

在会话 bean 代码上使用静态变量是不可能的。这种限制是任意的还是有根据的?为什么?

此致

0 投票
1 回答
78 浏览

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 文件驻留在应用程序服务器上?或者在这种情况下有没有办法使用依赖注入?

0 投票
1 回答
390 浏览

ejb-3.0 - 从无状态 bean 创建有状态会话 bean

上下文如下:

客户端应用程序使用无状态会话 bean 来登录 EJB 服务器应用程序。如果登录成功,客户端应该获得一个有状态的会话 bean,以便对他的个人数据执行一些事务。但是,我希望登录方法返回这个有状态会话 bean 的一个新实例,这样客户端不应该能够手动调用这个会话 bean 并在没有经过身份验证的情况下执行事务。可能吗 ?

在我的无状态 bean 中,我有以下代码:

查找总是失败。我不知道我做错了什么......

0 投票
4 回答
1929 浏览

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 的上下文中丢失的注释。

0 投票
1 回答
1163 浏览

session - 尝试从 Session Scoped Bean 获取 .getSessionMap() 时出现 IllegalStateException

我是 Java 和 JSF 的新手。我需要有关 IllegalStateException 的帮助。这是场景:

在我当前的项目中,我为应用程序菜单提供了这个 Session Scoped bean:

在我的逻辑上,我需要更新菜单,所以我这样做:

bean 构造良好,但是当我尝试手动更新它时,如上所示,我在更新方法的第一行得到 IllegalStateExceptionupdateMenu()

我不明白出了什么问题,因为我可以在第一次构建菜单时使用相同的调用来获取会话映射。

此外,使用 NetBeans 调试器,我可以看到 MenuBean 的实例已正确恢复。

你们能帮帮我吗?

0 投票
2 回答
574 浏览

java - 如何在 OGS 中实现 Session Bean 的集群、负载均衡和故障转移

JBoss 似乎有一组非常简单的注释/配置,用于集群和负载平衡会话 bean,但我在 GlassFish 3.x 文档中没有看到相同的功能。

假设我有MyStatefulBeanMyStatelessBean豆子。对于他们两个,我想要以下功能:

  • 我希望能够创建一个 bean 集群(任意数量或规模)并将它们放在一个软件负载均衡器后面,该负载均衡器将循环 bean;和
  • 如果 1 个集群 bean 因任何原因失败,我希望将其从池中取出

GlassFish 免费/(社区版)甚至支持这个还是我必须自己实现这个?

与第一个问题相切:集群/负载平衡是否对有状态 bean 有意义?我不认为现在我想到它......但这个问题仍然适用于两种类型的豆子,除非另有证明!

0 投票
2 回答
3112 浏览

jsf - 无法序列化会话 Bean - 引发警告

我正在使用 EclipseLink (JPA 2.0) 在 netbeans 中运行 JSF + Primefaces + tomcat 6.0.32 的环境。

我的应用程序运行良好,但是每次运行它时,我都会收到很多警告说不能序列化我的会话 bean,并为每个会话 bean 显示这样的块:

问题是我的会话 bean 已经实现了可序列化。那么我能做些什么来解决这个问题呢?

谢谢 !

---- 添加信息 07/20/2012 ----

我从会话 bean 中引用 EntityManager 的唯一一点是当我在 getter 属性中创建 jpaController 时,如下所示:

那是因为我这样定义了 jpaController 构造函数:

0 投票
1 回答
1842 浏览

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]

我不确定为什么会遇到这个问题。如何解决这个问题呢?

0 投票
2 回答
10451 浏览

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 :

这是手动或会话的控制器。createdestroy

这是监听会话销毁的HttpSessionListener ,我需要访问Access会话范围 bean的内容。

下面的异常在v.getSerial().

最后,这是我的web.xml

正如我所说,当我在控制器的方法中使会话无效时,一切都很好destroy

更新 1:找到可能的解决方案

出现问题是因为需要一个请求才能 Spring 访问会话 bean。事件虽然我们有一个关联到线程的上下文,但没有请求。

这里有一些可能的选择:

  1. 按照alexwen的建议实现接口 DisposableBean 。这意味着将业务逻辑移动到模型对象[here]
  2. 实施alexwenDestructionAwareBeanPostProcessor也建议的。这意味着您需要在进行任何处置[here]之前检查要处置的 bean 是否为 a ;Access
  3. 直接从会话中检索 bean。这种方式不是一个很好的方式,因为您使用未记录的行为来实现结果,但确实有效[here]
  4. 模拟一个 servlet 请求并将其属性绑定到 Thread 通过RequestContextHolder. 这也会导致未记录的行为,可以在未来的版本中进行更改[这里]

我没有选择最后两个,因为它们没有记录。另外,我不喜欢在一个特定的豆子之后清除每个豆子的想法。由于我也不想将业务逻辑混合到我的模型 bean 中,所以我最终创建了一个@Service创建 bean 并且还有一个方法的destroy方法。

此方法由访问 bean 的处置负责。我在 beanDisposableBean上实现了接口并将服务Access注入AccessManagerAccessbean 并调用服务destroy方法。该服务如下所示:

0 投票
1 回答
871 浏览

java - 应用程序关闭时清理 JSF 会话范围 bean

当 JSF 应用程序关闭或 tomact 关闭时,我需要使活动会话对象无效并清理。以下是我在 application scoped bean 中编写的代码

并且以下被覆盖 HttpSessionListener

运行此代码时

没有被执行。我错过了什么?谢谢。