使用捆绑软件内的 JPA 访问数据

关于此任务

使用捆绑软件内的 JPA 访问数据会假设您正在已被视为服务器上的 Java™ EE 模块的捆绑软件内工作。例如,已启用 JPA 构面且包含实体以及用于使用 JPA 访问、耗用和显示数据的逻辑的 OSGi Web 应用程序捆绑软件。另一个示例是包含 JPA 实体以及用于通过使用已在 OSGi 应用程序中发布(而不是 EAR 部署的一部分)的 JPA 耗用数据的逻辑的 Web 项目。

您需要先配置 OSGi 捆绑软件并将数据源添加至 WebSphere® Application Server,才能访问 JPA 持久性单元。

提示:

请确保 JPA 持久性文件包含对 Java 事务 API (JTA) 和非 JTA 数据源的引用。

JPA 提供了两种事务模式来访问数据源:
jta-data-source
Java Transaction API (JTA) 资源模式依赖于全局事务。JTA 资源模式通常在 Enterprise JavaBeans (EJB) 会话面的作用域内使用。此配置允许会话 Bean 在 JPA 处理持久性映射时控制事务和安全上下文。在这种情况下,应用程序不使用 EntityTransaction 接口,而是依赖于全局事务在被访问时随全局事务一起列出的 EntityManager。
non-jta-data-source
在缺乏全局事务的情况下,将使用非 JTA 资源模式来处理单个资源。通常在 Web 应用程序或应用程序客户机的作用域中使用非 JTA 资源模式。应用程序通过 EntityTransaction 接口来控制与数据源之间的事务。

在 OSGi 应用程序的 persistence.xml 文件中,jta-data-sourcenon-jta-data-source 元素通过 Java 命名和目录接口 (JNDI) 查找(针对服务注册表的 JNDI 查询)或通过蓝图访问数据源。

如果在 persistence.xml 文件中未配置 JTA 和非 JTA 数据源,那么将使用为服务器配置的缺省 JTA 和非 JTA 数据源。缺省情况下,这些值是空值。某些 JPA 实体功能需要指定非 JTA 数据源。例如,自动实体身份生成。

过程

  1. 将非 JTA 数据源添加至 persistence.xml
    1. 在编辑器中打开 persistence.xml
    2. 在“概述”部分中,查看组件列表并选择实体以显示该实体的详细信息。
    3. 在非 JTA 数据源字段中,输入非 JTA 数据源的全局 JNDI 名称。 例如,osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/blogdbnojta)
  2. 将 JTA 数据源添加至 persistence.xml
    1. 在编辑器中打开 persistence.xml
    2. 在“概述”部分中,查看组件列表并选择实体以显示该实体的详细信息。
    3. 在 JTA 数据源字段中,输入数据源的全局 JNDI 名称。 例如,osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/blogdb)
  3. 将 JDBC 提供程序添加至 WebSphere Application Server 管理控制台:
    1. 切换至“服务器”视图。
    2. 右键单击服务器实例,然后选择启动
    3. 右键单击服务器实例,然后选择管理 > 运行管理控制台以打开管理控制台。
    4. 单击资源 > JDBC > JDBC 提供程序
    5. 在“JDBC 提供程序”页面中单击新建。这时,将打开“创建数据源”向导。
    6. 请遵循向导中的指示信息以创建 JDBC 提供程序。
    7. 保存更改。
  4. 将数据源定义添加至 WebSphere Application Server 管理控制台:
    1. 在管理控制台中,单击资源 > JDBC > 数据源以在控制台中打开“数据源”页面。
    2. 在“数据源”页面中,单击新建以使用针对 persistence.xml 中指定的 JTA 连接定义设置的 JNDI 名称来创建数据源定义。 例如,jdbc/blogdb
    3. 在“数据源”页面中,单击新建以使用针对 persistence.xml 中指定的非 JTA 连接定义设置的 JNDI 名称来创建另一个数据源定义。 例如,jdbc/blogdbnojta
    4. 创建非 JTA 连接的数据源时,请单击管理控制台的“数据源”页面中非 JTA 连接的定义。这样会打开“配置”页面。
    5. 在“其他属性”部分中,单击 WebSphere Application Server 数据源属性
    6. 选择非事务性数据源 在应用程序服务器中,如果使用 <non-jta-data-source> 元素,那么要求对非事务数据源进行特殊配置。对应用程序服务器配置的“数据源”将不能用作 <non-jta-data-source>,这是因为由应用程序服务器配置的所有数据源都将自动随当前事务上下文列出。要防止这样的自动列出,请添加数据源定制属性 nonTransactionalDataSource=true

结果

这时,已将 persistence.xml 和 WebSphere Application Server 配置成访问 OSGi 捆绑软件中的 JPA。
指示主题类型的图标 任务主题
信息中心的条款和条件 | 反馈

时间戳记图标 最近一次更新时间: 2014 年 4 月 17 日

文件名:taccessjpainbundle.html