Tag: jmx

使用SSL和自签名证书使JMX在Tomcat 7下运行

我正在尝试使用SSL在Tomcat 7.0.23下运行JMX。 服务器位于AWS中,这意味着所有主机都是NAT,我需要使用JmxRemoteLifecycleListener来显式设置JMX使用的两个端口。 我一直在做很多关于这个主题的阅读,但我不能让所有的部分正确地协同工作。 没有SSL,我可以让JMX正常工作。 我已经为我的Tomcat版本下载了catalina-jmx-remote.jar的版本,并将其安装在我的tomcat / lib目录中。 我的server.xml包含: 当我使用以下设置启动Tomcat时,我可以使用不安全的会话进行连接: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.password.file=/path/to/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/path/to/jmxremote.access -Djava.rmi.server.hostname= -Dcom.sun.management.jmxremote.ssl=false 但是,如果我将这些更改为以下,那么我无法建立SSL连接: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.password.file=/path/to/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/path/to/jmxremote.access -Djava.rmi.server.hostname= -Dcom.sun.management.jmxremote.ssl=true -Dcom.sun.management.jmxremote.ssl.need.client.auth=false -Dcom.sun.management.jmxremote.authenticate=true -Djavax.net.ssl.keyStore=/path/to/keystore.dat -Djavax.net.ssl.keyStorePassword= -Djavax.net.ssl.trustStore=/path/to/truststore.dat -Djavax.net.ssl.trustStorePassword= keystore.dat只包含一个通过以下方式创建的证书: openssl x509 -outform der -in cert.pem -out cert.der keytool -import -alias tomcat -keystore keystore.dat -file cert.der -storepass truststore.dat包含java cacerts的完整副本以及我自签名证书的CA证书: cp $JAVA_HOME/jre/lib/security/cacerts truststore.dat keytool -storepasswd -storepass changeit -new […]

用java列出weblogic中的所有用户

有谁知道如何列出java中的所有weblogic用户? 例如,安全领域有5个用户,我希望得到所有这些用户。 我该怎么办?

JMX:从服务器读取属性

