按照上篇文章的配置你在/bin/activemq中配置了
ACTIVEMQ_SUNJMX_START="-Dcom.sun.management.jmxremote.port=11099 "
你用jmx去监控activemq的时候,会出现这种情况:当你的服务器的防火墙全开的时候,你是可以正常的监控activemq的,但是当你开启防火墙的时候,并且你把11099端口打开的时候会发现还是不能正常监控activemq,而且你telnet 11099这个端口的时候也是通的,出现这个问题的原因可以看这里:http://blog.sina.com.cn/s/blog_5dc29fcc01012c6i.html
这篇文章并没有给出在activemq中如何解决这个问题的办法,不过还是可以学习一下
下面我写一下我的解决办法:
1.在/bin/activemq中只保留
ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Djava.rmi.server.hostname=$服务器的ip"
这句话 另外的全部还原
2.修改/conf/activemq.xml
把 managementContext 菜单项改成:
<managementContext>
<managementContext createConnector="true" connectorPort="11099" rmiServerPort="12099">
<property xmlns="http://www.springframework.org/schema/beans" name="environment">
<map xmlns="http://www.springframework.org/schema/beans">
<entry xmlns="http://www.springframework.org/schema/beans"
key="jmx.remote.x.password.file"
value="${activemq.base}/conf/jmx.password"/>
<entry xmlns="http://www.springframework.org/schema/beans"
key="jmx.remote.x.access.file"
value="${activemq.base}/conf/jmx.access"/>
</map>
</property>
</managementContext>
</managementContext>
两个端口一个是jmx的 一个是rmi的
其实这就是为什么你之前开了防火墙之后连不上,因为你只是开了jmx的端口,但是你并没有开rmi的端口,如果你按照前一篇文章来配置的话,rmi的端口是随机之指定的,而且sun的jdk并没有专门的运行期属性来配置这个端口。
---------------------------------------- 下面为反编译的源码,可以了解如何创建JMXService
private void createConnector(MBeanServer mbeanServer) throws MalformedObjectNameException, IOException { try { if (this.registry == null) { LOG.debug("Creating RMIRegistry on port {}", Integer.valueOf(this.connectorPort)); this.registry = LocateRegistry.createRegistry(this.connectorPort); } this.namingServiceObjectName = ObjectName.getInstance("naming:type=rmiregistry"); Class cl = Class.forName("mx4j.tools.naming.NamingService"); mbeanServer.registerMBean(cl.newInstance(), this.namingServiceObjectName); Attribute attr = new Attribute("Port", Integer.valueOf(this.connectorPort)); mbeanServer.setAttribute(this.namingServiceObjectName, attr); } catch (ClassNotFoundException e) { LOG.debug("Probably not using JRE 1.4: {}", e.getLocalizedMessage()); } catch (Throwable e) { LOG.debug("Failed to create local registry. This exception will be ignored.", e); } String rmiServer = ""; if (this.rmiServerPort != 0) { rmiServer = "" + getConnectorHost() + ":" + this.rmiServerPort; } String serviceURL = "service:jmx:rmi://" + rmiServer + "/jndi/rmi://" + getConnectorHost() + ":" + this.connectorPort + this.connectorPath; JMXServiceURL url = new JMXServiceURL(serviceURL); this.connectorServer = JMXConnectorServerFactory.newJMXConnectorServer(url, this.environment, mbeanServer); LOG.debug("Created JMXConnectorServer {}", this.connectorServer); }
-------------------下面有ManagementContext的主要属性
public class ManagementContext implements Service { public static final String DEFAULT_DOMAIN = "org.apache.activemq"; private static final Logger LOG = LoggerFactory.getLogger(ManagementContext.class); private MBeanServer beanServer; private String jmxDomainName; private boolean useMBeanServer; private boolean createMBeanServer; private boolean locallyCreateMBeanServer; private boolean createConnector; private boolean findTigerMbeanServer; private String connectorHost; private int connectorPort; private Map<String, ?> environment; private int rmiServerPort; private String connectorPath; private final AtomicBoolean started; private final AtomicBoolean connectorStarting; private JMXConnectorServer connectorServer; private ObjectName namingServiceObjectName; private Registry registry; private final Map<ObjectName, ObjectName> registeredMBeanNames; private boolean allowRemoteAddressInMBeanNames; private String brokerName; public ManagementContext() { this(null); } public ManagementContext(MBeanServer server) { this.jmxDomainName = "org.apache.activemq"; this.useMBeanServer = true; this.createMBeanServer = true; this.createConnector = true; this.findTigerMbeanServer = true; this.connectorHost = "localhost"; this.connectorPort = 1099; this.connectorPath = "/jmxrmi"; this.started = new AtomicBoolean(false); this.connectorStarting = new AtomicBoolean(false); this.registeredMBeanNames = new ConcurrentHashMap(); this.allowRemoteAddressInMBeanNames = true; this.beanServer = server; }
相关推荐
对于与数据库的集成,如`activemq数据库,验证持久化标准配置.txt`所示,ActiveMQ支持使用JDBC进行持久化,确保在故障恢复时数据的完整性。 总之,`activemq.xml`配置文件是管理ActiveMQ核心行为的核心,通过细致地...
4. **监控和管理**:利用ActiveMQ提供的Web Console或者JMX进行实时监控,确保服务健康运行。 5. **故障恢复**:配置备份broker,实现故障切换,保证高可用性。 总的来说,Apache ActiveMQ 5.14.4作为一款强大的...
- ActiveMQ通过JMX提供管理接口,允许监控和管理Broker的状态。这部分源码位于`org.apache.activemq.broker.jmx`包。 8. **性能优化**: - 5.9版本可能包含针对性能的优化,例如缓存策略、线程池管理和内存管理,...
4. **管理与监控(Management and Monitoring)**: 提供了Web控制台和JMX接口,方便对消息代理进行配置、管理和监控。 5. **主题(Topics)与队列(Queues)**: 主题支持发布/订阅模型,消息可以广播给所有订阅者;队列则...
- **启动与停止**: 在bin目录下运行启动脚本,如`activemq start`,停止则用`activemq stop`。 - **配置文件**: `conf/activemq.xml`是主要配置文件,可调整代理设置、网络连接、安全策略等。 - **日志文件**: 日志...
6. **JMX(Java Management Extensions)**:ActiveMQ可以通过JMX进行监控和管理,包括查看统计信息、配置更改等。 7. **Web控制台**:ActiveMQ提供了一个基于Web的管理界面,用户可以方便地查看和管理消息、连接、...
10. **JMX(Java Management Extensions)**:通过JMX,用户可以远程监控和管理ActiveMQ实例,包括查看和修改配置、创建和删除队列等。 在“HETF-ActiveMQ入门手册.doc”中,读者可能会找到如何安装和配置ActiveMQ...
6. **JMX Management**: 通过Java Management Extensions (JMX) 提供对ActiveMQ实例的监控和管理。 7. **Client Libraries**: 支持Java、C++、C#、Python等多语言的客户端库,方便开发者在各种环境中使用ActiveMQ。...
在使用JMS和ActiveMQ时,我们需要理解以下几个关键概念: 1. **消息(Message)**: JMS的核心元素,它承载着要传输的信息。消息可以是文本、对象或者二进制数据,包含一个或多个属性,如消息ID、时间戳、目的地等。...
使用如JMX、Prometheus、Grafana进行性能监控,集成Log4j、Logback进行日志管理,便于故障排查和性能分析。 11. **版本管理**: 使用Docker和Kubernetes进行容器化部署和微服务管理,确保环境一致性。 12. **...
用JConsole监控Jetty 如何使用Jetty开发 Jetty HelloWorld教程 Jetty和Maven HelloWorld教程 Jetty(6)入门 (www.itjungle.com) Jetty Start.jar 配置Jetty 如何设置上下文(Context Path) 如何知道使用了那些jar包...
同时,利用JMX(Java Management Extensions)和Prometheus等工具可以对系统性能进行监控,及时发现并解决问题。 9. **微服务架构**:随着业务发展,系统可能需要采用微服务架构,Java的Spring Cloud提供了全面的...
日志监控(如Log4j)和性能监控(如JMX、Prometheus)也是必不可少的。 总的来说,开发一个Java聊天系统涉及的知识点广泛,包括网络编程、并发处理、数据库设计、安全策略、前端开发等多个方面。理解并掌握这些技术...
Java提供JMX(Java Management Extensions)进行内部监控,还可以使用Prometheus、Grafana等工具组合实现全面的系统监控。 9. **分布式缓存**:Redis、Memcached等分布式缓存可以缓解数据库压力,提高读取速度,...
2. **JMX(Java Management Extensions)**:监控Java应用的性能指标,如内存使用、线程状态等。 八、持续集成/持续部署(CI/CD) 1. **Jenkins**:自动化构建、测试和部署,确保代码质量并快速响应变更。 九、...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...