@RunAs注释指定了角色"myrole"可以访问企业Bean方法SlessLocal.hello(String message)。
二、在企业Bean中使用注释
下面是上述的无状态企业Bean的主要代码: @Stateless @Local({SlessLocal.class}) public class SlessBean implements SlessLocal { @RolesAllowed(value={"myrole"}) public String hello(String message) { return "Hello, " + message + ", " + new Date(); } }
从上面的代码我们可以注意到hello方法通过使用@RolesAllowed注释被保护了起。这个注释指定了只有用户"myrole"才能访问hello方法。
三、在JSP和标签库中使用注释
在显示业display.jsp中,调用了JSP标签库中的一个动作,并将属性EJB_MESSAGE作为一个参数传入HttpServletRequest。下面是display.jsp的部分代码: <%@taglib prefix="di" uri="http://java.sun.com/techtip/webann/test-taglib"%> ... <di:displayInfo ejbMessage="${requestScope.EJB_MESSAGE}"/> ...
上面所使用的标签将从ejbMessage参数中读取值,并将这个值显示在HTML中。而且它会这数据源打印出登录超时。下面是标签处理类似部分代码: public class DisplayInfoTagHandler extends SimpleTagSupport { private @Resource(name="jdbc/__default") DataSource ds; ... public void doTag() throws JspException, IOException { try { JspWriter out = getJspContext().getOut(); int timeout = ds.getLoginTimeout(); if (ejbMessage != null && ejbMessage.length() > 0) { out.println( "<li> Ejb Message: " + ejbMessage); } out.println( "<li> DataSource login timeout: " + timeout); ... } public void setEjbMessage(String ejbMessage) { this.ejbMessage = ejbMessage; } }
上面代码中的@Resource注释在标签类中使用JNDI"jdbc/__default"来查询DataSource。这个JNDI名对应于默认的数据库。如果我们想访问数据库连接,可以在tag处理类中加入ds.getConnection()。
(编辑:aniston)
|