快速业务通道

循速渐进学用Session Bean(五) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25
d, whether an exception occurred or nottry{ps.close();}catch (Exception ignore){}}}protected Connection getConnection()throws SQLException, NamingException{// Get a reference to the naming serviceInitialContext context = new InitialContext();// Get the data source for the pricing databaseDataSource ds = (DataSource) context.lookup("java:comp/env/jdbc/PriceDB");// Ask the data source to allocate a database connectionreturn ds.getConnection();}}

循速渐进学用Session Bean(五)(2)

时间:2008-05-07

PricingImpl中的getConnection值得留意一下。它使用JNDI(命名服务)来定位到一个名字为java:comp/env/jdbc/PriceDB的数据源。java:comp/env指的是你的session bean使用的JNDI naming context。当session bean被配置在一个EJB容器时,容器为你的bean设置了一个带有各个项目的naming context,这些项目是在你配置bean时建立的。java:comp/env naming context让你将逻辑名字和各种不同资源联系起来。这样你就可以在编写bean时,无需知道数据源或者Home接口的准确名字。当在配置bean到容器中时,设置bean使用的名字和真正资源名相关联。这样bean就并不绑定到某个特别的资源名字,可以提升bean的移植性。

在配置Pricing bean时,必须指定jdbc/PriceDB的一个别名。如果使用J2EE SDK带有的Cloudscape数据库,这个别名必须是jdbc/Cloudscape。否则,必须在EJB服务器中建立一个数据源,指向要使用的数据库。当配置Pricing bean时,指定jdbc/PriceDB引用的数据源名字。jdbc/PriceDB是一个逻辑名,Pricing bean可以使用多种不同的数据库,只要在配置bean时修改一下关联就可以了。

如果使用不同的数据源,可以在配置的时候修改它。还可以建立一个default.properties文件,里面包含有你需要使用的驱动和数据库信息。例如,对于Oracle数据库,可以使用以下的default.properties文件:

jdbc.drivers=oracle.jdbc.driver.OracleDriverjdbc.datasources=jdbc/Oracle|jdbc:oracle:thin:@localhost:1521:orcl

这样就建立了一个可选的数据源,它的名字是jdbc/Oracle,jdbc/PriceDB关联可以修改以便使用Oracle数据源。再次说明的是,你并不需要修改Pricing bean,你只要修改配置属性。

假定正在运行J2EE SDK配置工具,在配置工具的资源引用部分(Resource References section)设置了jdbc/PriceDB naming项目,如图6.8所示。

循速渐进学用Session Bean(五) - 编程入门网

********图6.8**************

资源引用对话框允许你设置一个session bean的naming context

Prcing bean和HelloWorldSession bean在配置上只有一点不同,这就是你必须在JNDI Names的标记页中指定jdbc/PriceDB的别名,如图6.9所示。

循速渐进学用Session Bean(五) - 编程入门网

********图6.9**************

JNDI names页让你设置bean使用的各种JNDI别名

循速渐进学用Session Bean(五)(3)

时间:2008-05-07

写一个客户来测试Pricing bean是很简单的,这个程序和你已经看到过的其它客户程序类似。列表6.12展示了Pricing的测试客户程序。

Listing 6.12 Source Code for TestPricing.javapackage usingj2ee.pricing;import java.util.*;import javax.naming.*;import javax.rmi.*;public class TestPricing{public static void main(String[] args){try{/** Creates a JNDI naming context for location objects */Context context = new InitialContext();/** Asks the context to locate an object named "Pricing" and expects theobject to implement the PricingHome interface */PricingHome home = (PricingHome)PortableRemoteObject.narrow(context.lookup("Pricing&

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号