2011-06-25 10 views
6

Estoy tratando de JUnit Pruebe una aplicación web J2EE con NB 7.0, JUnit y el servidor incrustado de Glassfish en una máquina Win7Professional.NetBeans 7.0, JUnit y Glasfish Embedded 3.1: no funciona

Lo analicé para probar una sencilla aplicación Hello-World Web con un solo Session Bean.

Tengo el glasfish-embedded-static-shell.jar en mi classpath, y también intenté usar glassfish-embedded-all-3.1 pero tampoco funcionó.

Ahora aquí está el código que utilizo para probar el café en grano:

import javax.ejb.embeddable.EJBContainer; 
import org.junit.AfterClass; 
import org.junit.BeforeClass; 
import org.junit.Test; 
import static org.junit.Assert.*; 

public class SimpleBeanTest { 

private static EJBContainer container; 

public SimpleBeanTest() { 
} 

@BeforeClass 
public static void setUpClass() throws Exception { 
    container = javax.ejb.embeddable.EJBContainer.createEJBContainer(); 
} 

@AfterClass 
public static void tearDownClass() throws Exception { 
    container.close(); 
} 

@Test 
public void testCountToThree() throws Exception { 
    System.out.println("countToThree"); 
    SimpleBean instance = (SimpleBean) container.getContext().lookup("java:global/classes/SimpleBean"); 
    int expResult = 0; 
    int result = instance.countToThree(); 
    assertEquals(expResult, result); 

} 
} 

Y aquí es lo que sale de ella:

19.06.2011 09:31:56 com.sun.enterprise.v3.server.CommonClassLoaderServiceImpl findDerbyClient 
INFO: Cannot find javadb client jar file, derby jdbc driver will not be available by default. 
19.06.2011 09:31:56 org.glassfish.flashlight.impl.provider.FlashlightProbeProviderFactory processXMLProbeProviders 
SCHWERWIEGEND: MNTG0301:Cannot process XML ProbeProvider, xml = META-INF/gfprobe-provider.xml 
java.lang.IllegalStateException: Provider already mapped glassfish:javamail:smtp-transport 

(StackTrace here) 

19.06.2011 09:31:57 org.glassfish.flashlight.impl.provider.FlashlightProbeProviderFactory processXMLProbeProviders 
SCHWERWIEGEND: MNTG0301:Cannot process XML ProbeProvider, xml = META-INF/mojarra-jsf-api-probe-provider.xml 
java.lang.IllegalStateException: Provider already mapped glassfish:jsf:faces-servlet 

(StackTrace here) 

19.06.2011 09:31:57 org.glassfish.flashlight.impl.provider.FlashlightProbeProviderFactory processXMLProbeProviders 
SCHWERWIEGEND: MNTG0301:Cannot process XML ProbeProvider, xml = jersey-gf-server-probe-provider.xml 
java.lang.IllegalStateException: Provider already mapped glassfish:jersey:server-hidden 

(StackTrace here) 

19.06.2011 09:31:57 org.glassfish.flashlight.impl.provider.FlashlightProbeProviderFactory processXMLProbeProviders 
SCHWERWIEGEND: MNTG0301:Cannot process XML ProbeProvider, xml = jersey-gf-statsprovider-probe-provider.xml 
java.lang.IllegalStateException: Provider already mapped glassfish:jersey:server 

(StackTrace here) 

19.06.2011 09:31:57 org.glassfish.ha.store.spi.BackingStoreFactoryRegistry register 
INFO: Registered org.glassfish.ha.store.adapter.cache.ShoalBackingStoreProxy for persistence-type = replicated in BackingStoreFactoryRegistry 
19.06.2011 09:31:57 org.glassfish.ha.store.spi.BackingStoreFactoryRegistry register 
INFO: Registered org.glassfish.ha.store.adapter.cache.ShoalBackingStoreProxy for persistence-type = replicated in BackingStoreFactoryRegistry 
19.06.2011 09:31:57 com.sun.enterprise.v3.server.AppServerStartup run 
SCHWERWIEGEND: Startdienst konnte nicht gestartet werden: com.sun.enterprise.naming.GlassFishNamingBuilder 
19.06.2011 09:31:57 com.sun.enterprise.v3.server.AppServerStartup run 
INFO: GlassFish Server Open Source Edition 3.1 (43) Startzeit: Embedded (597ms), Startdienste(929ms), gesamt(1.526ms) 
19.06.2011 09:31:57 org.glassfish.admin.mbeanserver.JMXStartupService$JMXConnectorsStarterThread run 
INFO: JMXStartupService: JMXConnector system is disabled, skipping. 

