jpa - persistence.xml 数据源和 web.xml/ibm-web-bnd.xml 资源引用之间的关系

标签 jpa web.xml websphere-8 persistence.xml

我正在尝试关注this教程,同时将其调整为在具有默认 Websphere JPA (OpenJPA) 实现的 Websphere 8.5.5 上运行。

我在 Eclipse 中创建了该项目并使用 WAS for Developers。

最初,在运行应用程序时,我收到有关资源引用不可用的错误(不记得确切的错误消息)

经过一些研究和大量的试错方法,我让应用程序运行起来。我必须在 web.xml 和 ibm-web-bnd.xml 中进行(或进行)更改,以将资源引用添加到 persistence.xml 中定义的数据源(不记得,如果我在试验中更改了其他任何内容)错误尝试)。

但是现在我有以下问题

  • 为了实现这一目标,实际需要做出哪些改变? 申请工作?

  • persistence.xml中的datasource和 web.xml/ibm-web-bnd.xml 中的资源引用?

  • 目前这是在动态 Web 项目中完成的。还有什么变化 如果我想在 EJB 项目中创建 JPA 或 JPA项目?

  • 在本教程中,JPA 位于动态 Web 项目中。有何改变 如果我创建一个 ejb 项目/JPA 项目并且想要 以这种方式执行应用程序,而不是在 Web 中定义 JPA 项目?

  • 有任何技术说明或其他文档可以解释这一点吗?

最佳答案

我会尽力澄清您的一些问题。

Datasource通常在服务器配置文件中定义和配置。它可以在应用程序中定义(通过 web.xmlannotations ),但我会避免这样做,因为它不太灵活,并且在应用程序本身中硬编码数据库详细信息。

数据源可通过 JNDI 名称提供给应用程序,例如 jdbc/myDS .

persistence.xml您可以提供 JPA 应用程序将使用的数据源 JNDI 名称。 JNDI 名称可以是全局名称(在这种情况下,它必须与服务器中定义的 JNDI 名称匹配 - 在我们的例子中是 jdbc/myDS),也可以是资源引用名称(例如 java:comp/env/jdbc/myDSReference) .

如果您使用资源引用,它会为您提供更好的灵活性,因为它不必与服务器中定义的 JNDI 名称匹配,但是您必须在应用程序中定义该引用并为其提供绑定(bind)。

定义引用和绑定(bind)有多种方法:

  • 注释
    使用@Resource Servlet 中的注释用于定义引用名称并通过查找属性进行绑定(bind):

    @Resource(type=DataSource.class, name="jdbc/myDSReference", lookup="jdbc/myDS")
    
  • 部署描述符
    使用web.xml通过 <resource-ref> 定义资源引用

ibm-mmm-bnd.xml文件(其中 mmm 对于 Web 模块可以是 web,对于 ejb 模块可以是 ejb-jar)是一个绑定(bind)文件,它可以提供引用和服务器上定义的全局 JNDI 名称之间的映射。您可以使用它代替 lookup属性(您必须在 Java EE 6 之前的应用程序中使用它,因为当时没有查找属性)。

还可以在应用程序安装期间或之后通过 WebSphere Web 管理控制台或通过 wsadmin 定义和更改该绑定(bind)。脚本编写。

对于 EJB 项目 - 如果您想使用引用,则必须将它们定义为任何将访问 EntityManager 的给定 bean 的资源引用。 。再次通过注释或部署描述符。

关于jpa - persistence.xml 数据源和 web.xml/ibm-web-bnd.xml 资源引用之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31632219/

相关文章:

java - 尝试在 Java 中将 List 从数据库转换为 json 时的 Stackoverflow

java - 如何在测试之间重新创建 EntityManagerFactory

java - Spring 无法注入(inject)实体管理器工厂

java - 如何定义 Java Tomcat 应用程序的正确启动顺序?

java - jboss 上的 web.xml 欢迎文件

java - 什么时候 select 比 for 快?

apache - 安全约束 web.xml url 模式安全

java - IBM Websphere 包的 Maven 依赖项

java - org.omg.CORBA.TRANSIENT : initial and forwarded IOR inaccessible vmcid: IBM minor code: E07 from stand-alone app

java - Websphere 8.5.5.2 附带了哪个版本的 AXIS2?