0

我指的是这里

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

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

这里是我的春天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 服务器,似乎不需要指定服务器端口。需要一些关于我在这里做错了什么的建议。

提前致谢

4

1 回答 1

2

创建对 MBeanServer 的本地引用。

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

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

于 2012-11-27T02:18:32.697 回答