0

Spring アプリケーション コンテキストで MBeanServerConnection を動的に定義したいので、prepareBeanFactory() を介してそのファクトリを登録しています。Bean がコンテキストに存在することがわかりますが、getBean() を実行すると、null が返されます。

助言がありますか?

    public static void main(String[] args) throws IOException, Exception, IntrospectionException, MalformedObjectNameException, ReflectionException {
    final AbstractApplicationContext context = new ClassPathXmlApplicationContext() {
        protected void prepareBeanFactory(ConfigurableListableBeanFactory beanFactory) {
            super.prepareBeanFactory(beanFactory);
            final MBeanServerConnectionFactoryBean clientConnection = new MBeanServerConnectionFactoryBean();
            try {
                clientConnection.setServiceUrl("service:jmx:jmxmp://" + "localhost:7777");
                beanFactory.registerSingleton("clientConn", clientConnection);
            } catch (MalformedURLException e) {

            }
        }
    };
    context.refresh();
    for (String name : context.getBeanNamesForType(Object.class)) {
        System.out.println(name);
    }
    MBeanServerConnection mb = context.getBean("clientConn", MBeanServerConnection.class);
    for (String s : mb.getDomains()) {
        System.out.println(s);
    }
}
4

1 に答える 1

0

ファクトリ Bean を自分でインスタンス化するafterPropertiesSet()場合、接続が行われる を呼び出して初期化する必要があります。

代わりにa を登録するBeanDefinitionと、コンテキストによって初期化が行われます。

于 2013-09-16T13:16:58.750 に答える