gpt4 book ai didi

java - 动态更改@ManagedResource objectName

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:30:33 25 4
gpt4 key购买 nike

我正在以编程方式/动态方式创建原型(prototype) bean。我希望启动后的那些 bean 位于 jmx 控制台中。我如何区分它们?我正在使用注解来将我的 bean 添加到 jmx 中,并且我有

@ManagedResource(objectName="bean:name=MybBean")

我需要动态注入(inject) objectName。知道我该怎么做吗?

这是我的 jmx 配置:

<context:mbean-export server="mbeanServer" />

<bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean" />

<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter"
lazy-init="false">

<property name="beans">
<map>
<entry key="Server:name=HttpAdaptor">
<bean class="mx4j.tools.adaptor.http.HttpAdaptor">
<property name="port" value="8000" />
<property name="host" value="0.0.0.0" />
<property name="processor">
<bean class="mx4j.tools.adaptor.http.XSLTProcessor" />
</property>

</bean>
</entry>
</map>
</property>
<property name="listeners">
<list>
<!--

-->
<bean class="com.fixgw.jmx.HttpAdaptorMgr">
<property name="mbeanServer" ref="mbeanServer" />
</bean>
</list>
</property>
</bean>

<bean id="sessionMDB" class="com.fixgw.mdb.SessionMDB"
scope="prototype" lazy-init="true">
<constructor-arg ref="0" />
<constructor-arg ref="0" />
</bean>

最佳答案

你可以通过实现 org.springframework.jmx.export.naming.SelfNaming 来做到这一点:

@Component("MyPrototypeScopedBeanName")
@ManagedResource
public class MyPrototypeScopedBeanName implements SelfNaming
{
@Override
public ObjectName getObjectName() throws MalformedObjectNameException {
return new ObjectName("com.foobar", "name", this.toString());
}
}

关于java - 动态更改@ManagedResource objectName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11506486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com