2009-07-28 106 views
1

,這裏是我的Bean類的源調用企業bean方法

@Stateless(mappedName = 「StringVal」) 公共類NewSessionBean實現NewSessionRemote {

String val = null; 

public String stringChange(int parameter) { 
    while(parameter < 5){ 
     switch (parameter){ 
      case 1: System.out.println(val + "One" + ","); 
      case 2: System.out.println(val + "Two" + ","); 
      case 3: System.out.println(val + "Three" + ","); 
      case 4: System.out.println(val + "Four" + ","); 
     } 
    } 
    return val; 
}  

}

這是我的客戶端類對於這個bean(獨立客戶端)

import endpoint.NewSessionRemote; import javax.naming.InitialContext;

公共類TestLogicBean {

static String retVal = null; 

public static void main(String[] args) { 
    try { 
     InitialContext ctx = new InitialContext(); 
     NewSessionRemote br = (NewSessionRemote) ctx.lookup("StringVal"); 
     for (int i = 0; i < 5; i++) { 
      String retVal1 = br.stringChange(i); 
      System.out.println("EJB message is:" + retVal1); 
     } 


    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 

} 

}

但我發現了這個異常「javax.naming.NoInitialContextException:需要環境或系統屬性指定的類名,或者作爲一個applet參數,或者在一個應用程序資源文件中:java.naming.factory.initial「

我已經嘗試了幾種方法來做到這一點,但它仍然給出了這個例外。

+0

是不是調用你的bean的stringChange()方法會導致無限循環? :) –

回答

0

看我找到了什麼:

http://www.jboss.org/index.html?module=bb&op=viewtopic&t=38107

好像你必須有這個你jndi.properties:

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory 
java.naming.provider.url=jnp://localhost:1099 
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces 

看起來它是所有關於建立到JNDI的連接服務器。

+0

我使用glassfish作爲我的服務器應用程序,在那裏所有的設置都專門設置了所有設置,如此處所述https://glassfish.dev.java.net/javaee5/ejb/EJB_FAQ.html#StandaloneRemoteEJB但仍然沒有結果 – Switch

+0

你完成了所有5個步驟嗎?它應該像罐子上宣傳的那樣工作。 –