Tenemos un OÍDO con 3 módulos EJB. Estoy tratando de implementar en glassfish, pero estoy pegando un error que no puede explicar o trabajar mejor forma de identificar.

[#|2010-08-03T14:39:15.570+0100|INFO|glassfish3.0.1|javax.enterprise.system.tools.deployment.org.glassfish.deployment.common|_ThreadID=28;_ThreadName=Thread-1;|[AutoDeploy] Selecting file /export/home/myapp/apps/domains/myapp/autodeploy/App-ear.ear for autodeployment.|#]

[#|2010-08-03T14:39:18.654+0100|WARNING|glassfish3.0.1|javax.enterprise.system.tools.deployment.org.glassfish.deployment.common|_ThreadID=28;_ThreadName=Thread-1;|Error in annotation processing: java.lang.NoClassDefFoundError: com/company/app/controller/IMessagingProcessor|#]

[#|2010-08-03T14:39:20.470+0100|SEVERE|glassfish3.0.1|global|_ThreadID=28;_ThreadName=Thread-1;|Class [ Lcom/company/app/jms/IJmsSessionFactory; ] not found. Error while loading [ class com.company.app.eventprocessor.provider.EventProvider ]|#]

He revisado las clases mencionadas en ClassNotFoundException que y son definitivamente en un Frasco en el oído y yo no tengo la compilación de temas en eclipse/maven.

D:\Repository\App\AppEA\App-ear\target\App-ear.ear\CoreJms-1.0-SNAPSHOT.jar\com\company\app\controller\IMessagingProcessor.class

D:\Repository\App\AppEA\App-ear\target\App-ear.ear\EventProcessor-ejb-1.0-SNAPSHOT.jar\com\company\app\eventprocessor\provider\EventProvider.class

Los punteros son muy apreciadas.

James

  • Tener una mirada más cercana en el archivo de registro completo. Debería haber más información.
  • No hay más que el anterior en el servidor.registro de
InformationsquelleAutor James | 2010-08-03

1 Comentario

  1. 4

    De hecho, usted no está consiguiendo un ClassNotFoundException, usted está consiguiendo un NoClassDefFoundError y sospecho que algunas dependencias que faltan, como sugerido por:

    Class [ Lcom/company/app/jms/IJmsSessionFactory; ] not found. Error while loading [ class com.company.app.eventprocessor.provider.EventProvider 

    Donde es que com.company.app.jms.IJmsSessionFactory?


    Ahora he cortado la oreja a un solo módulo ejb y estoy haciendo el NoClassDef para Lorg/apache/log4j/Logger sin embargo, el log4j frasco está también en la oreja. Se siente como si me debe faltar algo fundamental aquí?

    Donde es el log4j.jar exactamente? En /lib? Se puede demostrar que la estructura de la OREJA? Y por favor, también muestran la MANIFEST.MF de su EJB-JAR.

    Por si acaso, aquí es una cita relevante de Empaquetado de Aplicaciones EJB 3:

    Embalaje EJB-JAR

    El EJB-JAR archivo debe incluir la
    interfaces y clases de bean. Puede
    también incluye todas las clases auxiliares.
    Opcionalmente, el ayudante de clases puede ser
    embalado por separado en un archivo JAR en el
    Archivo EAR. Usted tiene dos opciones:

    • El FRASCO que contiene clases auxiliares pueden ser envasados en el directorio lib
      de la OREJA de archivo. Con este enfoque,
      el empaquetado de las clases serán
      automáticamente visible para todos los módulos
      en el módulo auricular.
    • Si desea limitar la visibilidad solamente para un determinado EJB-JAR o WAR
      módulo, puede crear una entrada en el
      De manifiesto.mf archivo del módulo que
      contiene una Clase atributo de Ruta de acceso a la
      Archivo JAR.

    Ahora que se conoce la estructura de
    EJB-JAR y cómo empaquetar, vamos
    miren los elementos de ejb-jar.xml.


    La base de sus comentarios creo que estoy understadning mi problema. Parece que yo no soy de embalaje de la oreja correctamente, no creo que las dependencias maven se hace referencia correctamente. Si yo simplemente construir mi jar ejb no incluye ninguna de las personas a cargo de los frascos. Debo especificar algo en el pom para incluir los frascos ejb-jar? Tengo la build plugin <artifactId>maven-ejb-plugin</artifactId> y embalaje <packaging>ejb</packaging> conjunto.

    Agrupación dependencias en un EJB-JAR no es compatible (ver MEJB-3) sobre todo porque jar-dentro-de-jar no es parte de la TARRO de especificación (y podría no ser compatible con todas contenedor EJB) y no cumplir con Del sol asesoramiento sobre J2EE embalaje en general.

    Así que mientras que usted puede ignorar esta regla (véase este truco o este), la forma estándar sería el paquete de la EJB-JAR y todos los Frascos que depende en un OÍDO. Esta es mi recomendación y creo que este post puede ayudar a: Porque yo siempre te olvidas de cómo utilizar maven-oído-plugin.

    • Lo siento leer una cosa en la que escribió la otra, que está en el oído así, sin embargo: D:\Repository\App\AppEA\App-ear\target\App-ear.ear\CoreJms-1.0-SNAPSHOT.jar\com\company\app\jms\IJmsSessionFactory.class
    • Ahora he cortado la oreja a un solo módulo ejb y estoy haciendo el NoClassDef para Lorg/apache/log4j/Logger sin embargo, el log4j frasco está también en la oreja. Se siente como si me debe faltar algo fundamental aquí?
    • Por favor, proporcione la información solicitada y haga ping a mí después de la actualización.
    • Thivent en Base a tus comentarios creo que estoy understadning mi problema. Parece que yo no soy de embalaje de la oreja correctamente, no creo que las dependencias maven se hace referencia correctamente. Si yo simplemente construir mi jar ejb no incluye ninguna de las personas a cargo de los frascos. Debo especificar algo en el pom para incluir los frascos ejb-jar? Tengo la build plugin <artifactId>maven-ejb-plugin</artifactId> y embalaje <embalaje>ejb</embalaje> establecer.
    • Thivent Gracias a tu respuesta creo que estoy casi allí. Yo no entendía la necesidad de especificar las dependencias en el oído pom pensé que iba a recogerlos desde el módulo individual del pom. Yo estoy haciendo, lo que espero es, una última cuestión que no puedo explicar. Este error: javax.empresa.sistema.herramientas.de implementación.org.glassfish.de implementación.commad-1;|Error en la anotación de procesamiento: java.lang.NoClassDefFoundError: org/springframework/frijoles/fábrica/BeanNameAware|#] está haciendo campaña en mí, no estoy utilizando el springframework y parece que es glassfish que lo requiera. Alguna idea?
    • A mi conocimiento, GlassFish no utilizar la Primavera. Tiene que ser otra cosa. Está usted seguro de que esto no es una dependencia transitiva de su código?
    • Thivent basado en tu comentario he buscado una dependencia y no puede encontrar uno. He mirado en el gráfico de dependencia de la oreja de pom y nada de la primavera aparece allí. Incluso si hago una búsqueda de texto para ‘springframework’ en el proyecto me sale nada. Hay alguna forma de ver lo que la anotación de procesamiento de fracaso? O de todos modos me puede averiguar lo que está pasando aquí.
    • No tengo idea de donde esta insatisfecha de dependencia viene. Podrías pegar el log completo para pastie.org o algo por el estilo? (no estoy seguro de que voy a ser capaz de ayudar, aunque).
    • Thivent Gracias por la ayuda. He reducido el problema y creo que es porque estoy usando activemq. Sólo estoy usando el activemq-todos los jar que no necesita de otras dependencias, pero creo que debe haber algunas anotaciones a las clases en el frasco que tiene un depedency en primavera. Estoy buscando la manera de incluir la activemq frascos en glassfish así que no tengo este problema. Gracias

Dejar respuesta

Please enter your comment!
Please enter your name here