Port MBean do JBoss 4.x para o JBoss 7

o momento, estamos no processo de transferir alguns de nossos projetos do JBoss 4.x para o JBoss 7. Até agora, tudo parece funcionar bem, exceto nossos MBeans, que normalmente usamos para fornecer operações simples de gerenciament

Estou pesquisando há um bom tempo, mas sou incapaz de começar com o termo de pesquisa correto ou estou perdendo algum conhecimento para preencher a lacuna entre a definição de MBean no JBoss 4.xe JBoss 7 .

ssim, espero que alguém possa fornecer uma dica sobre o que eu posso estar perdendo ou onde eu teria que ler (talvez alguma documentação, exemplos etc

No Jboss 4.x, nossos MBeans costumam ter esta aparência:

@Service( objectName = "Domain:Name=SomeMBean",
  xmbean="resource:<path-to-xmbean.xml>")
class SomeMBean 
{
  @EJB
  private SomeService someService;    

  public String someOperation()
  {
     someService.doSomething();
     return "success";
  }
}

Usamos o@Servicenotação para definir o nome do objeto e o descritor xmbean, e o JBoss registraria automaticamente esses mbean

Aparentemente, no JBoss 7, o@Service anotação @ não existe mais e, portanto, é necessária outra abordage

Até agora, consegui registrar o MBean manualmente no servidor mbean da plataforma, mas gostaria que o JBoss fizesse isso automaticamente. Além disso, até agora não consegui fornecer descrições para os métodos / parâmetros (embora esses sejam mais interessantes de se ter

Vou repetir a pergunta para maior clareza:

Como eu definiria um MBean no JBoss 7 (Java EE 6) que fornece os seguintes recurso

implantação automática acesso aos EJBs acessível através do JConsole ou JMX-Console (atualmente estou usando a porta de Dimitris Andreadis)ornecer descrições para métodos / parâmetros

Atualiza

Aqui está o que eu tenho até agora:

Em primeiro lugar, encontrei esta projeção, que usa CDI para envolver o alvo de injeção de qualquer bean anotado de acordo e faz o registro JMX nopostConstruct() método:http: //code.google.com/p/jmx-annotations. Além disso, os MBeans encontrados são varridos para anotações de classe / atributo / método / parâmetro que fornecem uma descrição para a propriedade anotad

No entanto, opostConstruct() método @ parece não ser chamado para EJBs (suponho que seja para não colidir com o contêiner EJB). Portanto, os MBeans agora não devem ser EJBs, mas beans CDI simple

, No entanto, tem a desvantagem de que os MBeans não são instanciados automaticamente. Para superar isso, existe um bean singleton que, na inicialização, percorre todos os beans noBeanManager e cria uma instância de todos os MBean encontrados. Como os MBeans ainda têm seu alvo de injeção, seupostConstruct() método @ não será chamado e o bean será registrado no servidor MBea

Aqui está uma visão geral do procedimento de inicialização:

uma extensão CDI personalizada varre cada bean CDI para a anotação @MBean personalizada para cada MBean elegível, o destino da injeção é agrupadoerá iniciado um bean singleton que, no método @PostConstruct, criará instâncias do MBeansapostConstruct() método @ do destino da injeção do MBean será chamado e, portanto, o MBean será registrado no servidor MBean

Uma desvantagem desse método seria o contexto de transação ausente ao executar métodos MBean (todas as chamadas EJB serão executadas em um contexto de transação). No entanto, isso pode ser corrigido usando um interceptor CDI que fornecerá o contexto da transação, se necessário. O projeto Seam parece ter interceptores apropriados para iss

Ainda não tenho certeza se essa é uma abordagem sensata e estável, portanto quaisquer comentários construtivos, dicas etc. são mais que bem-vindo

questionAnswers(4)

yourAnswerToTheQuestion