2

JBoss 4.2.2 を実行しています。私は両方に正しいコードを決定しようとしています:

  1. org.jboss.resource.connectionmanager.JBossManagedConnectionPool をルックアップします。
  2. 上記のプールで flush() 操作を実行します。

答えのない他のいくつかの質問を見つけました。これがまた別のものにならないことを願っています。

これまでに見つけた最も近い質問: https://community.jboss.org/message/637784

4

1 に答える 1

2

これは、急ごしらえのグルーヴィーな例を使用した基本です。まず、クラスパスにjboss-4.2.2/client/jbossall-client.jarが必要です。次に、データ ソースの JMX ObjectName が必要です。これは、 http://localhost:8080/jmx-console/の JMX コンソールで見つけるか、デプロイした方法で見つけると役立つ場合があります。したがって、ObjectName の文字列値はドメイン + ":" + プロパティです。

例えば:

ここに画像の説明を入力

ObjectName は jboss.jca:name=DefaultDS,service=ManagedConnectionPoolです。

次に、JNDI で RMIAdaptor を検索します。これは、ターゲット MBean でフラッシュ操作を呼び出すことができる MBeanServer インターフェースです。次に、呼び出しを呼び出します。それでおしまい。

import javax.management.*;
import javax.naming.*;

p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
p.put(Context.PROVIDER_URL, "localhost:1099");
ctx = new InitialContext(p);
rmiAdaptor = ctx.lookup("jmx/rmi/RMIAdaptor");
rmiAdaptor.invoke(new ObjectName("jboss.jca:name=DefaultDS,service=ManagedConnectionPool"), "flush", [] as Object[], [] as String[]);

わかる ?

=====更新=====

JBoss JVM 内からこれを実行する場合、JNDI セットアップは必要ありません。

import javax.management.*;
import org.jboss.mx.util.MBeanServerLocator;

MBeanServer server = MBeanServerLocator.locateJBoss();
server.invoke(new ObjectName("jboss.jca:name=DefaultDS,service=ManagedConnectionPool"), "flush", [] as Object[], [] as String[]);
于 2012-04-17T01:36:11.233 に答える