ejb finder 问题 (内祥,来者有分)

flashroom 2003-10-15 02:58:26
现在要做一个用户登陆验证
实体Bean里的finder 方法
findByName(String uname)
ejb ql::=select object(o) from user as o where o.uname=?1

可是当找不到的时候它就会抛出notfinder异常而不是返回null

很是郁闷。

象这样的验证怎么做呢??



谢谢

...全文
193 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
flashroom 2003-10-15
  • 打赏
  • 举报
回复
public boolean checkUser(String username, String password) {
try{
javax.naming.Context ctx=new javax.naming.InitialContext();
MyUserHome userhome=(MyUserHome)ctx.lookup("MyUser");
MyUser user=userhome.findByName(username);
if (user==null){
return false;
}
if (!user.getUPassword().equals(password)){
return false;
}
return true;
}catch(Exception e){e.printStackTrace();}
return true;
}


我的sessionbean就是这么写的。不对,他不会返回null
flashroom 2003-10-15
  • 打赏
  • 举报
回复
我用的是CMP

我看系统自动生成的文件里判断
if (__WL_pkMap.size() == 0) {
if(__WL_verbose) {
Debug.say("Throwing FinderException because bean wasn't found.");
}
throw new javax.ejb.ObjectNotFoundException("Bean not found in 'findByName'.");
}


你看,是系统自动向外抛的异常

kofwr(搭补流二),您的意思是不是让我在SessionBean里面try啊。




asdmonster 2003-10-15
  • 打赏
  • 举报
回复
为什么ejbFinder不返回 null:
我觉得是不是因为 ejbFinder找不到对象是因为Home无法定位相应的ejb,返回null是不适合的,因为这时候实例池里面有若干ejb对象,仅仅是他们无一例外的无法被正确定位罢了。
个人猜测哦,错了不要见笑。
lzl123 2003-10-15
  • 打赏
  • 举报
回复
ejb Finder做的很怪的地方就是:找不到数据的时候就抛出FinderException,
asdmonster 2003-10-15
  • 打赏
  • 举报
回复
可是当找不到的时候它就会抛出notfinder异常而不是返回null
=================================================================
你可以

findByName(String uname,String passwd)
ejb ql::=select object(o) from user as o where o.uname=?1 and o.passwd = ?2


内层catch ObjectNotFoundException,表明对象没有(也就是密码错误)
外层catch FinderException ,系统异常。
kofwr 2003-10-15
  • 打赏
  • 举报
回复
可以用一个session bean代理验证,比如session bean为SignOnEJB内有public boolean authenticate(String userName, String password)方法,这个方法调用实体bean UserBean中的findByPrimaryKey(String userName)(加入主键是userName)那么在UserBean这层是抛出FinderException,由于authenticate中调用的是类似于UserLocal user =UserBean的远程接口.findByPrimaryKey(userName);在这层上它会得到user=null,这样可继续处理,比如返回值为false,没通过怎么怎么样,通过了又怎么怎么样……
总之就是通过session bean过渡一下

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