2011-10-23 71 views
0

我創建了一個從我的應用程序客戶端啓動的小型junit測試。 我的服務器是glassfish 3.1.1。 當我運行測試,我得到這個錯誤:啓動JUNIT測試時創建上下文失敗

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial 

我已經添加了propreties到改變的背景之下,什麼都沒有。 這我怎麼設置我的背景:

@Before 
    public void setUp() throws NamingException { 
     Properties props = new Properties(); 
     System.out.println("launch"); 
     props.setProperty("java.naming.factory.initial", 
       "com.sun.enterprise.naming.SerialInitContextFactory"); 

     props.setProperty("java.naming.factory.url.pkgs", 
       "com.sun.enterprise.naming"); 

     props.setProperty("java.naming.factory.state", 
       "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl"); 


     // optional. Defaults to localhost. Only needed if web server is running 
     // on a different host than the appserver 
     //props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost"); 

     // optional. Defaults to 3700. Only needed if target orb port is not 3700. 
     //props.setProperty("org.omg.CORBA.ORBInitialPort", "3700"); 
     Context annuaire = new InitialContext(props); 
     GeoBeanRemote service = (GeoBeanRemote) annuaire.lookup(GeoBeanRemote.class.getName()); 
     BeanProvider.setGeoBean(service); 
    } 

APP-serv.rt和GF客戶端添加到我的運行測試。

謝謝。

+0

如果您使用的是GlassFish v3 +,則只需在您的類路徑中使用gf-client.jar –

+0

是否可以顯示異常堆棧跟蹤? –

回答

0

當我的類路徑中缺少jndi.properties時,我遇到了同樣的問題。

附錄: 我在這裏感覺有點傻,但我不認爲你可以這樣設置你的初始上下文。我注意到,雖然JNDI屬性甚至不需要在Glassfish上設置,所以顏色讓我感到困惑。

+0

通過代碼放置屬性或將它們寫入jndi.properties文件並加載它們之間有什麼區別?你可以粘貼你的jndi.properties嗎? – isoman