问题标签 [seam-conversation]

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 投票
1 回答
61 浏览

batch-file - 在 Seam 中运行长批处理作业时获取服务器注销

我的要求之一是以特定格式生成平面文件。用户从 UI 中选择年份并单击生成按钮。

平面文件过程通常需要 3 到 4 个小时才能生成所有文件。当进程正在运行并正在创建平面文件时,UI 会显示正在处理作业的模式。

问题是文件生成成功后,UI 重定向到登录屏幕。相反,我想刷新显示该过程已成功完成的消息的 UI。

我正在为此寻求帮助。增加 web.xml 中的会话超时或会话超时是否有助于解决此问题?

0 投票
1 回答
418 浏览

hibernate - Jboss Seam:事务回滚后无法恢复会话

我需要一些帮助。

我正在使用 Jboss 5.1 和 Seam 2.2,Hibernate。在其中一个 UI 页面中,在更新操作期间存在数据库约束违规并且事务被回滚。在此回滚之后,如果我尝试使用该实体,我会收到以下错误:

2016-06-17 10:38:32,815 错误 [org.hibernate.LazyInitializationException] (http-127.0.0.1-8091-2) 无法延迟初始化角色集合:com.test.web.entity.Promotions.Results,没有会话或会话被关闭 org.hibernate.LazyInitializationException:未能延迟初始化角色集合:com.test.web.entity.Promotions.Results,没有会话或会话被关闭

为了重新附加实体,我在上述步骤之前调用了 refresh() 方法,并在由于 refresh() 触发选择查询时得到以下错误:

2016-06-17 10:13:32,710 错误 [org.hibernate.util.JDBCExceptionReporter] (http-127.0.0.1-8091-3) 事务 TransactionImple < ac,BasicAction:a2691f4:fb24:5763b0a4:b4 状态:ActionStatus.ABORT_ONLY > 无法继续 STATUS_MARKED_ROLLBACK;- 嵌套 throwable: (javax.transaction.RollbackException: Transaction TransactionImple < ac, BasicAction: a2691f4:fb24:5763b0a4:b4 status: ActionStatus.ABORT_ONLY > 无法继续 STATUS_MARKED_ROLLBACK)

2016-06-17 10:13:32,710 严重 [javax.enterprise.resource.webcontainer.jsf.application] (http-127.0.0.1-8091-3) javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: 可以不检查 JDBC 自动提交模式 javax.faces.el.E​​valuationException: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: 无法检查 JDBC 自动提交模式

我在“properties-service.xml”中设置了以下参数,但没有任何区别:

'org.jboss.resource.connectionmanager.TxConnectionManager.ignoreStatusMarkedForRollback=true'

在“persistence.xml”中,我有以下属性:

属性名称="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>

属性名称="hibernate.connection.release_mode" 值="after_transaction" />

您能否建议这里有什么问题以及我如何开始使用回滚后的实体?似乎“回滚”操作正在关闭会话,我没有找到任何方法来恢复它。

谢谢 !!!

0 投票
2 回答
804 浏览

java - 启动 CDI 对话并将 @ConversationScoped bean 注入无状态会话 bean

已经提出了类似的问题,但并没有完全解决我想要做的事情。我们有一个旧的基于 Seam 2.x 的应用程序,带有一个我们正在转换为 CDI 的批处理作业框架。作业框架使用 Seam Contexts 对象来启动对话。作业框架还加载了一个特定于作业的数据持有者(基本上是一个地图),然后可以通过 Seam Contexts 对象由链下的任何服务访问,包括来自 SLSB。其中一些服务可以更新地图,以便作业状态可以更改并从记录到记录进行检测。

看起来在 CDI 中,作业将@Inject是一个 CDI 对话对象,并手动开始/结束对话。我们还将定义一个ConversationScoped包含 Map ( MapBean) 的新 bean。我不清楚的是两件事:

首先,作业还需要@InjectMapBean以便在调用 Conversation.begin() 方法之前加载作业特定的数据。容器是否知道将此实例传递给调用链中的服务?

与此相关,根据这个问题Is it possible to @Inject a @RequestScoped bean into a @Stateless EJB? 应该可以将ConservationScopedbean 注入到 SLSB 中,但这似乎有点神奇。如果 SLSB 被不同的进程(作业、UI 调用等)使用,它是否会为每个调用获取单独的实例?

为澄清和简化的类结构而进行的编辑:

MapBean需要是一个ConversationScoped对象,包含作业的特定实例/运行的数据。

工作将是ConversationScoped

该作业可能调用 SLSB,并且当前会话范围的实例MapBean需要可用:

我们的工作和 SLSB 框架相当复杂,SLSB 可以调用许多其他服务或本地实例化的业务逻辑类,并且每个都需要访问会话范围的MapBean.