JSP與EJB通信
JSP與EJB通信 作者:Blueski 編譯
以下是一個snippet代碼,演示了JSP頁面如何與 EJB session bean進行相互作用。
在JSP中java代碼應該越少越好。
在以上例子中,JSP設計者不得不處理和理解存取EJB的機理。 代替 在一個Mediator中對EJB機制的壓縮以及將EJB方法作為Mediator的方法,
可以在JSP中使用 Mediator。Mediator通常由EJB設計者編寫。Mediator可以提供附加的值如attribute caching等.
JSP scriptlet代碼必須最小化。如果要在jsp中直接請求ejb可能要在jsp 中寫許多代碼,包括try...catch等函數塊來進行操作。
使用一個標準的JavaBean作為一個jsp和EJB服務器的中介可以減少在jsp中的java代碼的數量,并可提高可重用性。這個JavaBean必須是一個你所存取的EJB的覆蓋(wrapper)。
如果你使用標準的JavaBean,你可以使用 jsp:useBean標記來初始化EJB參數,如服務器URL和服務器安全參數等。
自定義標記也可以是一種選擇。但是,這要求比一個簡單JavaBean wrapper更多的編碼。
該處必須被重新寫為盡可能小的代碼并保證JSP腳本內容盡可能輕(light)。
以下是一個snippet代碼,演示了JSP頁面如何與 EJB session bean進行相互作用。
<%@ page import="javax.naming.*, javax.rmi.PortableRemoteObject, foo.AccountHome, foo.Account" %> <%! file://declare a "global" reference to an instance of the home interface of file://the session bean AccountHome accHome=null; public void jspInit() { file://obtain an instance of the home interface InitialContext cntxt = new InitialContext( ); Object ref= cntxt.lookup("java:comp/env/ejb/AccountEJB"); accHome = (AccountHome)PortableRemoteObject.narrow(ref,AccountHome.class); } %> <% file://instantiate the session bean Account acct = accHome.create(); file://invoke the remote methods acct.doWhatever(...); // etc etc... %> |
在JSP中java代碼應該越少越好。
在以上例子中,JSP設計者不得不處理和理解存取EJB的機理。 代替 在一個Mediator中對EJB機制的壓縮以及將EJB方法作為Mediator的方法,
可以在JSP中使用 Mediator。Mediator通常由EJB設計者編寫。Mediator可以提供附加的值如attribute caching等.
JSP scriptlet代碼必須最小化。如果要在jsp中直接請求ejb可能要在jsp 中寫許多代碼,包括try...catch等函數塊來進行操作。
使用一個標準的JavaBean作為一個jsp和EJB服務器的中介可以減少在jsp中的java代碼的數量,并可提高可重用性。這個JavaBean必須是一個你所存取的EJB的覆蓋(wrapper)。
如果你使用標準的JavaBean,你可以使用 jsp:useBean標記來初始化EJB參數,如服務器URL和服務器安全參數等。
自定義標記也可以是一種選擇。但是,這要求比一個簡單JavaBean wrapper更多的編碼。
該處必須被重新寫為盡可能小的代碼并保證JSP腳本內容盡可能輕(light)。