在 Glassfish 中管理不受支持的事务属性
Managing unsupported transaction attribute in Glassfish
我需要用事务属性 NEVER 注释消息驱动的 bean
@TransactionAttribute(value=NEVER)
并将企业应用程序部署到许多应用程序服务器。不幸的是,其中一个 (Glassfish 3.1.2) 没有 accept/support 这样的属性
Invalid transaction attribute for message-driven bean
在 Glassfish 中 运行 时永远不会使用该 bean,但它必须是代码库的一部分。要解决不受支持的属性,可以使用
对其进行注释
@TransactionAttribute(value=NOT_SUPPORTED)
我的问题是:在构建版本时我怎么可能管理这个?我想到了一种 "brute force" 方法:保留两个版本的 MDB.java 文件(一个作为默认版本,一个用于 Glassfish),然后两次调用构建过程,每次都替换 .java 文件.但是会有更聪明的方法吗?
我认为,对消息驱动的 bean 使用事务属性 NEVER
没有意义,因为 MDB 没有客户端。以下是 EJB 3.2 规范的摘录:
For a message-driven bean’s message listener methods (or interface), only the REQUIRED and NOT_SUPPORTED transaction attributes may be used.
否则,您可以使用部署描述符覆盖 @TransactionAttribute(value=NEVER)
。伪代码如下所示:
<ejb-jar>
...
<assembly-descriptor>
...
<container-transaction>
<method>
<ejb-name>here_mdb_name</ejb-name>
<method-name>onMessage</method-name>
</method>
<trans-attribute>NotSupported</trans-attribute>
</container-transaction>
..
</assembly-descriptor>
</ejb-jar>
并使用构建工具将描述符文件复制到jar文件的META-INF
文件夹中。这应该有效,因为部署描述符中的设置会覆盖注释中的设置。
我需要用事务属性 NEVER 注释消息驱动的 bean
@TransactionAttribute(value=NEVER)
并将企业应用程序部署到许多应用程序服务器。不幸的是,其中一个 (Glassfish 3.1.2) 没有 accept/support 这样的属性
Invalid transaction attribute for message-driven bean
在 Glassfish 中 运行 时永远不会使用该 bean,但它必须是代码库的一部分。要解决不受支持的属性,可以使用
对其进行注释@TransactionAttribute(value=NOT_SUPPORTED)
我的问题是:在构建版本时我怎么可能管理这个?我想到了一种 "brute force" 方法:保留两个版本的 MDB.java 文件(一个作为默认版本,一个用于 Glassfish),然后两次调用构建过程,每次都替换 .java 文件.但是会有更聪明的方法吗?
我认为,对消息驱动的 bean 使用事务属性 NEVER
没有意义,因为 MDB 没有客户端。以下是 EJB 3.2 规范的摘录:
For a message-driven bean’s message listener methods (or interface), only the REQUIRED and NOT_SUPPORTED transaction attributes may be used.
否则,您可以使用部署描述符覆盖 @TransactionAttribute(value=NEVER)
。伪代码如下所示:
<ejb-jar>
...
<assembly-descriptor>
...
<container-transaction>
<method>
<ejb-name>here_mdb_name</ejb-name>
<method-name>onMessage</method-name>
</method>
<trans-attribute>NotSupported</trans-attribute>
</container-transaction>
..
</assembly-descriptor>
</ejb-jar>
并使用构建工具将描述符文件复制到jar文件的META-INF
文件夹中。这应该有效,因为部署描述符中的设置会覆盖注释中的设置。