我想监视远程GlassFish服务器。我已经启用domain.xml中JMX连接:

<jmx-connector accept-all="true" address="0.0.0.0" auth-realm-name="admin-realm" enabled="true" name="system" port="8686" protocol="rmi_jrmp" security-enabled="false">

但是,这并没有帮助。我仍然无法与JConsole的连接到服务器。然后我找到的解决方案 - 我需要domain.xml中指定JVM属性,打开8686端口远程连接。 因此,我加入此线成的 java的配置部分:

<jvm-options>-Dcom.sun.management.jmxremote</jvm-options>
<jvm-options>-Dcom.sun.management.jmxremote.port=8686</jvm-options>
<jvm-options>-Dcom.sun.management.jmxremote.local.only=false</jvm-options>
<jvm-options>-Dcom.sun.management.jmxremote.authenticate=false</jvm-options>

但现在当我开始服务器,我收到以下错误:

  

无法加载日志管理   “com.sun.enterprise.server.logging.ServerLogManager”   抛出java.lang.ClassNotFoundException:   com.sun.enterprise.server.logging.ServerLogManager           在java.net.URLClassLoader的$ 1.run(URLClassLoader.java:200)           在java.security.AccessController.doPrivileged(母语   方法)           在java.net.URLClassLoader.findClass(URLClassLoader.java:188)           在java.lang.ClassLoader.loadClass(ClassLoader.java:307)           在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)           在java.lang.ClassLoader.loadClass(ClassLoader.java:252)           在java.util.logging.LogManager中$ 1.run(LogManager.java:166)           在java.security.AccessController.doPrivileged(母语   方法)           在java.util.logging.LogManager中。(LogManager.java:156)           在java.util.logging.Logger.getLogger(Logger.java:273)           在sun.management.snmp.util.MibLogger。(MibLogger.java:57)           在sun.management.snmp.util.MibLogger。(MibLogger.java:42)           在sun.management.jmxremote.ConnectorBootstrap。(ConnectorBootstrap.java:760)           在sun.management.Agent.startAgent(Agent.java:127)           在sun.management.Agent.startAgent(Agent.java:239)   javax.management.JMRuntimeException:   无法加载的MBeanServerBuilder   类   com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder:   抛出java.lang.ClassNotFoundException:   com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder           在javax.management.MBeanServerFactory.checkMBeanServerBuilder(MBeanServerFactory.java:480)           在javax.management.MBeanServerFactory.getNewMBeanServerBuilder(MBeanServerFactory.java:511)           在javax.management.MBeanServerFactory.newMBeanServer(MBeanServerFactory.java:298)           在javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:213)           在javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:174)           在sun.management.ManagementFactory.createPlatformMBeanServer(ManagementFactory.java:302)           在java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:504)           在sun.management.jmxremote.ConnectorBootstrap.initialize(ConnectorBootstrap.java:392)           在sun.management.Agent.startAgent(Agent.java:127)           在sun.management.Agent.startAgent(Agent.java:239)   致:   抛出java.lang.ClassNotFoundException:   com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder           在java.net.URLClassLoader的$ 1.run(URLClassLoader.java:200)           在java.security.AccessController.doPrivileged(母语   方法)           在java.net.URLClassLoader.findClass(URLClassLoader.java:188)           在java.lang.ClassLoader.loadClass(ClassLoader.java:307)           在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)           在java.lang.ClassLoader.loadClass(ClassLoader.java:252)           在javax.management.MBeanServerFactory.loadBuilderClass(MBeanServerFactory.java:423)           在javax.management.MBeanServerFactory.checkMBeanServerBuilder(MBeanServerFactory.java:465)           ... 9个例外通过代理中抛出:   javax.management.JMRuntimeException:   无法加载的MBeanServerBuilder   类   com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder:   抛出java.lang.ClassNotFoundException:   com.sun.enterprise.admin.server.core。jmx.AppServerMBeanServerBuilder

我怎样才能解决这个问题呢?

预先感谢。

有帮助吗?

解决方案

步骤来解决这个问题是: 1.使用默认设置 2.添加-Djava.rmi.server.hostname = GlassFish中的实例的JVM选项。

其他提示

不过神秘的行为,但这些4个设置,您可以连接到JVM上运行的Glassfish(添加在管理控制台添加到domain.xml,需要重新启动)

-Djava.rmi.server.hostname=yourhost
-Dcom.sun.management.jmxremote.port=8686
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

<强>当心!这是不是安全的,因为现在任何人都可以在JConsole中连接到它!

IMO这不是Glassfish的方式,这是使用JMX连接器。

(以上工作在GF 3.1)

我结束了设置以下选项,以确保与Glassfish的是JMX是防火墙友好:

<jvm-options>-Dcom.sun.aas.jconsole.server.cbport=XXXX</jvm-options>

XXXX是您在防火墙一起与应用服务器配置JMX端口号(通常8686)使用的端口号。

更多在此志文章。请注意,此功能需要Glassfish的较新版本。我已经成功地与Glassfish的2.1.1使用它。

是不是 GlassFish的问题1409 <? / p>

如果运行GlassFish应用服务器中的应用程序,只需运行以下asadmin命令,你就需要重新启动所有正在运行的服务器,以使更改生效。

./的asadmin使安全管理员

有额外Glassfish的服务器配置进一步使安全,多见于远程连接通过JMX GLASSFISH

您确实需要遵循JVM选项的步骤,这些都是一般的Java应用程序的指令。对于使用GlassFish应用服务器运行时,简单地使用asadm命令的Java应用程序。救了我很多时间!

**另一个音符,只使用JVM选项的设置,Glassfish的将无法启动与上述运行时异常。 **我使用GF3.1.2及以上,和Java 7。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top