2011-03-05 40 views
0

我是J2EE/EJB領域的新手,我正在關注一些基本示例。我已經實現了一個總結2個數字的非常簡單的類。我有家庭和遠程接口以及Enterprise Bean(無狀態)本身。EJB + JSP:無法從主頁界面創建遠程對象

Adder.java //Remote interface 
AdderHome.java //Home interface 
AdderBean.java //The EJB class 

當測試它作爲一個EJB應用程序,一切都完美的作品。但是現在,我想將它作爲一個JSP頁面進行測試,但是在遠程接口從家庭接口實例化的時候出現錯誤(實際上沒有輸出)。

時間:我使用J2EE 1.4和JBoss 4

這裏的JSP頁面的代碼。它應該只打印出一行。

<%@page import="javax.naming.*" %> 
<%@page import="javax.rmi.PortableRemoteObject" %> 
<%@page import="java.util.Properties" %> 
<%@page import="com.lucasmariano.*" %> 

<% 
     //Preparing the properting to be put in the InitialContext 
     Properties properties = new Properties(); 
     properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); 
     properties.put(Context.PROVIDER_URL, "localhost:1099"); 

     try { 
      //Get an Initial Context    
      InitialContext jndiContext = new InitialContext(properties); 
      System.out.println("got context");    

      //get a reference to the bean 
      Object ref = jndiContext.lookup("Adder"); 
      System.out.println("got reference"); 


      //Get a reference to this to the bean's home interface 
      AdderHome home = (AdderHome) PortableRemoteObject.narrow(ref, AdderHome.class); 
      out.println("GETTING OBJECT <BR />"); 

      //create an Adder object from the Home interface 

      //###### HERE IS THE PROBLEM!!! ####### 
      Adder adder = home.create(); 
      out.println("ADDER OBJECT CREATED <BR />"); 
      out.println("2 + 5 = " + adder.add(2,5)); 

     }catch(Exception e){ 
      System.out.println(e.toString()); 
     } 
    %> 

我是否需要爲我的web.xml添加一些新值?

回答

1

我同意Duffymo。你在做什麼只是錯誤。

EJB是一項偉大的技術,但EJB2是徹頭徹尾的邪惡。它是在象牙塔中設計的,只有一個目標:讓開發者的生活儘可能地困難。

在這個時間和日子裏沒有理由開始與EJB2。學習EJB2的唯一原因是你必須保留一些用EJB2編寫的舊版應用程序(但我建議找另一份工作)。

儘管只有1個版本更高,但EJB3是完全不同的東西。這很容易,輕量級,非常合乎邏輯,並得到了很多社區反饋。但即使是EJB3也相當老舊。當前版本是EJB3.1,可以與Glassfish v3.1,JBoss AS 6或Resin 4一起使用(使用Resin,您將獲得EJB3.1 lite +)。

+0

事實上,我正在關注2002年出版的一本書。但是,我沒有想到事情會以這種方式完全改變(即使它是關於編程語言的,而且我知道它隨時間變化很大)。我會尋找一些關於EJB3和EJB3.1的資料,使其成爲最新的。非常感謝。 – LucasM 2011-03-05 18:00:38

0

我不會推薦這樣。 JSP中的Scriptlet令人不悅。

您正在使用哪個Java EE應用程序服務器?我希望它是Java EE 5或更高版本。我想知道你是否開始使用舊的EJB標準。

+0

感謝您的回答。即使這是我使用EJB + JSP的第一個應用程序,我也很清楚這不是繼續進行的最佳方式。我只想看到事情的工作。無論如何,我正在使用JBoss 4的J2EE 1.4。我也使用Netbeans 6.9.1。及時:我需要添加一些東西到我的web.xml有關家庭/遠程接口? – LucasM 2011-03-05 16:19:06

+0

也許是補品:http://javahowto.blogspot.com/2010/07/sample-webxml-servlet-30-with-ejb-ref.html – duffymo 2011-03-05 16:39:41