ACTUALIZACIÓN: Y esta es la excepción que sería lanzado por cualquier prueba:

No EJBContainer provider available 
Provider named org.glassfish.ejb.embedded.EJBContainerProviderImpl threw unexpected exception at create EJBContainer: 
java.lang.RuntimeException 
java.lang.RuntimeException: java.lang.IllegalStateException: AMX Booter MBean is already registered: amx-support:type=boot-amx 
    at org.glassfish.internal.embedded.Server.<init>(Server.java:290) 
    at org.glassfish.internal.embedded.Server.<init>(Server.java:66) 
    at org.glassfish.internal.embedded.Server$Builder.build(Server.java:176) 

(Stack Trace here) 

Caused by: java.lang.IllegalStateException: AMX Booter MBean is already registered: amx-support:type=boot-amx 

He reinstalado NetBeans dos veces y tampoco funciona.

Respuesta

3

que tenía el mismo problema e hice lo siguiente:

1) Instalé Glassfish 3.1.1 y lo vinculé a mi proyecto. Primero agregué el servidor con Herramientas - Servidores - Agregar servidor ... Luego hice clic derecho en mi proyecto EJB y Propiedades seleccionadas - Ejecutar - Glassfish 3.1.1
2) En mi EJB pom.xml utilizo esta dependencia (Asegúrese de que el systemPath puntos variables en el archivo correcto):

<dependency> 
    <groupId>org.glassfish.extras</groupId> 
    <artifactId>glassfish-embedded-static-shell</artifactId> 
    <version>3.1.1</version> 
    <scope>system</scope> 
    <systemPath>${glassfish.embedded-static-shell.jar}</systemPath> 
</dependency> 

3) En mi pom.xml EJB que retirados la dependencia de otras personas dijo que tengo que añadir que si consigo los errores "Proveedor ya asignado ..."

<dependency> 
    <groupId>org.glassfish.extras</groupId> 
    <artifactId>glassfish-embedded-all</artifactId> 
    <version>3.1.1</version> 
    <scope>test</scope> 
</dependency> 

Eso es todo! Ahora mis EJB JUnit pruebas con JPA 2 funcionan como un encanto! ¡Espero que esto ayude!

1

Parece que el servidor está comenzando bien (se esperan algunas de esas excepciones, pero no puedo confirmar si todas las hay).

  • ¿Está ejecutando los casos de prueba con "Ejecutar> Probar proyecto"?
  • ¿Aparece la GUI de JUnit?
  • ¿Está JUnit instalado? Netbeans 7.0 ahora pregunta si desea descargar JUnit debido a problemas de licencia ...
  • ¿Se pueden ejecutar pruebas unitarias que no necesitan el contenedor integrado?

Trate de seguir estos pasos: http://javadude.wordpress.com/2010/02/22/tutorial-most-simple-test-application-for-embedded-glassfish-netbeans-hudson/ (olvide la parte de Hudson). El IDE debe encargarse de incluir las dependencias por usted.

Ah, otra cosa, dado que está utilizando Windows, no le hará daño al tratar de ejecutar Netbeans como Admin (opción de clic derecho) y ver qué pasa.

Cheers,

actualización

Tal vez usted está golpeando this error:

A ver si a partir del contenedor como esto funciona para usted:

@BeforeClass 
public static void setUpClass() throws Exception { 
    Map<String, Object> p = new HashMap<String, Object>();  
    p.put(EJBContainer.APP_NAME, "foo"); 
    container = EJBContainer.createEJBContainer(p); 
} 
+0

Hola, Anthony, probé el tutorial con los mismos resultados. Sí, JUNit está instalado, vino con la instalación de NB, cuando intenté ejecutar las pruebas aparece la GUI. – SDReyes

+0

@DGalvis. Hola, ¿cuál es el problema, está colgando? ¿Está incluso mostrando "countToThree"? –

+0

Intenté instalar la edición completa de NB sin suerte. El uso de privilegios administrativos tampoco funciona. – SDReyes

Cuestiones relacionadas