一点粗浅的认识,与 hzhstar (云) 兄探讨:
1.虽然EJB在Naming.lookup("hello")的时候没有指定服务器IP,但在构造Naming对象的时候是要指定的,通常像下面这样:
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
properties.put(Context.PROVIDER_URL, "t3://211.34.59.6:7001");
Context Naming = new InitialContext(properties);
当然,这样做跟RMI的调用没太大的区别了,把服务位置写死在了代码中----但这跟ejb 号称的服务透明原则相背,而且上面的代码不可能用在cluster中实现load balance,所以另一种做法是把服务器ip写在jndi.properties中放到classpath下,这样做可能在部署期指定服务,移植性很好.2.EJB是基于RMI-IIOP的,而RMI-IIOP实现了RMI的一个子集而已.如果你注意过,应该知道EJB的Remote和home接口都间接继承自java.rmi.Remote,这使的ejb得意借用RMI的分布式特性.要说EJB跟RMI的区别,我觉得可以用一句话说:EJB spec要求把服务定位,分布式事务等底层操作都放到应用服务器中实现了,可以让开发人员避开底层的实现细节,专注与business logic的开发.
1.虽然EJB在Naming.lookup("hello")的时候没有指定服务器IP,但在构造Naming对象的时候是要指定的,通常像下面这样:
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
properties.put(Context.PROVIDER_URL, "t3://211.34.59.6:7001");
Context Naming = new InitialContext(properties);
当然,这样做跟RMI的调用没太大的区别了,把服务位置写死在了代码中----但这跟ejb 号称的服务透明原则相背,而且上面的代码不可能用在cluster中实现load balance,所以另一种做法是把服务器ip写在jndi.properties中放到classpath下,这样做可能在部署期指定服务,移植性很好.2.EJB是基于RMI-IIOP的,而RMI-IIOP实现了RMI的一个子集而已.如果你注意过,应该知道EJB的Remote和home接口都间接继承自java.rmi.Remote,这使的ejb得意借用RMI的分布式特性.要说EJB跟RMI的区别,我觉得可以用一句话说:EJB spec要求把服务定位,分布式事务等底层操作都放到应用服务器中实现了,可以让开发人员避开底层的实现细节,专注与business logic的开发.
解决方案 »
- 谁能说说学好面向对象的好方法?
- 请教:使用maven后,如何使用svn插件提交代码
- 使用jdom解析xml的问题?高手帮帮忙啊
- 项目放到远程服务器There is no Action mapped for namespace / and action name member.
- 问一个很弱智的问题!
- 关于struts
- ldap 创建活动目录 和创建Exchange邮箱书
- JMS实现有选择接收消息队列中的消息,有哪些方法?
- 有谁能帮我?将ORACLE中的BLOB转换成JAVA的BYTE[]!!!!!!急急!!!!!
- struts的发展前景怎样
- rmi的问题! 100分 在线等待! 立即结分!
- (~急求~)JSP调用过程时,为何我得不到结果集参数?
jndi可以通过context指定服务器地址
你为我解开了困惑!因为我最近要把一个原来用java rmi的分布式程序改作用ejb实现,
对一些两者区分要比较清醒认识!我还有些问题需要请教你,
能否留一下您的email?
我最近经常泡在csdn上,有问题我也可以看得到:)
你帮我看一下那篇文章,已发!
lzl123(潜龙) 兄弟,我按照你的方法,将jndi.properties放在classpath下,但是就是的不到里面的信息啊,能否给小弟发一个使用例子,感激不尽!!!