これが役立つかどうかはわかりませんが、次のとおりです。
EAR をデプロイするとき、EAP は で NumberFormatException をスローしModule "deployment.HibernateMBeanBug.ear.HibernateMBeanBug-persistence.jar:main" from Service Module Loader
、「メイン」部分が数値であると想定します。JConsole アクセスでは、MBean の反復時に NullPointerException がスローされます。
次の行にあります。
doIterate(child, childAddress);
MBean を検出するとき。child = null および childAddress=
[
("deployment" => "HibernateMBeanBug.ear"),
("subdeployment" => "HibernateMBeanBug-persistence.jar"),
("subsystem" => "jpa"),
("hibernate-persistence-unit" => "HibernateMBeanBug.ear/HibernateMBeanBug-persistence.jar#AnyPU"),
("entity-cache" => "org.hibernate.cache.spi.UpdateTimestampsCache")
]
次に、次の反復で「子」の子を要求すると、NPE にヒットします。
どちらの例外も、デバッガーでキャッチできます。NPE のスタック トレースは次のとおりです。
Daemon System Thread [RMI TCP Connection(24)-192.168.11.2] (Suspended (exception NullPointerException))
RootResourceIterator<T>.doIterate(Resource, PathAddress) line: 49
RootResourceIterator<T>.doIterate(Resource, PathAddress) line: 55
RootResourceIterator<T>.doIterate(Resource, PathAddress) line: 55
RootResourceIterator<T>.doIterate(Resource, PathAddress) line: 55
RootResourceIterator<T>.doIterate(Resource, PathAddress) line: 55
RootResourceIterator<T>.doIterate(Resource, PathAddress) line: 55
RootResourceIterator<T>.iterate() line: 39
ModelControllerMBeanHelper.queryNames(ObjectName, QueryExp) line: 144
ModelControllerMBeanServerPlugin.queryNames(ObjectName, QueryExp) line: 166
PluggableMBeanServerImpl.queryNames(ObjectName, QueryExp) line: 308
RMIConnectionImpl.doOperation(int, Object[]) line: 1506
RMIConnectionImpl.access$300(RMIConnectionImpl, int, Object[]) line: 97
RMIConnectionImpl$PrivilegedOperation.run() line: 1328
RMIConnectionImpl.doPrivilegedOperation(int, Object[], Subject) line: 1420
RMIConnectionImpl.queryNames(ObjectName, MarshalledObject, Subject) line: 590
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: 606
UnicastServerRef2(UnicastServerRef).dispatch(Remote, RemoteCall) line: 322
Transport$1.run() line: 177
Transport$1.run() line: 174
AccessController.doPrivileged(PrivilegedExceptionAction<T>, AccessControlContext) line: not available [native method]
TCPTransport(Transport).serviceCall(RemoteCall) line: 173
TCPTransport.handleMessages(Connection, boolean) line: 556
TCPTransport$ConnectionHandler.run0() line: 811
TCPTransport$ConnectionHandler.run() line: 670
ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: 1145
ThreadPoolExecutor$Worker.run() line: 615
Thread.run() line: 724
org.hibernate.cache.spi.UpdateTimestampsCache は にあるjboss-eap-6.1\modules\system\layers\base\org\hibernate\main\hibernate-core-4.2.0.CR1.jar
ため、更新するだけでこの問題を解決できる場合があります。
少なくとも問題は完全に再現可能であるため、issues.jboss.orgに問題を報告します。
更新: jar を 4.2.6.Final に更新してテストしましたが、問題は解決しませんでした。
更新 2:
persistence.xml の第 2 レベル キャッシュに追加すると、次のようになります。
<property name="hibernate.cache.use_second_level_cache" value="true" />
問題は解決します。どうやら、query_cache を有効にしている場合、MBean 反復ロジックはエンティティ キャッシュ (第 2 レベルのキャッシュ) も検出することを想定しており、定義されていない場合は NPE をスローします。値が「false」の場合、問題は解決しないため、有効にする必要があります。
以上はあくまでも推測ですので、的外れかもしれません。ただし、二次キャッシュを追加すると、何らかの理由でうまくいくようです。