动态网站制作指南 [  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教程 ]的信息

本月文章推荐
.Eclipsecon 2006--BEA .
.开源技术:tomcat5.0下配置ssl.
.05年11月程序语言世界排行-Java居.
.Java程序员认证模拟题及详细分析.
.Java的文件与磁盘操作.
.敏捷开发的必要技巧:移除重复代.
.如何实现Applet之间跨浏览器窗口.
.Java 安全-java程序开发的程序的.
.利用jdom实现读取数据库生成XML及.
.什么是 Enterprise JavaBeans 组.
.在java应用程序中显示数据库的bl.
.基础:VC调用JAVA方法的一个注意.
.易混淆的几个JAVA术语(转贴).
.老康:Java开源项目Hibernate快速.
.JavaBean实现航空预定机票功能应.
.1年Java历程的回顾、反思与展望 .
.在Java编程中的“模式思想”与框.
.在目录中查找类位于哪个jar包中.
.Java2下Applet数字签名(1).
.Java 电 子 商 贸 结 构.

精通ejb【五】

发表日期:2008-1-5 |



  为Beans增加功能

EJB 上下文:通往容器的门户
存在如下信息:
1、关于bean的home对象和EJB对象的信息
2、bean的当前事务信息。
3、 对于客户授权的安全信息。Bean可以通过查询环境决定客户执行操作所需要的安全层次。
4、 bean的环境属性。
容器将所有这些信息保存在一个称为EJB context object的对象里。EJB上下文作为容器的物理部分,可以被bean访问。这些访问可以让bean得到当前的状态和改变当前的状态。
上下文可以在bean的生命期中被更改。
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();
}
会话bean的上下文
上下文根据bean的不同分为:会话上下文和实体上下文。它们分别被用于会话bean和实体bean

javax.ejb.EJBContext
public interface javax.ejb.SessionContext
extends javax.ejb.EJBContext
{
public javax.ejb.EJBObject getEJBObject();
}
注重:SessionContext接口继续了EJBContext接口,在EJBContext中定义的方法提供了对会话bean的存取路径。
对于会话bean,调用setSessionContext,这个方法在javax.ejb.SessionBean接口中被定义。对于实体bean,调用setEntityContext。
SessionContext.getEJBObject()
在EJB中,beans可以作为其他bean的客户端。假如一个bean需要调用另外的bean,getEJBObject()方法则是必需的。在java中,对象可以使用this要害字保存自身的参考。在EJB中,bean不能使用this要害字给其他bean传递对象,这是因为所有的客户调用bean上的方法都是间接调用bean的EJB对象。Bean可以使用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服务器中。
第二步:授权
只有经过授权的客户端才可以调用bean中的方法。EJB中有两种验证授权的方法:declaratively和programmatically。即:由容器执行所有的授权检验、在程序中进行授权检查。
Declarative授权检查时,要在配置描述符中声明bean的授权需要。例如使用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 MyBean implements SessionBean {
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 MyBean implements SessionBean {
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应用程序需要客户端有与bean断开的能力,还要有与bean重建连接的能力。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();
例子:The Puzzle Game “Fazuul”(参考原文)
上一篇:精通ejb【六】 人气:288
下一篇:精通ejb【四】 人气:312
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-9-6 Movie34电影搜索引擎 v3.0
2008-9-6 wap2.0仿帝国建站喜用 v2.0
2008-9-6 免费人才招聘网 宽屏版 v3.01
2008-9-6 喜喔喔视频采集程序 v1.0 beta
2008-9-6 ASP客户管理系统
2008-9-6 主流驿站中秋祝福程序
2008-9-6 php实现msn协议的类
2008-9-5 Coppermine Photo Gallery v1.4.
2008-9-5 清松网络日记本 v2.4
2008-8-23 Mini WinMount V0.4
2008-8-23 Vista优化大师3.11正式版
2008-8-23 Wine 1.13
2008-8-23 KlipFolio 5.0 Build 5899-80
2008-8-23 Windows Sysinternals Desktops
2008-8-23 OneTap Movies1.2破解版
2008-8-23 AnnotaterPDF阅读1.1.503 破解版
2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
2008-8-23 iDrum音乐节拍1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号