————————————
提纲:
————————————
步骤一:创建数据源引用
步骤二:测试数据源引用
步骤三:创建EJB引用
步骤四:测试EJB引用
————————————
资源引用使得应用程序能够通过别名查找数据源和EJB Home接口,避免使用实际的JNDI名称。代码中用到的别名与资源实际的JNDI名称之间的映射由管理员负责完成。
要使用别名,应用程序必须使用java:com/env名称空间。例如:
javax.naming.InitialContext ctx = new javax.naming.InitialContext(); DataSource ds = (DataSource) ctx.lookup("java:comp/env/DataSourceAlias"); |
资源名称映射的主要优点有:
▲ 管理员可以把数据源的别名映射到系统中已定义的数据源,多个毫无关联的应用程序可以共享同一个数据源。
▲ 多个不同的企业应用模块(EAM,Enterprise Application Module)可以包含同一个EJB,而不至引起JNDI名称冲突。针对每一个应用,管理员赋予EJB一个唯一的JNDI名称,然后把该名称映射到应用程序代码中用到的别名。
下面我们分别看看数据源引用、EJB引用的配置、使用过程。
步骤一:创建数据源引用
假设我们要在Servlet代码中通过别名DataSourceAlias查找一个数据源,而且系统中已有一个JNDI名称为jdbc/MyDataSource的数据源。下面介绍把别名映射到实际的JNDI名称的步骤。
假设要访问数据源别名的Servlet包含在一个Web项目中,首先在WSAD中打开部署描述符编辑器——双击Web项目的WEB-INF/web.xml文件。点击“引用”选项卡,再点击页面顶部的“资源”选项卡,如图一。
图一
点击“资源引用”下面的“添加”按钮,输入代码中使用的别名:DataSourceAlias。接着指定下列选项:
▲ 类型:javax.sql.DataSource。用旁边的“浏览”按钮选取该名字。
▲ 认证:Application。大多数Servlet和会话EJB或者通过DataSource.getConnection提供用 户ID和密码,或者依靠数据源的默认用户ID和密码获得访问,这类认证方式称为Application认证。CMP EJB要依靠容器来打开连接。
▲ 共享:Sharable
▲ WebSphere绑定:输入数据源的实际的JNDI名称。在本例中,这个名称是jdbc/MyDataSource。
保存并关闭部署描述符编辑器。
步骤二:测试数据源引用
在Web模块中新建一个Servlet,输入其doGet方法,代码如下所示:
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { javax.sql.DataSource ds = null; java.sql.Connection con = null; java.io.PrintWriter out = resp.getWriter(); resp.setContentType("text/html"); try { out.println("正在查找数据源<br>"); javax.naming.InitialContext ctx = new javax.naming.InitialContext(); ds = (javax.sql.DataSource) ctx.lookup("java:comp/env/DataSourceAlias"); out.println("获得连接...<br>"); con = ds.getConnection(); con.close(); } catch (Exception e) { e.printStackTrace(out); } out.println("完成!<br>"); } |
运行Servlet并进行测试。
步骤三:创建EJB引用
假设我们要在Servlet中通过别名SessionBeanAlias查找一个会话EJB,而该会话EJB实际的JNDI名称是ejb/com/acme/ejb/ItemHelperHome。下面来看看如何映射这两个名称。
打开web.xml文件编辑器,点击“引用”选项卡,从页面顶端选择“EJB”。点击“添加”按钮加入别名SessionBeanAlias。点击“链接”旁边的“浏览”按钮,系统将显示出当前模块所属应用中已定义的所有EJB,如图二。
图二
选中EJB,然后点击“确定”。系统将自动填写其本地/远程接口、EJB类型和JNDI名称,如图三。保存并关闭部署描述符编辑器。