- 浏览: 244866 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (232)
- 瞎扯两句 (8)
- 操作系统 (5)
- 工作笔记 (33)
- 设计模式 (1)
- java (57)
- Java IDE (7)
- hibernate (17)
- oracle (46)
- ms sql (2)
- spring (9)
- struts2 (0)
- javascript (16)
- java_code (2)
- java之集合 (2)
- java之线程 (4)
- java之IO (4)
- java之虚拟机 (6)
- java之异常 (0)
- EJB (4)
- XML (4)
- 数据结构-算法 (2)
- 架构设计 (5)
- 配置信息 (2)
- 阅读笔记 (6)
- IT专业英语 (1)
- PI (0)
- 单元测试 (1)
最新评论
Context initial = new InitialContext();
Object objref = initial.lookup("java:comp/env/ejb/SimpleConverter");
一般情况下,intial.lookup("")中的参数就是你的JNDI名称。但是用的应用服务器,是把JNDI名放到java:comp/env/ejb/后面的。两种方式都没有错。比如:
TomCat5.0中使用的是Object objref = initial.lookup("java:comp/env/ejb/SimpleConverter"); WebLogic6.1中使用的是:
Object objref = initial.lookup("HelloHome");
InitialContext的构造方法主要是准备JNDI的访问环境,如果不加参数,那就意味着是用本地匿名访问,也就是说,用户角色是匿名,ctx.PROVIDER_URL是LOCALHOST
所以,对于本地测试(并且JNDI资源没有设置安全属性)这两段代码没有区别,如果要访问远程的JNDI资源,就必须用饱含JNDI环境参数Hashtable初始化InitialContext。
必要的环境参数如:
Context.INITIAL_CONTEXT_FACTORY//连接工厂
Context.PROVIDER_URL//访问连接
Context.SECURITY_PRINCIPAL//安全用户
Context.SECURITY_CREDENTIALS//用户密码
EJBLocalHome->本地主接口,负责控制Bean的整个生命周期,另外,可以看作是
生成Bean引用的
“工厂“类。
EJBLocalObject->本地组件接口,定义Bean要向客户提供的业务方法的签名。
本地接口是一种轻量级代理,语法更简单(直接类型转换,不需要narrow),
开销更小,速度更快。规范说可以在同一JVM内使用,我只在同一个EJB包内用过。
EJBLocalHome+EJBLocalObject vs EJBHome+EJBObject:
前一对不是远程调用,省时省力
Home vs Object:
前者是Factory模式,用来生成后者;后者是proxy模式,用来暴露商业逻辑
InitialContext context = new InitialContext();
Object ref = context.lookup(JNDIname);
accHome = (AccountHome)PortableRemoteObject.narrow(ref,AccountHome.class);
ejbObject = accHome.create();
上面即是ejb实例的一个很常见的创建过程
理解如下:
上面的创建过程是通过远程接口创建ejb实例的过程:即先通过JNDIname找到ejb本地接
口的一个实例,然后再通过本地接口的实例创建ejb实例,PortableRemoteObject.narrow(ref,AccountHome.class);
实际上是一个强制转换,由于是远程强制转换,所以要用PortableRemoteObject.narrow()方法。
// 创建一个JNDI naming contest
Context initial = new InitialContext();
// 从JNDI 中以MyConverter 名子来定位到对象(在发布名称指定了JNDI名称)
// Object objref = initial.lookup("java:comp/env/ejb/ConverterEJB");
Object objref = initial.lookup("MyConverter");
// 通过objref 得到ConverterHome 本地接口
ConverterHome home = (ConverterHome)PortableRemoteObject.narrow(
objref, ConverterHome.class);
// 再由Home 接口的create 方法来创建一个服务器上的EJB实例
Converter currencyConverter = home.create();
// 调用EJB 中的方法
代码省略
Object objref = initial.lookup("java:comp/env/ejb/SimpleConverter");
一般情况下,intial.lookup("")中的参数就是你的JNDI名称。但是用的应用服务器,是把JNDI名放到java:comp/env/ejb/后面的。两种方式都没有错。比如:
TomCat5.0中使用的是Object objref = initial.lookup("java:comp/env/ejb/SimpleConverter"); WebLogic6.1中使用的是:
Object objref = initial.lookup("HelloHome");
InitialContext的构造方法主要是准备JNDI的访问环境,如果不加参数,那就意味着是用本地匿名访问,也就是说,用户角色是匿名,ctx.PROVIDER_URL是LOCALHOST
所以,对于本地测试(并且JNDI资源没有设置安全属性)这两段代码没有区别,如果要访问远程的JNDI资源,就必须用饱含JNDI环境参数Hashtable初始化InitialContext。
必要的环境参数如:
Context.INITIAL_CONTEXT_FACTORY//连接工厂
Context.PROVIDER_URL//访问连接
Context.SECURITY_PRINCIPAL//安全用户
Context.SECURITY_CREDENTIALS//用户密码
EJBLocalHome->本地主接口,负责控制Bean的整个生命周期,另外,可以看作是
生成Bean引用的
“工厂“类。
EJBLocalObject->本地组件接口,定义Bean要向客户提供的业务方法的签名。
本地接口是一种轻量级代理,语法更简单(直接类型转换,不需要narrow),
开销更小,速度更快。规范说可以在同一JVM内使用,我只在同一个EJB包内用过。
EJBLocalHome+EJBLocalObject vs EJBHome+EJBObject:
前一对不是远程调用,省时省力
Home vs Object:
前者是Factory模式,用来生成后者;后者是proxy模式,用来暴露商业逻辑
InitialContext context = new InitialContext();
Object ref = context.lookup(JNDIname);
accHome = (AccountHome)PortableRemoteObject.narrow(ref,AccountHome.class);
ejbObject = accHome.create();
上面即是ejb实例的一个很常见的创建过程
理解如下:
上面的创建过程是通过远程接口创建ejb实例的过程:即先通过JNDIname找到ejb本地接
口的一个实例,然后再通过本地接口的实例创建ejb实例,PortableRemoteObject.narrow(ref,AccountHome.class);
实际上是一个强制转换,由于是远程强制转换,所以要用PortableRemoteObject.narrow()方法。
// 创建一个JNDI naming contest
Context initial = new InitialContext();
// 从JNDI 中以MyConverter 名子来定位到对象(在发布名称指定了JNDI名称)
// Object objref = initial.lookup("java:comp/env/ejb/ConverterEJB");
Object objref = initial.lookup("MyConverter");
// 通过objref 得到ConverterHome 本地接口
ConverterHome home = (ConverterHome)PortableRemoteObject.narrow(
objref, ConverterHome.class);
// 再由Home 接口的create 方法来创建一个服务器上的EJB实例
Converter currencyConverter = home.create();
// 调用EJB 中的方法
代码省略
发表评论
-
maven 和 sonar的集成
2013-05-22 18:34 986maven 和 sonar的集成 1.须运行 Sonar ... -
观察者/监听器 在 Entity 上的应用
2013-05-09 16:10 6271. 创建 业务Entity 时, 不同的entity可以选 ... -
从spec开始做系统(页面tmplate问题)
2013-04-26 18:12 561好久不做页面了,差点搞不清页面之间的关系。 原来是因为在spe ... -
动态级联列表
2013-04-25 15:17 6671.典型如国家区域省级等。 数据结构: code: ... -
cache 的应用
2013-04-11 18:54 7441. 情境: 在用户注册时,需要注册的信息较多,如需要身份信 ... -
以用户请求为中心的实现
2013-04-10 11:25 8001. 定义抽象GenericRequest类。 该类具有 ... -
记录用户操作历史
2013-04-10 10:30 7241. 异步,通过jms来实现。 2. 容易改造,通过Enti ... -
kettle 应用 2
2013-03-26 18:42 0import org.pentaho.di.core ... -
kettle 应用
2013-03-26 11:57 0目前阶段主要是用kettle做一些数据的导入导出。 遇到的问 ... -
TreeMap 的应用
2013-03-06 18:40 10251. 应用场景。 对于一对多的映射 A --B --C ... -
sonar 安装问题汇总
2013-02-21 15:15 823首先参照 http://www.cnblogs.com/cui ... -
Bat命令学习
2013-02-20 12:11 1010基础部分: ======================== ... -
定时执行bat
2013-02-19 16:38 70501. 需求说明 要求每天定时执行自动化测试。例如每天晚上 ... -
frame 与 iframe 及其区别
2013-02-18 15:09 9521. html5 不支持frame。 2. iframe 可 ... -
tomcat 阅读笔记 3
2013-02-05 16:32 6211. lifesycleListener 是通过在conta ... -
Oracle编程艺术阅读笔记-1
2013-01-24 18:48 8301. 绑定变量。 不使用会产生的影响: 每次运 ... -
servlet怎么控制页面缓存
2013-01-04 21:33 873(转) Html页面中的HTTP ... -
搜索优化,动态页面,静态页面,伪静态页面
2013-01-04 17:56 1096我们经常会看到 , 在地 ... -
note
2012-12-27 18:10 5881. spring的JtaTransactionManage ... -
通过eventTrigger,JMS实现业务的异步处理
2012-12-27 15:44 805说明:实现对用户操作的跟踪。 eventTrigger来发送 ...
相关推荐
介绍osgi 轻量级容器,KARAF 。使用
使用反射,简单工厂模式实现jdbc数据库操作,支持三种数据库oracle10g,mysql,sqlsever,作了简单的jndi操作,以及xml读取的应用,喜欢反射的同学可以看看
主要参照网上的将打包了
JNDI连接数据库配置,Context initCtx = new InitialContext(); Context envCtx = (Context) initCtx.lookup("java:comp/env"); DataSource ds = (DataSource) envCtx.lookup("jdbc/DevDB"); Connection conn = ...
Java连接数据库相关文档和软件 包括MySQL Front v5.0.Build.1.127特别中文绿色版 mysql-connector-java-5.0.8-bin.jar SQL SERVER jdbc驱动
InitialContext jndiContext = new InitialContext(properties); //取得Home对象的引用 Object ref = jndiContext.lookup("HelloWorldHome"); HelloWorldHome home = (HelloWorldHome) ...
InitialContext ctx = new InitialContext(props); HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote"); out.println(helloworld.SayHello("佛山人")); 5.用ant或eclipse,把...
JNDI 注简单来说就是在 JNDI 接在初始化时,如: InitialContext.lookup(URI) ,如果URI 可控,那么客户端就可能会被攻击通过
Context ic = new InitialContext(); DataSource source = (DataSource) ic.lookup("java:comp/env/jdbc/jndidemo"); dbcon = source.getConnection(); 需要导的包 import javax.naming.Context; import ...
jndi获取数据库连接,当前软件版本...Tomcat 为每个在其上运行的 Web 应用都提供了一个 JNDI 的 InitialContext 实现实例 Tomcat中的默认数据源支持基于Commons 项目中的DBCP 1.x连接池,也可以使用实现任何其他连接池
Context ic = new InitialContext(); DataSource source = (DataSource) ic. lookup("java:comp/env/jdbc/ownHome"); conn = source.getConnection(); } catch (Exception e) { throw new DBAccessException("不能...
第一步:写javabean 代码如下: package withouttears.jdbc.db; import java.util.HashMap;... import javax.naming.InitialContext; //数据库资源的连接工厂是javax.sql.DataSource对象, //它可以创建java.sql.Connec
import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; import org.apache.log4j.Logger; public class DBConnection { /** * 获得与数据库的连接 * ...
InitialContext . doLookup( " ldap://your_server.com:1389/o=reference " ); 它将启动从易受攻击的客户端到本地LDAP服务器的连接。 然后,本地服务器使用包含有效载荷之一的恶意条目进行响应,这对于实现远程...
try { Context context = new InitialContext(jndiProperties); final String appName = ""; final String moduleName = "TestEJB"; final String distinctName = ""; Object obj = context.lookup("ejb:" + ...
initialcontext_general.m,。/ demo_salmatch_cuhk01.m中将“ /”替换为“ ## Demo当前提供了一个演示 demo_salmatch_cuhk01.m:对CUHK01数据集进行评估 ##评论 在CUHK01数据集上,运行demo_salmatch_cuhk01.m...
Context ctx = (Context) new InitialContext().lookup("java:comp/env"); DataSource ds = (DataSource) ctx.lookup(jndi); Connection cn = ds.getConnection(); 3>.执行sql语句(Execute the SQL) <1>.用...
InitialContext ic = new InitialContext(); //动态装入CATALOG_DAO_CLASS //可以定义自己的CATALOG_DAO_CLASS,从而在无需变更太多代码 //的前提下,完成系统的巨大变更。 String className =(String) ...
数据库操作 采用JNDI 连接 ====================================================== --> <%<br> Context ctx=new InitialContext(); if(ctx==null) {throw new Exception("没有匹配的...
你必须找到相关的对象,以适当的粒度将它们归 类,再定义类的接口和继承层次,建立对象之间的基本关系。你的设计应该对手头的问题有针对性,同时对将来的问题和需求 也要有足够的通用性。 你也希望避免重复设计或尽...