2011-06-25 35 views
6

Tôi đang cố gắng JUnit Thử nghiệm một ứng dụng web J2EE với NB 7.0, JUnit và máy chủ Glassfish nhúng trong máy Win7Professional.NetBeans 7.0, JUnit và Glasfish Embedded 3.1: Không hoạt động

Tôi đã phá vỡ nó xuống để chỉ thử nghiệm một ứng dụng đơn giản Hello-World Web đơn giản với một Session Bean duy nhất.

Tôi có glasfish-embedded-static-shell.jar trong classpath của mình và cũng cố gắng sử dụng glassfish-embedded-all-3.1 nhưng cũng không hoạt động.

Bây giờ đây là đoạn code tôi sử dụng để kiểm tra đậu:

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

} 
} 

Và đây là những gì đi ra khỏi nó:

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. 

UPDATE: Và đây là ngoại lệ đó sẽ là được thử bởi bất kỳ thử nghiệm nào:

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 

Tôi đã cài đặt lại NetBeans hai lần và nó cũng không hoạt động.

Trả lời

3

tôi đã cùng vấn đề và tôi đã làm như sau:

1) Tôi đã cài đặt Glassfish 3.1.1 và liên kết nó với dự án của tôi. Đầu tiên tôi thêm máy chủ với Tools - Servers - Add Server ... Sau đó, tôi nhấp chuột phải vào dự án EJB của tôi và chọn Properties - Run - Glassfish 3.1.1
2) Trong EJB của tôi.xml tôi sử dụng phụ thuộc này (đảm bảo systemPath điểm biến để các tập tin chính xác):

<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) Trong pom.xml EJB tôi loại bỏ người phụ thuộc khác nói rằng tôi cần phải thêm nó nếu tôi nhận được các lỗi "Nhà cung cấp đã được lập bản đồ ..."

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

Đúng vậy! Bây giờ bài kiểm tra EJB JUnit của tôi với JPA 2 hoạt động như một sự quyến rũ! Hi vọng điêu nay co ich!

1

Có vẻ như máy chủ đang khởi động ok (một số ngoại lệ được mong đợi, nhưng tôi không thể xác nhận nếu tất cả đều là).

  • Bạn có đang chạy các trường hợp kiểm tra với "Chạy> Dự án thử nghiệm" không?
  • Giao diện JUnit có bật lên không?
  • JUnit có được cài đặt không? Hiện tại, Netbeans 7.0 hỏi bạn có muốn tải xuống JUnit không vì các vấn đề cấp phép ...
  • Bạn có thể chạy các kiểm tra đơn vị không cần vùng chứa được nhúng không?

Hãy thử làm theo các bước sau: http://javadude.wordpress.com/2010/02/22/tutorial-most-simple-test-application-for-embedded-glassfish-netbeans-hudson/ (quên phần Hudson). IDE nên chăm sóc bao gồm các phụ thuộc cho bạn.

Ồ, một điều nữa, vì bạn đang sử dụng Windows, nó sẽ không làm tổn thương khi cố gắng chạy Netbeans với tư cách Quản trị viên (tùy chọn nhấp chuột phải) và xem điều gì xảy ra.

Chúc mừng,

Cập nhật

Có lẽ bạn đang đánh this lỗi:

Xem nếu bắt đầu container như thế này làm việc cho bạn:

@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

Hi Anthony, tôi đã cố gắng hướng dẫn với kết quả tương tự. Vâng, JUnit được cài đặt, nó đi kèm với quá trình cài đặt NB, khi tôi đã cố gắng để chạy thử nghiệm GUI xuất hiện. – SDReyes

+0

@DGalvis. Xin chào, vậy vấn đề là gì, nó có treo không? Nó thậm chí có hiển thị "countToThree" không? –

+0

Tôi đã cố cài đặt phiên bản đầy đủ của NB không có may mắn. Sử dụng đặc quyền quản trị cũng không hoạt động. – SDReyes

Các vấn đề liên quan