JConsoleを使用してMBeanプロパティを変更できません。次のコマンドで呼び出されるThreadingBeanがあります。
public static void main(String[] args) throws Exception {
// JMX
new SimpleJmxAgent();
// spring executor context
ApplicationContext ctx = new FileSystemXmlApplicationContext(
"src/resources/ThreadContent.xml");
startThreads(ctx);
}
private static void startThreads(ApplicationContext ctx) {
TaskExecutor tE = (TaskExecutor) ctx.getBean("TaskExecutor");
System.out.println("Starting threads");
for (int i = 0; i < 10; i++) {
tE.execute(new RepeatingGrpPoC());
}
ThreadContent.xmlには、すべてのデフォルトのプロパティ値が含まれています。
SimpleJmxAgentは次のようになります。
public SimpleJmxAgent() {
mbs = ManagementFactory.getPlatformMBeanServer();
// Spring context - used to load MBeans
XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource(
"resources/JMXcontent.xml"));
// Unique identification of MBeans
ThreadPoolManager threadBean = (ThreadPoolManager) factory.getBean("ThreadPoolBean");
ObjectName threadName = null;
try {
// Uniquely identify the MBeans and register them with the platform MBeanServer
threadName = new ObjectName("THREADING:name=ThreadBean");
mbs.registerMBean(threadBean, threadName);
} catch(Exception e) {
e.printStackTrace();
}
ThreadPoolManagerは、次のようなThreadプロパティのgetterメソッドとsetterメソッドにアクセスできるようにするために、ThreadPoolTaskExecutorから継承しています。
public void setCorePoolSize(int corePoolSize)
編集:
私は以下の使用を実装しました:
public void setCorePoolSize(int corePoolSize){
super.setCorePoolSize(corePoolSize);
}
に包まれて:
public void changeCorePoolSize(int x){
setCorePoolSize(x);
}
これで、操作が[MBeans]タブに表示されます。ただし、属性は使用されているものとは異なる値として表示されます。ThreadContext.xmlに設定しました
property name="corePoolSize" value="5"
ただし、表示属性がデフォルト値である1に設定されている場合。操作を介してJconsoleを介してこれを変更できchangeCorePoolSize
ますが、表示される値を変更するのは見た目の効果だけですが、5つのTaskExecutor
スレッドがまだ進行中の進行中のプロセスは変更しません。
私がしていることに何かが欠けていますか?ThreadContext.xmlを介して設定しているプロパティと、Jconsoleの属性に表示されているプロパティとの間で切断が発生する原因は何ですか?