转载

JSP与EJB相互作用

以下是一个snippet代码,演示了JSP与EJB session bean进行相互作用。

  1. <%@ page import="javax.naming.*, javax.rmi.PortableRemoteObject,   
  2. foo.AccountHome, foo.Account" %>   
  3. <%!  
  4. //declare a "global" reference to an instance of the home 
    interface of the session bean   
  5. AccountHome accHome=null;  
  6. public void jspInit() ...{  
  7. //obtain an instance of the home interface   
  8. InitialContext cntxt = new InitialContext( );  
  9. Object refcntxt.lookup("java:comp/env/ejb/AccountEJB");  
  10. accHome = (AccountHome)PortableRemoteObject.narrow
    (ref,AccountHome.class);  
  11. }  
  12. %> 
  13. <%  
  14. //instantiate the session bean   
  15. Account acct = accHome.create();  
  16. //invoke the remote methods   
  17. acct.doWhatever(...);  
  18. // etc etc...   
  19. %> 

在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)。以上是JSP与EJB相互作用

正文到此结束
Loading...