业务方法
在会话Bean内实现的方法必须对应于声明在远程或本地接口中的业务方法,它们具有相同的名字及方法签名,基于约定进行匹配。而Bean类中的其他方法,如果无法在业务接口中找到对应的声明,那将只作为Bean类的私有(Private)方法。
Bean SearchFacade实现了一个方法——wineSearch(),其同时声明在远程及本地业务接口中,wineSearch()方法根据酒的类型,返回一个静态酒名列表,例4是wineSearch()的实现部分。
例4:SearchFacadeBean.java
package com.apress.ejb3.chapter02; import java.util.ArrayList; import java.util.List; import javax.ejb.Stateless; @Stateless(name="SearchFacade") public class SearchFacadeBean implements SearchFacade, SearchFacadeLocal { public SearchFacadeBean() { } public List wineSearch(String wineType) { List wineList = new ArrayList(); if (wineType.equals("Red")) //此处搜索红葡萄酒 { wineList.add("Bordeaux——波尔多葡萄酒"); wineList.add("Merlot——墨尔乐红葡萄酒"); wineList.add("Pinot Noir——黑比诺葡萄酒"); } else if (wineType.equals("White")) //此处搜索白葡萄酒 { wineList.add("Chardonnay——夏敦埃酒"); } return wineList; } }
依赖性注入
以下将主要讨论无状态会话Bean中的依赖性注入——即资源捆绑。
EJB 3容器提供了一种便利,可以把多种类型的资源注入到无状态会话Bean中。举例来说,为了执行用户任务或处理发自客户端程序的请求,会话Bean中的业务方法需要一种或多种类型的“资源”,这些资源可以是其他会话Bean、数据源、或消息队列。
通过使用注释符或部署描述符,无状态会话Bean所用的资源就可被注入了,之后可由实例变量或set方法的注释来获取。例5中的代码使用了set方法及实例变量,myDb代表数据源。
例5:数据源注入 @Resource DataSource myDb; or @Resource public void setMyDb(DataSource myDb) { this.myDb = myDb; }
而set方法一般用作预先设定或初始化注入资源的属性。