2012-04-16 15 views
2

私はJBoss 4.2.2を実行しています。私は両方に正しいコードを決定しようとしている:プログラムでJBoss 4.2.2接続プールをフラッシュする

  1. 検索org.jboss.resource.connectionmanager.JBossManagedConnectionPool
  2. は、プールとのフラッシュ()操作を実行します。

回答がありませんでした。私はこれがもう一つのものにならないことを願っています。

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

答えて

2

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

enter image description here

のObjectNameは次のとおりjboss.jca:名= DefaultDS、サービス= ManagedConnectionPool

次に、JNDIでRMIAdaptorを調べます。これは、のflush操作をターゲット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[]); 
+0

Iの避難所を」他の優先事項が現れたので、これをテストすることができました。それは私の待ち行列にあります、そして、私はそれを試してみましたが、私はここに戻ってくるでしょう。 –