数据源的直接和间接 JNDI 查询方法
您可以使用 Java™ 命名和目录接口 (JNDI) 名称(例如 jdbc/DataSource)的直接或间接方法来查找数据源。
直接
[10/5/07 11:40:38:468 CDT] 0000002e ConnectionFac W J2CA0294W: Direct JNDI lookup of resource jdbc/myDatasource.
The following default values are used:
[Resource-ref CMConfigData key items]
res-auth: 1 (APPLICATION)
res-isolation-level: 0 (TRANSACTION_NONE)
res-sharing-scope: true (SHAREABLE)
loginConfigurationName: null
loginConfigProperties: null
[Resource-ref non-key items]
isCMP1_x: false (not CMP1.x)
isJMS: false (not JMS)
commitPriority 0
Java EE Name: not set
Resource ref name: not set
isCMP: false (not set)
这些属性中的第一个 res-auth 指示执行了哪种认证类型。此缺省设置指出,如果不指定激活规范或者不在 getConnection 调用上指定用户名和密码,那么就会使用组件管理的认证别名。它指出不使用容器管理的别名。
这些设置中的第二个 res-isolation-level 指出将隔离级别设置为“缺省”设置。对于企业 Bean,可在 Enterprise JavaBeans (EJB) Bean 本身中设置此项。对于获取连接的 Servlet,这导致隔离级别为 Repeatable_Read。这是相当严格的隔离级别。这可能会导致降低性能,因为与没这么严格的隔离级别相比,应用程序请求将锁定更多的行。
最后,res-sharing-scope 设置为可共享,表示使用可共享连接。对于某些应用程序,可共享连接相当好。但对于其他应用程序,特别是在单个 service() 方法中获取多个连接的那些 Servlet,共享连接就不是很好。
为了避免可能会伴随这些设置出现的任何意外,应将您的应用程序更改为使用间接 JNDI 名称而不是直接 JNDI 名称,并且应创建资源引用。
间接
要使用缺省值以外的值,请使用组装工具来定义您的资源引用。也可以使用组装工具在 EJB 部署描述符 (ejb-jar.xml)、Web 部署描述符 (web.xml) 或 Application Client 部署描述符 (application-client.xml) 编辑器中创建资源引用。定义了资源引用之后,您就可以执行间接 JNDI 查询(使用 java:comp/env 上下文)。然后就可使用在资源引用中定义的资源引用属性的值,并且 J2CA0122I 消息不再出现。请参阅有关创建资源引用的主题以获取更多信息。