Java NetBeans 7.0、JUnit和Glassfish嵌入3.1:不起作用

Java NetBeans 7.0、JUnit和Glassfish嵌入3.1:不起作用,java,netbeans,jakarta-ee,glassfish,glassfish-embedded,Java,Netbeans,Jakarta Ee,Glassfish,Glassfish Embedded,我正试图用NB7.0、JUnit和Win7Professional机器中的嵌入式Glassfish服务器测试一个J2EE Web应用程序 我把它分解成一个简单的Hello World Web应用程序,用一个会话Bean进行测试 我的类路径中有glasfish-embedded-static-shell.jar,还尝试使用glassfish-embedded-all-3.1,但它也不起作用 下面是我用来测试bean的代码: import javax.ejb.embeddable.EJBContai

我正试图用NB7.0、JUnit和Win7Professional机器中的嵌入式Glassfish服务器测试一个J2EE Web应用程序

我把它分解成一个简单的Hello World Web应用程序,用一个会话Bean进行测试

我的类路径中有glasfish-embedded-static-shell.jar,还尝试使用glassfish-embedded-all-3.1,但它也不起作用

下面是我用来测试bean的代码:

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);

}
}
下面是从中得出的结论:

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.
更新: 这是任何测试都会引发的异常:

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
没有可用的EJBContainer提供程序
名为org.glassfish.ejb.embedded.EJBContainerProviderImpl的提供程序在创建EJBContainer时引发意外异常:
java.lang.RuntimeException
java.lang.RuntimeException:java.lang.IllegalStateException:AMX引导程序MBean已注册:AMX支持:type=boot AMX
位于org.glassfish.internal.embedded.Server.(Server.java:290)
位于org.glassfish.internal.embedded.Server.(Server.java:66)
位于org.glassfish.internal.embedded.Server$Builder.build(Server.java:176)
(此处为堆栈跟踪)
原因:java.lang.IllegalStateException:AMX引导程序MBean已注册:AMX支持:type=boot AMX

我已经重新安装了两次NetBeans,但都不起作用。

似乎服务器启动正常(有些异常是预期的,但我无法确认是否所有异常都正常)

  • 您是否使用“运行>测试项目”运行测试用例
  • JUnitGUI正在弹出吗
  • 是否安装了JUnit?Netbeans 7.0现在询问您是否因为许可问题而要下载JUnit
  • 您可以运行不需要嵌入式容器的单元测试吗
试着遵循这些步骤:(忘记哈德逊部分)。IDE应该为您考虑包含依赖项

哦,还有一件事,因为您使用的是Windows,所以尝试以管理员身份运行Netbeans(右键单击选项)并看看会发生什么情况不会有什么坏处

干杯

更新

也许你遇到了错误:

查看这样启动容器是否适合您:

@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);
}
@BeforeClass
公共静态void setUpClass()引发异常{
Map p=新的HashMap();
p、 put(EJBContainer.APP_名称,“foo”);
container=EJBContainer.createEJBContainer(p);
}

我也有同样的问题,我做了以下事情:

1) 我安装了Glassfish 3.1.1并将其链接到我的项目。首先,我添加了带有工具的服务器-服务器-添加服务器。。。然后,我右键单击我的EJB项目并选择Properties-Run-Glassfish 3.1.1
2) 在EJB pom.xml中,我使用此依赖项(确保systemPath变量指向正确的文件):


org.glassfish.extras
嵌有静电外壳的玻璃鱼
3.1.1
系统
${glassfish.embedded static shell.jar}
3) 在我的EJB pom.xml中,我删除了其他人说如果我得到错误“Provider ready mapped…”我必须添加的依赖项


org.glassfish.extras
玻璃鱼嵌入所有
3.1.1
测试

就这样!现在,我用JPA2进行的EJB JUnit测试工作得非常出色!希望这有帮助

嗨,Anthony,我试过教程,结果也一样。是的,JUNit已安装,它随NB安装而来,当我尝试运行测试时,GUI出现。@DGalvis。嗨,有什么问题吗,它挂着吗?它甚至显示“countToThree”吗?我试图安装NB完整版,但没有成功。使用管理权限也不起作用。@Anthony当我运行测试时,他们抛出了此异常:“没有名为org.glassfish.ejb.embedded.EJBContainerProviderImpl的EJBContainer可用提供程序在创建EJBContainer时抛出了意外异常:…”@DGalvis,上面的代码幸运吗?如果没有,我将下载一个新版本的Glassfish,并像以前一样在类路径中包含
Glassfish嵌入式静态shell.jar
<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>
<dependency>
    <groupId>org.glassfish.extras</groupId>
    <artifactId>glassfish-embedded-all</artifactId>
    <version>3.1.1</version>
    <scope>test</scope>
</dependency>