Pergunta

Gostaria de monitorar servidor remoto GlassFish. Tenho habilitado conexão JMX em domain.xml:

<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">

Mas isso não ajuda. Eu ainda não consigo conectar ao servidor com JConsole. Então eu encontrei solução - eu preciso especificar as propriedades da JVM em domain.xml a porta aberta 8686 para conexão remota. Então eu adicionei estas linhas em java-config :

<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>

Mas agora, quando estou começando servidor, eu estou ficando seguintes erros:

Não foi possível carregar LogManager "Com.sun.enterprise.server.logging.ServerLogManager" java.lang.ClassNotFoundException: com.sun.enterprise.server.logging.ServerLogManager em java.net.URLClassLoader $ 1.run (URLClassLoader.java:200) em java.security.AccessController.doPrivileged (Nativo Método) em java.net.URLClassLoader.findClass (URLClassLoader.java:188) em java.lang.ClassLoader.loadClass (ClassLoader.java:307) em sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:301) em java.lang.ClassLoader.loadClass (ClassLoader.java:252) em java.util.logging.LogManager $ 1.run (LogManager.java:166) em java.security.AccessController.doPrivileged (Nativo Método) em java.util.logging.LogManager. (LogManager.java:156) em java.util.logging.Logger.getLogger (Logger.java:273) em sun.management.snmp.util.MibLogger. (MibLogger.java:57) em sun.management.snmp.util.MibLogger. (MibLogger.java:42) em sun.management.jmxremote.ConnectorBootstrap. (ConnectorBootstrap.java:760) em sun.management.Agent.startAgent (Agent.java:127) em sun.management.Agent.startAgent (Agent.java:239) javax.management.JMRuntimeException: Falha ao carregar MBeanServerBuilder classe com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder: java.lang.ClassNotFoundException: com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder em javax.management.MBeanServerFactory.checkMBeanServerBuilder (MBeanServerFactory.java:480) em javax.management.MBeanServerFactory.getNewMBeanServerBuilder (MBeanServerFactory.java:511) em javax.management.MBeanServerFactory.newMBeanServer (MBeanServerFactory.java:298) em javax.management.MBeanServerFactory.createMBeanServer (MBeanServerFactory.java:213) em javax.management.MBeanServerFactory.createMBeanServer (MBeanServerFactory.java:174) em sun.management.ManagementFactory.createPlatformMBeanServer (ManagementFactory.java:302) em java.lang.management.ManagementFactory.getPlatformMBeanServer (ManagementFactory.java:504) em sun.management.jmxremote.ConnectorBootstrap.initialize (ConnectorBootstrap.java:392) em sun.management.Agent.startAgent (Agent.java:127) em sun.management.Agent.startAgent (Agent.java:239) Causado por: java.lang.ClassNotFoundException: com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder em java.net.URLClassLoader $ 1.run (URLClassLoader.java:200) em java.security.AccessController.doPrivileged (Nativo Método) em java.net.URLClassLoader.findClass (URLClassLoader.java:188) em java.lang.ClassLoader.loadClass (ClassLoader.java:307) em sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:301) em java.lang.ClassLoader.loadClass (ClassLoader.java:252) em javax.management.MBeanServerFactory.loadBuilderClass (MBeanServerFactory.java:423) em javax.management.MBeanServerFactory.checkMBeanServerBuilder (MBeanServerFactory.java:465) ... 9 mais Exceção acionada pelo agente: javax.management.JMRuntimeException: Falha ao carregar MBeanServerBuilder classe com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder: java.lang.ClassNotFoundException: com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder

Como posso resolver o problema?

Agradecemos antecipadamente.

Foi útil?

Solução

Passos para resolver o problema são: 1. Usar configurações padrão 2. adicionar -Djava.rmi.server.hostname = nas opções de JVM da instância do GlassFish.

Outras dicas

comportamento Ainda mística, mas com estes 4 configurações que podem se conectar à JVM em execução Glassfish (adicionar aos domain.xml no console de administração, é necessário reiniciar)

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

Cuidado ! Esta não é seguro, como qualquer um pode agora ligar uma jconsole a ele!

OMI esta não é a maneira Glassfish, que está a utilizar o conector JMX.

(Acima trabalha em GF 3.1)

I acabou definindo a seguinte opção para garantir que JMX com Glassfish é firewall amigável:

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

Onde XXXX é o número da porta que você usa no firewall juntamente com o número da porta JMX servidor de aplicativos configurado (geralmente 8686).

Leia mais em este blogpost . Note que este recurso requer uma versão mais recente do Glassfish. Eu usei-o com sucesso com Glassfish 2.1.1.

Se executar o aplicativo dentro de servidor de aplicações Glassfish, simplesmente execute o seguinte comando asadmin, você precisa reiniciar todos os servidores que executam para que a alteração tenha efeito.

./ asadmin permitir-seguro-admin

Existem configurações de servidor Glassfish extras para permitir ainda mais a segurança, veja mais em Conectando remotamente para Glassfish através JMX .

Você precisa seguir os passos sobre opções de JVM, estas são instruções para aplicativos Java em geral. Para uma aplicação Java que roda com servidor de aplicação GlassFish, simplesmente usando o comando asadm. Isso me salvou muito tempo!

** Outra nota, com apenas as configurações usando opções de JVM, Glassfish não seria suficiente para começar com as exceções de tempo de execução acima. ** Eu estou usando GF3.1.2 e acima, e Java 7.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top