EAP 6 は、データソースオブジェクトでリモートの JNDI 検索をサポートしますか?

Solution Verified - Updated -

Environment

  • Red Hat JBoss Enterprise Application Platform (EAP)
    • 6.x

Issue

  • EAP 6 は、データソースオブジェクトでリモートの JNDI 検索をサポートしますか?

  • データソースでリモートの JNDI 検索を行うことはできますか?

  • スタンドアロンクライアントを使用して DataSource にリモートでアクセスすると、以下の例外が発生します。

java MySql_Client remote://localhost:4447

Oct 10, 2012 10:24:02 PM org.xnio.Xnio <clinit>
INFO:XNIO Version 3.0.4.GA-redhat-1
Oct 10, 2012 10:24:02 PM org.xnio.nio.NioXnio <clinit>
INFO:XNIO NIO Implementation Version 3.0.4.GA-redhat-1
Oct 10, 2012 10:24:02 PM org.jboss.remoting3.EndpointImpl <clinit>
INFO:JBoss Remoting version 3.2.8.GA-redhat-1

     Got InitialContext ic: javax.naming.InitialContext@651dba45

    About to look up jndi name MySqlDS

Oct 10, 2012 10:24:03 PM org.jboss.naming.remote.protocol.v1.RemoteNamingStoreV1$MessageReceiver handleMessage
ERROR: org.jboss.remoting3.MessageCancelledException
Exception in thread "main" org.jboss.naming.remote.protocol.NamingIOException:Failed to lookup [Root exception is java.io.NotSerializableException: org.jboss.jca.core.connectionmanager.pool.strategy.OnePool]
    at org.jboss.naming.remote.client.ClientUtil.namingException(ClientUtil.java:49)
    at org.jboss.naming.remote.protocol.v1.Protocol$1.execute(Protocol.java:104)
    at org.jboss.naming.remote.protocol.v1.RemoteNamingStoreV1.lookup(RemoteNamingStoreV1.java:79)
    at org.jboss.naming.remote.client.RemoteContext.lookup(RemoteContext.java:79)
    at org.jboss.naming.remote.client.RemoteContext.lookup(RemoteContext.java:83)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at MySql_Client.main(MySql_Client.java:37)
Caused by: java.io.NotSerializableException: org.jboss.jca.core.connectionmanager.pool.strategy.OnePool
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:891)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1063)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:998)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:885)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1063)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:885)
    at org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:62)
    at org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:119)
    at org.jboss.naming.remote.protocol.v1.Protocol$1$2.write(Protocol.java:138)
    at org.jboss.naming.remote.protocol.v1.WriteUtil.write(WriteUtil.java:61)
    at org.jboss.naming.remote.protocol.v1.Protocol$1.handleServerMessage(Protocol.java:128)
    at org.jboss.naming.remote.protocol.v1.RemoteNamingServerV1$MessageReciever$1.run(RemoteNamingServerV1.java:73)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)
Caused by: an exception which occurred:
    in field pool
    in field cm
    in object org.jboss.jca.adapters.jdbc.WrapperDataSource@2bb57fd1

Resolution

  • 機能上は、EAP 6 のデータソースでリモート JNDI 検索を実行することはできません。EAP 6 より前のバージョンでは可能でしたが、推奨はされていませんでした (こちらのナレッジを参照)。この機能は EAP 6 から削除されています。データソースにアクセスする際の中継手段として EJB を使用し、データの処理方法について適切な制限を定義することが推奨されます。

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.