O Maven não reconhece o EJB como dependência do projeto ao tentar definir o módulo

Hoje atualizei meu servidor Glassfish local para o 3.1.1 em preparação para a atualização dos servidores da minha empresa para a mesma versão. Eu estou tentando converter meu projeto de serviço da web para jogar legal com o novo servidor e ter atingido um bloqueio de estrada.

No arquivo pom do meu ouvido, eu já tinha o webapp e o ejb listados como dependencies. No pom da webapp, eu tinha o ejb listado como uma dependência também. Ao tentar implantar essa configuração no Glassfish 3.1.1, recebi este erro:

Ocorreu um erro durante a implantação: Exceção ao implantar o aplicativo [ear]: Não é possível resolver a referência Local ejb-ref name = nome, Local 3.x interface = interface, ejb-link = nulo, pesquisa =, mappedName =, jndi-name =, refType = Session porque existem 2 ejbs na aplicação com interface de interface. Algumas das causas possíveis: 1. A class do bean EJB foi empacotada em uma biblioteca ear lib (ou através de qualquer outro mecanismo de biblioteca que torne a biblioteca visível para todos os módulos do componente), isso faz com que todos os módulos do componente incluam indiretamente essa class. 2. A class de bean EJB foi empacotada em um módulo de componente que referencia o EJB, direta ou indiretamente por meio do Manifest, WEB-INF / lib. A class do bean EJB deve ser empacotada apenas no módulo ejb declarante e não nos módulos de referência. Os módulos de referência devem include apenas interfaces EJB. Consulte server.log fo …. msg.seeServerLog

Essencialmente, acredito que esteja dizendo que, como tenho o EJB listado como uma dependência em duas áreas diferentes, o Glassfish 3.1.1 não sabe a qual dependência procurar. Este não foi um problema em 2.1.1. Por causa disso, eu removi a dependência do ouvido, já que ele ainda faria parte do pom efetivo da orelha.

No entanto, agora, quando o ear gera o arquivo application.xml, ele omite todas as informações de ejb do arquivo. Eu posso implantar o aplicativo muito bem agora, mas quando eu tento executar qualquer coisa eu recebo NameNotFoundExceptions sobre o ejbs.

Eu tentei adicionar os módulos ejb ao ear pom manualmente com a tag, mas quando tento construir o projeto, recebo a mensagem de erro:

Artefato [ejb] não é uma dependência do projeto.

Isto apesar do fato de que quando eu olho para o pom eficaz para o ouvido eu posso ver o ejb listado como uma dependência.

Como posso gerar o arquivo application.xml corretamente enquanto ainda estou em conformidade com o conjunto de regras mais rígido do Glassfish 3.1.1?

Deixe-me saber se você precisar de mais alguma informação e obrigado pela ajuda!

A resposta acabou sendo bem simples, e estou me chutando um pouco por isso. No arquivo pom do webapp, eu só tinha que adicionar a linha de escopo para a dependência ejb:

 com.groupId webservice-service-ejbs ${project.version} ejb provided  

Com isso, pude manter a dependência ejb no ear pom, o application.xml gerado corretamente e o glassfish 3.1.1 não fiquei confuso achando que existiam múltiplas classs ejb com o mesmo nome.

EDIT: Aqui está o que a dependência ejb parece no pom da orelha

  com.groupId webservice-service-ejbs ejb  

Obrigado a todos aqueles que me ajudaram.

Intereting Posts