- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是 EJB 的新手。背景:我有一个 MDB 使用 WebSphere 默认消息传递提供程序接收 MapMessages,它有一个 java.sql.DataSource 来做一些工作,使用准备语句、jdbc 事务等。我在 ibm-ejb-bnd.xml 中设置了 MDB 和ejb-jar.xml 使用具有激活规范和目标名称的 JCA 适配器。我在 ejb-jar 和 ibm-ejb-jar-bind 中添加了一个 java.sql.DataSource。我还在 MessageListener 中添加了带有 @Resource 注释的 DataSource。
我无法理解的 2 个场景(第一个场景已修复,请参阅更新)...
容器管理的 MDB:DataSource 驱动程序与 XA 不兼容,因此我在 WebSphere 中启用了“Last Participant Support”。尽管如此,当 MDB 事务类型设置为 Container 时,我在提交时收到错误:
[11/28/11 10:56:10:988 MST] 0000002e RegisteredRes E WTRN0063E: An illegal attempt to commit a one phase capable resource with existing two phase capable resources has occurred.
也许这是因为在 DataSource 提交后,返回到 MessageListener,后者提交使其成为最后一个参与者?我相信 WAS 7 中的默认消息传递提供程序是 XA 兼容的,尽管我还没有看到任何明确说明的文档。
消息在第一个错误后立即重新运行 4 次(尽管根据 WebSphere 中的 ActivationSpec 应该有 30 秒的延迟)。每次都抛出相同的错误。根据 MessageListener,它没有错误地完成,所以这个错误是美妙的隐形容器管理事务的一部分。我认为我不需要 XA 全局事务,因为除了 JMS 之外只有一个数据源,我以编程方式处理事务回滚。还有 JMS 消息,MDB 是异步的,AUTO-ACKNOWLEDGE。一旦收到消息,就可以对其进行确认。
如果我引入了一个应用程序错误,所以出现了异常,我会立即看到这个错误 5 次(没有延迟):
[11/28/11 10:16:18:857 MST] 0000002b LocalExceptio E CNTR0020E: EJB threw an unexpected (non-declared) exception during invocation of method "onMessage" on bean...
所以我切换到......
Bean 管理的 MDB:提交在没有 XA 错误的情况下工作,并且只发生一次。然而,错误处理仍然没有像我预期或想要的那样表现!在 MessageListener 类中,捕获的异常抛出一个 EJB 异常,我认为这应该导致 MDB 具有我想要的行为:异常的原因对我来说并不重要,当 MDB 抛出捕获的异常时,不应该MDB 是否根据 WebSphereActivationSpec 中的属性重试? 相反,该消息会立即转到 MessageListener 5 次,并立即抛出与容器管理的 MDB 相同的错误:“EJB 抛出意外(未声明)的异常...”
如果我抛出 RuntimeException,“unexpeded (non-declared) expecetion”消息不会发生,但消息仍会立即重试 4 次,而不是等待重试延迟。
感谢阅读,非常感谢任何帮助或见解!
更新:我最终通过将数据源切换为 XA 兼容解决了 XA 兼容性问题。在 WAS 管理控制台中:Resources->JDBC Providers->DB2 Universal JDBC Driver Provider->Change implementation class name to: com.ibm.db2.jcc.DB2XADataSource
虽然消息失败,但我仍然遇到同样的问题。它会立即重试,而不是根据 WAS 中的 ActivationSpec。
最佳答案
我相信激活规范中的重试间隔是关于关闭的连接,而不是失败的消息。
您应该在 SIB Destination 中定义您想要的间隔
巴士 > 巴士 > 目的地 > 目的地
查看异常目的地
每条消息的最大失败传递是消息在宣布失败之前将被发送多少次(默认为 5,这就是为什么你会再得到 4 次)
当消息失败时,它将移动到异常目标队列,或者如果设置为 None 将在一定时间后重试,该时间是在总线级别设置的,但可以为每个目标覆盖(请参阅覆盖消息引擎阻塞默认重试超时)
关于java - WebSphere 7 中的消息驱动 bean (EJB3)、XA 事务、错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8300009/
我们正在构建一个以 Websphere 7 作为目标环境的 web 应用程序,它使用 CXF 连接到 web 服务。我们已经使用 Jetty 在本地完成了测试,一切顺利。我们现在正在尝试在 Websp
我是一名 Java 程序员,想要开始使用 Websphere 应用程序服务器。有人可以建议一些好的介绍吗?书籍/文章/链接等 最佳答案 IBM 的红皮书是很好的入门资源,还有另一篇关于 IBM 开发人
我试图在 Websphere LP server.xml 文件中映射我的服务器公共(public) IP 地址,但是当我尝试从外部访问它时,出现连接错误。我尝试给 host="localhost"并尝
我试图在 Websphere LP server.xml 文件中映射我的服务器公共(public) IP 地址,但是当我尝试从外部访问它时,出现连接错误。我尝试给 host="localhost"并尝
在将应用程序从单个 Websphere Application Server 迁移到 Websphere 集群之前,我们应该注意什么 最佳答案 这是我根据经验列出的 list 。它并不完整,但应涵盖最
我已经为 WebSphere 中的容器设置了一些自定义属性,但我不知道如何读取这些属性。我试过 System.getProperty(...),但它是空的。 我看过对 JMX 的引用,但想知道是否有明
我目前正在研究 IBM Websphere Application Server 和 IBM Websphere Process Server 之间的区别? 我知道 Process Server 就像
我正在处理一个应用程序,它需要知道它是在 WAS 上运行还是在 Liberty Profile 上运行。 在 WAS 上,它必须调用 Admin API,但在 Liberty Profile 上,它必
我很难解决“找不到委托(delegate)人...”的问题。我阅读了所有文章,但我已成功将 ear 文件安装到 WAS 8.5 中。 此应用程序要求最终用户进行 LDAP 身份验证才能登录。我的 LD
我正在开发许多用于管理 WAS 基础设施的脚本,我觉得 IBM 的某个人搞砸了 wsadmin故意。这不可能是意外。 这是一个“简单”的例子: for node in AdminConfig.list
我删除了 C:\Program Files (x86)\IBM\WebSphere\AppServer\profiles 中的配置文件,它仍然显示在配置文件管理工具中,如何删除配置文件管理工具中的配置
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 8 年前。 Improv
我有一个 WebSphere 应用程序服务器 8,我在其中部署了一个企业应用程序。现在我想让该应用程序的 Web GUI 可以访问。因此,我设置了一个端口 (9080),添加了一个 Web 容器传输链
是否可以用 Weld 替换 WebSphere 8 的 CDI 提供程序 (OpenWebBeans)?如果做不到这一点,是否有任何方法可以在 WebSphere 中完全禁用 CDI? 我为什么需要这
我有一个带有@local 和@remote 注释的无状态EJB SessionBean。该代码在 weblogic 服务器中运行良好。但是,将其部署到 Websphere 时会出现以下异常。 bm.e
我们正在尝试安装 Websphere 应用程序服务器的补丁。但已经获得了 Websphere 商务服务器的说明。所以只是想知道两者是否相同并且可以应用相同的指令。 我们是否需要 root 访问权限来执
我已经安装了 WebSphere Liberty 配置文件 8.5 。我可以使用 http://localhost:9080 访问 WebSphere 服务器 但不确定如何启动 Admin Conso
我在 WebSphere 应用程序服务器上将一个依赖 jar 扔到我爆炸的 EAR 中。我需要停止/启动 EAR 才能让 WS 执行新代码。有没有办法从命令行执行此操作? 最佳答案 尝试运行这样的东西
我全新安装了 Wesphere 6.1 Fixpack 23。我部署了一个需要 MQSeries JMS 队列的应用程序。我设置了一个基于 MQSeries 提供者的请求和回复队列以及一个基于 MQS
session 超时后是否可以将用户带到自定义网页?在 websphere 中要设置的参数是什么? 最佳答案 我不知道 WAS 中有这样的设置。 我认为您最好的机会是实现 Filter这将检查 ses
我是一名优秀的程序员,十分优秀!