动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息



本月文章推荐
.基于Http协议的Java隧道通讯.
.Linux + Java = Lava(岩浆)?.
.Swing破局:打造半透明窗口.
.一个用来访问http服务器的东西。.
.JAVA教程 第六讲 Java.
.用.net和协议快速开发下载软件.
.Struts开发指南之MVC架构.
.Java Socket网络编程初级入门.
.Servlets:服务器端处理的极好选.
.Microsoft .NET的优势与劣势.
.Javax.servlet API的特征.
.让数据更安全 保护SQL Server的十.
.实现Java抽象工厂模式.
.JBuilder2005实现重构之升级到JD.
.Java语言深入:对java.lang的研究.
.运用Jakarta Struts的七大实战心.
.Java入门及faq__1(1).
.JBoss中EJB的开发.
.如何使用Java网络启动部署软件.
.使用Lists.

教您如何成为 EJB 专家详解系列连载之五

发表日期:2008-1-5 |



  为beanss增加功能
  1、关于beans的home对象和EJB对象的信息
  2、beans的当前事务信息
  3、对于客户授权的安全信息。beans可以通过查询环境决定客户执行操作所需要的安全层次
  4、beans的环境属性
  
  容器将所有这些信息保存在一个称为EJB context object的对象里。EJB上下文作为容器的物理部分,可以被beans访问。这些访问可以让beans得到当前的状态和改变当前的状态。上下文可以在beans的生命期中被更改。
  
  EJB1.0 Javax.ejb.EJBContext接口:
  
  public interface Javax.ejb.EJBContext
  {
  public Javax.ejb.EJBHome getEJBHome();
  public Java.util.Properties getEnvironment();
  public Java.security.Identity getCallerIdentity();
  public boolean isCallerInRole(Java.security.Identity);
  public Javax.jts.UserTransaction getUserTransaction();
  public void setRollbackOnly();
  public boolean getRollbackOnly();
  }
  
  会话beans的上下文,上下文根据beans的不同分为:会话上下文和实体上下文。它们分别被用于会话beans和实体beans。
  
  Javax.ejb.EJBContext
  public interface Javax.ejb.SessionContext
  extends Javax.ejb.EJBContext
  {
  public Javax.ejb.EJBObject getEJBObject();
  }
  
  注重:
  
  SessionContext接口继续了EJBContext接口,在EJBContext中定义的方法提供了对会话beans的存取路径。对于会话beans,调用setSessionContext,这个方法在Javax.ejb.Sessionbeans接口中被定义。对于实体beans,调用setEntityContext。
  
  SessionContext.getEJBObject()
  
  在EJB中,beanss可以作为其他beans的客户端。假如一个beans需要调用另外的beans,getEJBObject()方法则是必需的。在Java中,对象可以使用this要害字保存自身的参考。在EJB中,beans不能使用this要害字给其他beans传递对象,这是因为所有的客户调用beans上的方法都是间接调用beans的EJB对象。beans可以使用this要害字将自己传给EJB对象。
  
  了解EJB的安全性,首先,客户端必须是可被鉴别的。其次,客户端必须是已经授权的。
  
  第一步:鉴别;
  不同的EJB容器拥有不同的鉴别客户端的方法。例如:BEA的WebLogic中,当不同客户端代码使用JNDL定位Home对象时,提供不同的用户名和密码。
  
  Properties props = System.getProperties();
  props.put(Context.SECURITY_PRINCIPAL, "EmployeeA");
  props.put(Context.SECURITY_CREDENTIALS, "myPassWord1");
  Context ctx = new InitialContext(props);
  // Use the initial context to lookup home objects...
  
  EJB没有制定如何鉴别的规范,因此这样就影响了可移植性。要了解这方面,查看各类容器的文档。当运行这段代码时,应用服务器将验证你的用户名和密码,这是应用服务器规范。许多应用服务器答应在属性文件里设置用户名和密码。这个文件将在运行时由应用服务器读。高级点的服务器支持已经存在的验证系统的整合。例如将用户名和密码列表存储在LDAP服务器中。
  
  第二步:授权
  只有经过授权的客户端才可以调用beans中的方法。EJB中有两种验证授权的方法:declaratively和programmatically。即:由容器执行所有的授权检验、在程序中进行授权检查。
  
  Declarative授权检查时,要在配置描述符中声明beans的授权需要。例如使用BEA的WebLogic服务器的配置描述符的例子:
  
  
  (AccessControlEntries
  submitPurchaseOrder [employees]
  approvePurchaseOrder [managers]
  DEFAULT [administrators]
  ); end accessControlEntries
  
  容器将在运行时自动的执行安全检查。抛会出Java.lang.SecurityException异常。Programmatic授权检查,必须查询EJB上下文得到当前客户端的授权信息。由两种方法调用CallerInRole(Identity role)和getCallerIdentity()。
  
  isCallerInRole()
  import Java.security.Identity;
  ...
  public class Mybeans implements Sessionbeans {
  private SessionContext ctx;
  ...
  public void foo() {
  Identity id = new MyIdentity("administrators");
  if (ctx.isCallerInRole(id)) {
  System.out.println("An admin called me");
  return;
  }
  System.out.println("A non-admin called me");
  }
  }
  
  import Java.security.Identity;
  public class MyIdentity extends Identity {
  public MyIdentity(String id) {
  super(id);
  }
  }
  getCallerIdentity()
  import Java.security.Identity;
  ...
  public class Mybeans implements Sessionbeans {
  private SessionContext ctx;
  ...
  public void bar() {
  Identity id = ctx.getCallerIdentity();
  String name = id.getName();
  System.out.println("The caller′s name is " + name);
  }
  }
  
  了解EJB对象的操作,许多EJB应用程序需要客户端有与beans断开的能力,还要有与beans重建连接的能力。EJB提供了EJB object handles。EJB对象操作对于EJB对象是一个长生命期的代理。可以用它来重建与EJB对象的连接,并保证会话状态不被丢失。下面是EJB对象操作的代码:
  
  // First, get the EJB object handle from the EJB object.
  Javax.ejb.Handle myHandle = myEJBObject.getHandle();
  // Next, serialize myHandle, and then save it in
  // permanent storage.
  ObjectOutputStream stream = ...;
  stream.writeObject(myHandle);
  // time passes...
  // When we want to use the EJB object again,
  // deserialize the EJB object handle
  ObjectInputStream stream = ...;
  Handle myHandle = (Handle) stream.readObject();
  // Convert the EJB object handle back into an EJB object
  MyRemoteInterface myEJBObject =
  (MyRemoteInterface) myHandle.getEJBObject();
  // Resume calling methods again
  myEJBObject.callMethod();
上一篇:教您如何成为 EJB 专家详解系列连载之六 人气:284
下一篇:漫谈EJB——Enterprise JavaBeans(二) 人气:321
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-24 Sablog-X v2.0 预览版
2008-7-24 帝国备份王EmpireBak 2008 正式版
2008-7-24 网趣网上购物系统时尚版 v8.2
2008-7-24 纵横B2B电子商务系统XYECS!B2B v
2008-7-24 e路小说小偷 v1.2.0723
2008-7-24 凌风美女图片站程序 v2.2
2008-7-24 TOM15电影收索程序
2008-7-24 清风信息自动采集生成系统 v1.0
2008-7-24 QQ邮箱编辑器 v1.0 (小小菜刀ASP
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