- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 EJB3.1 bean 初始化遇到困难,更具体地说,由于感知到的事务回滚而导致它失败,即使我已经用 @TransactionAttribute(NOT_SUPPORTED)
标记了 bean .这应该意味着任何客户端事务都会在 bean 方法进入时暂停,直到退出(何时恢复。这绝对是我想要的事务方法。
代码和错误的“要点”如下(注意其中一些是手动操作以隐藏细节,但都是相关且具有代表性的):
@Singleton(name = "MyClass")
@ConcurrencyManagement(value = BEAN)
@TransactionAttribute(value = NOT_SUPPORTED)
@Local(MyInterface.class)
public class MyClass implements MyInterface {
@PostConstruct
public void init() throws MyException {
try {
...
} catch LowerLevelException e) {
throw new MyException("problem", e);
}
}
public Object doSomething(...) throws MyException {
...
}
...
}
javax.ejb.NoSuchEJBException: Singleton MyClass(Application: my-ear, EJBComponent: my-ejb.jar) failed to initialize.
weblogic.ejb.container.InternalException: Transaction marked rollback or not expected transaction status: 4
MyClass#init
正在完全成功地执行,没有任何问题/异常。 #init
第一次调用我的#doSomething
来自客户端代码的方法(作为构建后的一部分)。 MyClass#doSomething
之间存在大量堆栈间接级别。下至 #init
并且在这些层之一内部引发异常。它是在 WLS Singleton session bean 管理代码中提出的。见下文... MyClass_fefgu8_Impl(MyClass).init() line: 96
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43
Method.invoke(Object, Object...) line: 601
Jsr250Metadata.invokeLifecycleMethod(Object, Method, Object[]) line: 393
InterceptionMetadata(Jsr250Metadata).invokeLifecycleMethods(Object, LifecycleEvent) line: 365
InterceptionMetadata.invokeLifecycleMethods(Object, LifecycleEvent) line: 403
EjbComponentCreatorImpl.invokePostConstruct(Object, String) line: 80
SingletonSessionManager.constructAndInitBean() line: 369
SingletonSessionManager.access$300(SingletonSessionManager) line: 63
SingletonSessionManager$SingletonLifecycleManager.doActualInit() line: 798 <== InternalException raised here
SingletonSessionManager$SingletonLifecycleManager.initInternal(boolean) line: 744
SingletonSessionManager$SingletonLifecycleManager.getBean() line: 648
SingletonSessionManager.getBeanFor(InvocationWrapper) line: 285
SingletonSessionManager.preInvoke(InvocationWrapper) line: 147
SingletonLocalObject(BaseLocalObject).getBeanInstance(InvocationWrapper) line: 146
SingletonLocalObject(BaseLocalObject).preInvoke(InvocationWrapper, ContextHandler, boolean, boolean) line: 103
SingletonLocalObject(BaseLocalObject).__WL_preInvoke(InvocationWrapper, ContextHandler) line: 67
SessionLocalMethodInvoker.invoke(Invokable, BaseLocalObject, InvocationWrapper, Object[], int) line: 20
MyClass_fefgu8_MyInterfaceImpl.doSomething(String, String, String, String) line: not available
SingletonSessionManager$SingletonLifecycleManager.doActualInit() line: 798
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.ejb</artifactId>
<version>3.1</version>
<scope>provided</scope>
</dependency>
SingletonSessionManager$SingletonLifecycleManager.doActualInit
工作,但没有很多关于它的在线。
@TransactionAttribute
注释似乎让我摆脱了失败。这很奇怪,因为默认值应该是
TransactionAttributeType#Required事实上,我们在堆栈跟踪中有一个附加层,如果我调试时间过长,那么我的 bean init 中就会出现事务超时。
SingletonSessionManager.constructAndInitBean() line: 377
wrap weblogic.ejb.container.internal.InvocationWrapper (id=15676)
L callerTx weblogic.transaction.internal.ServerTransactionImpl (id=15681)
L invokeTx weblogic.transaction.internal.ServerTransactionImpl (id=15683)
@TransactionAttribute
场景并尝试观看
ServerTransactionImpl
.
SingletonSessionManager#postCallback
从
SingletonSessionManager#constructAndInitBean
调用在上面的原始堆栈跟踪中。 (我需要确认这一点,因为我的线索是通过交易案例来确定的)。如果/何时会报告,但似乎我们在此处尝试回滚不存在的事务时可能会失败。
最佳答案
注:这最初不是一个答案,而只是一些更有用的信息,用于挖掘此类问题的答案,因为该领域确实没有太多在线信息。经过一番努力,终于找到了原因和答案。答案保留在其原始格式中,新发现记录为编辑和调试帮助保持原样,以希望简化其他有类似问题的调试。这是一个黑暗的地方。
好吧,对于上述问题仍然没有明确的答案,问题似乎已经消失了。
不过,我发现(查看另一个 NoSuchEJBException
问题)根本原因已被 WLS 堆栈吞噬。
这是开始寻找 SingletonBean failed to init NosuchEJBException 问题的明智之选方法(即无法创建您的 bean):
SingletonSessionManager$SingletonLifecycleManager.doActualInit() line: 819
SingletonSessionManager$SingletonLifecycleManager.initInternal(boolean) line: 744
SingletonSessionManager$SingletonLifecycleManager.getBean() line: 648
SingletonSessionManager.getBeanFor(InvocationWrapper) line: 285
PostConstruct
中。 s 在较低的水平上升高,如上。但是,在下面的堆栈中,
NoSuchEJBException
替换为
NoSuchEJBException
被包裹起来并且原因丢失了。奇怪的是,它甚至可能将自己设置为原因(调试器有点困惑):
SingletonSessionManager#getBeanFor
InternalError
中不存在数据源。 JNDI 名称。由于前面提到的异常处理问题,这根本没有记录。一旦我通过并找到原因,这很容易解决。很遗憾不得不花这么多时间来发现它。
@Resource(name="...")
,这应该是无关紧要的。但显然不是这样。调试显示,对于这个和
@TransactionAttribute(NOT-SUPPORTED)
,有一个
@TransactionAttribute(NEVER)
在
invokeTx
的级别使用并在
SingletonSessionManager#constructAndInitBean
内管理.因此,超时将导致回滚,导致
InvocationWrapper
, 映射到
InternalException
,被另一个
NoSuchEJBException
吞下导致垃圾错误消息。
NoSuchEJBException
时设置和管理了 invokeTx .我们向 Oracle 提出了一个错误,该错误已给它 2 级严重性。同时,我们已将可能耗时(与网络相关)的代码移出
@TransactionAttribute(NOT-SUPPORTED)
。方法作为解决方法。
@PostConstruct
中的代码不会违反事务超时。 .这将包括基于延迟的超时(我们的问题是间歇性的,因为它取决于访问的地理“服务器”)。
@PostConstruct
) 方法中放置一个断点并展开,直到您看到调试值中出现异常。 @PostConstruct
的位置。上面列出并找到进入 init 方法的方法。然后,只需注意第一次引发异常的时间。请注意,您可能必须将断点放在 #doActualInit
内。通过代理层接近这个(或滚动你自己的)。 InvocationHandler#invoke
中放置一个断点来观察展开堆栈。和展开或在init
和观看。 关于jakarta-ee - @Singleton bean 在标记为 TransactionAttribute=NOT_SUPPORTED 时无法初始化,因为不是预期的事务状态 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17112959/
SQLite、Content provider 和 Shared Preference 之间的所有已知区别。 但我想知道什么时候需要根据情况使用 SQLite 或 Content Provider 或
警告:我正在使用一个我无法完全控制的后端,所以我正在努力解决 Backbone 中的一些注意事项,这些注意事项可能在其他地方更好地解决......不幸的是,我别无选择,只能在这里处理它们! 所以,我的
我一整天都在挣扎。我的预输入搜索表达式与远程 json 数据完美配合。但是当我尝试使用相同的 json 数据作为预取数据时,建议为空。点击第一个标志后,我收到预定义消息“无法找到任何内容...”,结果
我正在制作一个模拟 NHL 选秀彩票的程序,其中屏幕右侧应该有一个 JTextField,并且在左侧绘制弹跳的选秀球。我创建了一个名为 Ball 的类,它实现了 Runnable,并在我的主 Draf
这个问题已经有答案了: How can I calculate a time span in Java and format the output? (18 个回答) 已关闭 9 年前。 这是我的代码
我有一个 ASP.NET Web API 应用程序在我的本地 IIS 实例上运行。 Web 应用程序配置有 CORS。我调用的 Web API 方法类似于: [POST("/API/{foo}/{ba
我将用户输入的时间和日期作为: DatePicker dp = (DatePicker) findViewById(R.id.datePicker); TimePicker tp = (TimePic
放宽“邻居”的标准是否足够,或者是否有其他标准行动可以采取? 最佳答案 如果所有相邻解决方案都是 Tabu,则听起来您的 Tabu 列表的大小太长或您的释放策略太严格。一个好的 Tabu 列表长度是
我正在阅读来自 cppreference 的代码示例: #include #include #include #include template void print_queue(T& q)
我快疯了,我试图理解工具提示的行为,但没有成功。 1. 第一个问题是当我尝试通过插件(按钮 1)在点击事件中使用它时 -> 如果您转到 Fiddle,您会在“内容”内看到该函数' 每次点击都会调用该属
我在功能组件中有以下代码: const [ folder, setFolder ] = useState([]); const folderData = useContext(FolderContex
我在使用预签名网址和 AFNetworking 3.0 从 S3 获取图像时遇到问题。我可以使用 NSMutableURLRequest 和 NSURLSession 获取图像,但是当我使用 AFHT
我正在使用 Oracle ojdbc 12 和 Java 8 处理 Oracle UCP 管理器的问题。当 UCP 池启动失败时,我希望关闭它创建的连接。 当池初始化期间遇到 ORA-02391:超过
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve
引用这个plunker: https://plnkr.co/edit/GWsbdDWVvBYNMqyxzlLY?p=preview 我在 styles.css 文件和 src/app.ts 文件中指定
为什么我的条形这么细?我尝试将宽度设置为 1,它们变得非常厚。我不知道还能尝试什么。默认厚度为 0.8,这是应该的样子吗? import matplotlib.pyplot as plt import
当我编写时,查询按预期执行: SELECT id, day2.count - day1.count AS diff FROM day1 NATURAL JOIN day2; 但我真正想要的是右连接。当
我有以下时间数据: 0 08/01/16 13:07:46,335437 1 18/02/16 08:40:40,565575 2 14/01/16 22:2
一些背景知识 -我的 NodeJS 服务器在端口 3001 上运行,我的 React 应用程序在端口 3000 上运行。我在 React 应用程序 package.json 中设置了一个代理来代理对端
我面临着一个愚蠢的问题。我试图在我的 Angular 应用程序中延迟加载我的图像,我已经尝试过这个2: 但是他们都设置了 src attr 而不是 data-src,我在这里遗漏了什么吗?保留 d
我是一名优秀的程序员,十分优秀!