我们使用Adobe CQ(5.5)作为CMS。 现在,我们的CQ环境包括一个作者服务器,用户可以在其中创建内容,以及2个发布服务器,用于将内容提供给互联网。 现在有一个复制代理程序将内容从作者服务器推送到两个发布服务器。 不幸的是,有些文章会阻止复制代理的队列,因此不再发布新内容。 这不是什么大问题,因为它很容易修复。 真正的问题是,在用户开始抱怨不再发布更改之前,我们不会注意到这种阻塞。 我四处搜索,发现CQ提供了一个JMX API,监控应用程序可以将其自身附加到它上面。 然后我试图找到一些允许我配置警报的开源软件,这样我们就能更快地做出反应,但我找不到一些东西。 这时我决定编写自己的Java应用程序,它只读取属性并在属性为true时发送邮件。 我想这比我想的要复杂得多。 首先,我不是Java开发人员,但由于CQ是基于Java的,所以我试试看。 我阅读了一些关于JMX和Java的文档,并且能够获得与CQ服务器的有效连接。 但这几乎是我能想到的一切。 我能够发现类com.adobe.granite.replication有一个类型agent ,它为每个复制代理存储一个id(id将是复制代理的名称,例如id=replication-publish-1 ) 。 每个复制代理都有不同的属性,但与我相关的属性是“QueueBlocked”。 这是我到目前为止的代码(它基于这个例子): public static void main(String[] args) { try { JMXServiceURL url = new JMXServiceURL(“service:jmx:rmi:///jndi/rmi://servername:9010/jmxrmi”); JMXConnector jmxc = JMXConnectorFactory.connect(url, null); ClientListener listener = new ClientListener(); MBeanServerConnection mbsc = jmxc.getMBeanServerConnection(); // This outputs the domains, one of […]

从独立Java客户端以编程方式创建WebLogic用户

我正在尝试从一个简单的独立Java客户端(一个类 – >两个方法:createWeblogicUser()和main())以编程方式在WebLogic(10.3.4)中创建用户。 public void createWeblogicUser() { try { Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, “weblogic.jndi.WLInitialContextFactory”); env.put(Context.SECURITY_PRINCIPAL, “weblogic”); env.put(Context.SECURITY_CREDENTIALS, “weblogic”); env.put(Context.PROVIDER_URL, “t3://myserver:7001”); InitialContext ctx = new InitialContext(env); MBeanServer wls = (MBeanServer) ctx.lookup(“java:comp/env/jmx/runtime”); ObjectName userEditor = null; ObjectName mBeanTypeService = new ObjectName( “com.bea:Name=MBeanTypeService, Type=weblogic.management.mbeanservers.MBeanTypeService”); ObjectName rs = new ObjectName(“com.bea:Name=RuntimeService, Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean”); ObjectName domainMBean = (ObjectName) wls.getAttribute(rs, “DomainConfiguration”); […]

相同的JMX Mbean类用于同一服务器上的许多应用程序

我有超过5个春季网络应用程序,所有这些都使用另一个公共库。 这个公共库有自己的MBean。 由于强制唯一objectName约束,我的应用程序无法部署在同一服务器上。 我使用MBean的方式是这样的: @ManagedResource(objectName = “com.org.city:name=City”, description = “City related operations”) 我想为所有应用程序使用具有不同objectNames的相同MBean类。 在不重复我的MBean的情况下使用它的正确方法是什么。 谢谢

检测新注册的MBean

我在Java 1.6中使用平台MBeans服务器,在OSGi容器中运行。 主要使用MBean作为统计计数器和事件。 它们的实现在一个包中,但它们在其他几个包中实例化。 每个MBean都使用平台MBean服务器自行注册。 问题是,当我通过JMX附加并查询MBean时,我只获得当前注册的那些,并且在它们被实例化之前它们不会被注册(因为静态类在第一次访问之前不存在,或者因为捆绑还没有开始,或者计数器深入一些逻辑,直到第一次使用才会存在) 我需要某种方式来订阅MBeans服务器中的“注册”事件。 或者确定何时向服务器添加新MBean的其他方法。 检测已删除的MBean将是一个额外的好处,但不是必需的。 我得到的唯一解决方案基本上是一个每隔5秒轮询一次服务器的线程,并将结果与​​保存的MBean列表进行比较,这非常难看。

在spring中连接到JMX服务器会引发exception!

所以当我尝试从jconsole连接到jmx时,我得到了这个exception: Caused by: java.rmi.ConnectException: Connection refused to host: 78.84.17.116; nested exception is: java.net.ConnectException: Connection timed out: connect at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601) at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198) … 我试图在jconsole中连接到这样的url: service:jmx:rmi:///jndi/rmi://78.84.17.116:43030/test 我的jmx弹簧配置: 我认为jconsole不想连接到这个jmx服务器的错误是什么? jmx url最后test的是什么意思? 我只是在教程中看到它,所以我在我的url中写了相同的内容。 编辑1:当我在服务器上运行netstat -ntlp时我得到这个:tcp6 0 0 ::: 10099 ::: * LISTEN 10754 / java 10754是正确的java应用程序。 那是对的吗? 运行telnet 。 。*。*在10099上我得到一条消息,它也连接到它。 所以我猜这不是服务器端的防火墙? 编辑2:好吧,我现在正在尝试(并且在服务器上也抛出exception)在我的本地环境(在Eclipse中)运行应用程序,我猜测它不是服务器问题,因为所有相同的事情都会发生。 Exception in thread “main” org.springframework.beans.factory.BeanCreationException: Error creating […]

是否可以通过JMX以编程方式关闭Java进程

我正在编写一个应用程序来监视另一个Java进程,并在遇到某些目标时采取特定的操作。 例如,如果某个线程死锁一段时间,请终止该线程,如果内存使用量超过特定数量,则发送电子邮件警报并终止该进程等。 我的应用程序将作为一个独立的应用程序运行,监控特定的其他应用程序(本地,但从我可以看到远程或本地没有区别)。 我正在通过MXBeans监视外部JVM,但看不到一种干净的方法来杀死外部进程,而不是系统调用,比如’kill -9’(顺便说一句,我在UNIX中工作)。 有没有办法通过MXBean接口杀死JVM? 格雷厄姆

从JBoss 4.x到JBoss 7的端口MBean

我们目前正在将一些项目从JBoss 4.x移植到JBoss 7.到目前为止,除了我们通常用于提供简单管理操作的MBean之外,一切似乎都运行正常。 我一直在寻找相当长的一段时间,但要么我无法提出正确的搜索术语,要么我缺少一些知识来弥补JBoss 4.x和JBoss 7中的MBean定义之间的差距。 因此,希望有人可以提供我可能缺少的内容或我必须阅读的内容(可能是一些文档,示例等) 在Jboss 4.x中,我们的MBean通常如下所示: @Service( objectName = “Domain:Name=SomeMBean”, xmbean=”resource:”) class SomeMBean { @EJB private SomeService someService; public String someOperation() { someService.doSomething(); return “success”; } } 我们使用@Service注释来定义对象名称和xmbean描述符,JBoss会自动注册那些mbeans。 显然,在JBoss 7中, @Service注释不再存在,因此需要另一种方法。 到目前为止,我设法用平台mbean服务器手动注册MBean,但我更喜欢JBoss自动执行此操作。 另外,到目前为止,我还没有设法提供方法/参数的描述(尽管这些function更加出色)。 为了清楚起见,我会重复这个问题: 如何在JBoss 7(Java EE 6)中定义提供以下function的MBean? 自动部署 访问EJB 可通过JConsole或JMX-Console访问(我目前正在使用Dimitris Andreadis的端口) 提供方法/参数的描述 更新 这是我到目前为止所得到的: 首先,我发现了这个投影,它使用CDI来包装相应注释的任何bean的注入目标,并在postConstruct()方法中进行JMX注册: http : //code.google.com/p/jmx-annotations/ 。 此外,扫描找到的MBean以获取类/属性/方法/参数注释,这些注释提供带注释属性的描述。 但是,似乎没有为EJB调用postConstruct()方法(我假设这是为了不与EJB容器冲突)。 […]

如何更改tomcat jmx密码的文件权限

我正在尝试在Windows平台上托管的本地tomcat实例上保护JMX访问。 我创建了访问和密码文件,并使用以下VM参数插入了这些文件: -Dcom.sun.management.jmxremote.password.file -Dcom.sun.management.jmxremote.access.file 但是我在tomcat启动期间遇到了一个问题: 错误:必须限制密码文件读取访问权限 。 我尝试使用文件安全选项卡更改密码的文件所有者和访问权限,但它似乎没有工作。 有什么想法吗?