java - JMX Spring连接本地主机而不指定服务器地址和端口

标签 java spring jmx spring-jmx

我指的是这里

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/jmx.html#jmx-proxy

我正在尝试连接到本地主机 MBeanServer 并使用 Spring 代理执行一些操作。 问题只是指定了 ObjectName 和 ProxyInterface,我无法连接到本地主机。我可以通过指定 MBeanProxyFactoryBean 的服务器属性来解决这个问题。

这是我的 spring context.xml

bean id="proxyWithoutServer" class="org.springframework.jmx.access.MBeanProxyFactoryBean"
          p:objectName="com.xxx.yyy"
          p:proxyInterface="com.MyInterface" 

bean id="proxyWithServer" class="org.springframework.jmx.access.MBeanProxyFactoryBean"
          p:objectName="com.xxx.yyy"
          p:proxyInterface="com.MyInterface" 
p:server-ref="clientConnector"

<bean id="clientConnector" class="org.springframework.jmx.support.MBeanServerConnectionFactoryBean"
          p:serviceUrl="service:jmx:rmi://localhost/jndi/rmi://localhost:8001/jmxrmi" />

在 Java 代码中,我只是这样做

MyInterface myInterface = context.getBean("proxyWithoutServer");
myInterface.myMethod();

但这不起作用。 - 说无法连接到本地主机

但是如果我使用

MyInterface myInterface = context.getBean("proxyWithServer");
myInterface.myMethod();

这有效。

这里的问题是此代码将在多个服务器上运行,并且每个服务器中的 jmx 端口都不同。所以我不想指定端口号。因此我想 proxyWithoutServer 版本可以正常工作。 查看 spring jmx 文档,如果我们尝试连接到本地 MBean 服务器,似乎不需要指定服务器端口。 需要一些关于我在这里做错了什么的建议。

提前致谢

最佳答案

创建对 MBeanServer 的本地引用。

<context:mbean-server id="localMBeanServer"/>

然后在 p:server-ref 中使用 localMBeanServer

关于java - JMX Spring连接本地主机而不指定服务器地址和端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13576110/

相关文章:

java - 如何通过 filename.jsp 以外的不同 url 模式运行 jsp 文件?

java - 编写一个方法来查找形状数组中的最大表面积

java - Primefaces 日历 - 未显示正确的日期

java - 如何防止单例 bean 被 ApplicationContext 刷新破坏

ssl - 通过 SSL 与 Gemfire 的 JMX 连接

java - 如何创建从特定位置开始迭代的迭代器方法

java - 仅在序列化期间使用@JsonIgnore,而不是反序列化

java - 以表格形式显示表格 mbean 属性

java - 使用 Metric API 的 Kafka 网络指标

java - 停止 Bufferedreader 进程