我正在运行 JBoss 4.2.2。我正在尝试确定两者的正确代码:
- 查找 org.jboss.resource.connectionmanager.JBossManagedConnectionPool
- 对所述池执行 flush() 操作。
我发现了其他几个没有答案的问题。我希望这不会成为他们中的另一个。
到目前为止我发现的最接近的问题:https ://community.jboss.org/message/637784
我正在运行 JBoss 4.2.2。我正在尝试确定两者的正确代码:
我发现了其他几个没有答案的问题。我希望这不会成为他们中的另一个。
到目前为止我发现的最接近的问题:https ://community.jboss.org/message/637784
这是使用快速 groovy 示例的基础知识。首先,您需要在您的类路径中添加 jboss-4.2.2/client/jbossall-client.jar。接下来,您需要数据源的 JMX ObjectName。在http://localhost:8080/jmx-console/的 JMX 控制台中找到它可能会有所帮助,或者您已部署。所以 ObjectName 的字符串值是domain + ":" + the properties。
例如:
ObjectName 是: jboss.jca:name=DefaultDS,service=ManagedConnectionPool。
接下来,在 JNDI 中查找 RMIAdaptor。这是 MBeanServer 接口,允许您在目标 MBean 上调用刷新操作。然后调用调用。而已。
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[]);