2011-11-18 23 views
18

Hoy actualicé mi servidor local de Glassfish a 3.1.1 como preparación para la actualización de servidores de mi empresa a la misma versión. Estoy intentando convertir mi proyecto de servicio web para jugar bien con el nuevo servidor, y he llegado a un bloqueo de ruta.Maven no reconoce a EJB como dependencia del proyecto al intentar definir el módulo

En el archivo pom de mi oído, anteriormente tenía la webapp y el ejb enumerados como dependencias. En el pom de la aplicación web, también mencioné el ejb como una dependencia. Al intentar implementar esta configuración a GlassFish 3.1.1, he recibido este error:

Error occurred during deployment: Exception while deploying the app [ear] : Cannot resolve reference Local ejb-ref name=name,Local 3.x interface =interface,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session because there are 2 ejbs in the application with interface interface. Some of the possible causes: 1. The EJB bean class was packaged in an ear lib library (or through any other library mechanism which makes the library visible to all component modules), this makes all the component modules include this bean class indirectly. 2. The EJB bean class was packaged in a component module which references the EJB, either directly or indirectly through Manifest, WEB-INF/lib. The EJB bean class should only be packaged in the declaring ejb module and not the referencing modules. The referencing modules should only include EJB interfaces.. Please see server.log fo .... msg.seeServerLog

Esencialmente creo que está diciendo que porque no tengo el EJB aparece como una dependencia en dos áreas diferentes, Glassfish 3.1.1 doesn No sé a qué dependencia mirar. Esto no fue un problema en 2.1.1. Debido a esto, eliminé la dependencia en el oído, ya que aún sería parte del pom efectivo de la oreja.

Sin embargo, ahora cuando el oído genera el archivo application.xml, omite toda la información ejb del archivo. Puedo implementar la aplicación muy bien ahora, pero cuando intento ejecutar cualquier cosa, obtengo NameNotFoundExceptions con respecto a los ejbs.

que intentó agregar los módulos EJB al pom oído manualmente con la etiqueta, pero cuando intento para construir el proyecto me sale el mensaje de error:

Artifact[ejb] is not a dependency of the project.

Esto a pesar del hecho de que cuando miro el pom efectivo para el oído. Puedo ver el ejb listado como una dependencia.

¿Cómo puedo generar correctamente el archivo application.xml sin dejar de conformarme con el conjunto de reglas más rígido de Glassfish 3.1.1?

¡Avíseme si necesita más información y gracias por la ayuda!

+0

Me he encontrado con este problema, y ​​pude solucionarlo modificando los poms. ¿Puedes publicar tus POM para que pueda ver y mostrar qué cambiar? Si se trata de datos confidenciales de la empresa, cambie los nombres de los paquetes a otra cosa. – EpicOfChaos

Respuesta

24

La respuesta terminó siendo bastante simple, y me estoy pateando un poco por eso. En el archivo del pom de la aplicación web, sólo tenía que agregar la línea de alcance a la dependencia EJB:

<dependency> 
    <groupId>com.groupId</groupId> 
    <artifactId>webservice-service-ejbs</artifactId> 
    <version>${project.version}</version> 
    <type>ejb</type> 
    <scope>provided</scope> 
</dependency> 

Con esto, pude mantener la dependencia EJB en el pom oído, aplicacion.xml generado correctamente y glassfish 3.1.1 no se confundió pensando que había múltiples clases ejb con el mismo nombre.

EDIT: Esto es lo que la dependencia EJB se ve como en la oreja pom

<dependency> 
    <groupId>com.groupId</groupId> 
    <artifactId>webservice-service-ejbs</artifactId> 
    <type>ejb</type> 
</dependency> 

Gracias a los que me ayudaron.

+2

puede proporcionar su dependencia ejb en el código pom del oído. – curious

+1

ciertamente. lo siento por la respuesta tardía, no he iniciado sesión en mucho tiempo. – lowell

Cuestiones relacionadas