JBossMQ JMX

4 respostas
maikonaraujo

Pessoal, instalei o componente de jms do JBoss 4.0.5GA (somente o componente de jms mesmo). Consegui criar e utilizar as filas com persistencia do mysql. O problema é que eu gostaria de poder monitorar as filas, e ter operações como ver o tamanho, limpar a fila, etc.

Alguem poderia me dar uma ajuda em como eu faço isto?

Valeu!

4 Respostas

P

maikonaraujo:
Pessoal, instalei o componente de jms do JBoss 4.0.5GA (somente o componente de jms mesmo). Consegui criar e utilizar as filas com persistencia do mysql. O problema é que eu gostaria de poder monitorar as filas, e ter operações como ver o tamanho, limpar a fila, etc.

Alguem poderia me dar uma ajuda em como eu faço isto?

Valeu!

Dê uma olhada no jmx-console. vc. deve ser capaz de “enxergar” lá sua fila.
Não lembro se é possível remover uma mensagem em particular, mas, como vc. mandou para uma tabela SQL, sempre dá para arrancar por fora.

Se vc. consegue ver o que quer via jmx-console, então basta usar a API padrão de JMX para acessar o MBean correspondente.

maikonaraujo

O problema é que eu instalei somente o componente jms, e asism o jboss não roda como container web (não pega servlet), desta forma eu não consigo acessar a aplicação jmx-console. Existe algum outro meio para que eu a acesse?

P

maikonaraujo:
O problema é que eu instalei somente o componente jms, e asism o jboss não roda como container web (não pega servlet), desta forma eu não consigo acessar a aplicação jmx-console. Existe algum outro meio para que eu a acesse?

Ok, agora entendi o q. vc. disse sobre “somente mesmo” …

Neste caso, vc. precisa usar a API do JMX para acessar os demais componentes OU usar um console JMX externo como o MC4J. Só não lembro agora é se ele é capaz de ir direto no conector RMI ou precisa do adaptador http…

Uma solução é usar um servidor http especializado implementado como um MBean (consulte alternativas disponíveis em http://www.java-source.net/open-source/web-servers).

Para acessar a informação no MBean, a seqüência típica de código é:

List servers = MBeanServerFactory.findMBeanServer(null);
if ( servers == null ) {
	throw new Exception("Nenhum MBeanServer localizado.");
}

ObjectName mbean = ObjectName.getInstance("dominio:nome=xyz");
	
for ( int i = 0 ; i< servers.size() ; i++ ) {
	MBeanServer s = (MBeanServer)servers.get(i);
	if ( s.isRegistered(mbean)) {
		return s;
	}
}

Note que se seu MBean implementar a interface MBeanRegistration, o método preRegister passará o MBeanServer em uso, evitando a ginástica de encontrar a referência para o mesmo.

Uma vez de posse da referência do MBeanServer que contem o MBean que vc. quer acessar, use os métodos invoke() e get/set attributes para manipulá-lo.

maikonaraujo

Valeu, vou testar aqui com o mc4j.

Criado 31 de janeiro de 2007
Ultima resposta 31 de jan. de 2007
Respostas 4
Participantes 2