persistence.xml数据源与web.xml / ibm-web-bnd.xml资源-ref之间的关系

时间:2015-07-25 23:48:23

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

我正在尝试遵循this教程,同时使用默认的Websphere JPA(OpenJPA)实现来调整它以在Websphere 8.5.5上运行。

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

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

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

但是现在,我有以下问题

  • 实际需要进行哪些更改 申请工作?

  • persistence.xml和datasource之间的关系是什么? web.xml / ibm-web-bnd.xml中的resource-ref?

  • 目前,这是在动态网络项目中完成的。还有什么变化 如果我想在EJB项目中创建JPA,我需要制作 JPA项目?

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

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

2 个答案:

答案 0 :(得分:1)

我建议使用Websphere Liberty Profile 8.5.5.6(当前版本)。

一些澄清(您可能已经知道):

<强>的web.xml 包含你的servlet,映射,init参数,监听器,安全性,数据源等。

<强>的persistence.xml 在处理持久性单元时是必需的。它定义了配置(JPA访问意图,隔离级别,锁级别等)。 它包含实体类和应用的数据源。

<强> IBM的Web-bnd.xml 它包含逻辑资源的映射。数据源,Jms绑定,Ejb绑定......

我建议 IBM redbooks ,例如WebSphere Application Server V8.5 Administration and Configuration Guide for the Full Profile

  

来自web.xml的资源引用与来自应用程序服务器的JNDI名称之间的映射可以存储在2个位置。   您可以在开发期间在“绑定文件”中定义此映射 - 如果是Web模块,则将其存储在WEB-INF / ibm-web-bnd.xml文件中。   如果您使用RAD,您可以通过右键单击Web项目JEE创建绑定文件 - &gt;生成Bindings部署描述符。   然后在描述符中你输入这样的东西:          然后在安装过程中使用它。   如果你没有通过文件指定bindig,你可以在应用程序安装期间执行此操作,例如。通过控制台。然后创建绑定文件并将其存储在:   PROFILE_ROOT \ installedApps \ cellName \ Application.ear \ WebModule.war \ WEB-INF \ ibm-web-bnd.xml in   PROFILE_ROOT \配置\细胞\单元名\应用程序\ Application.ear \部署\应用程序\ WebModule.war \ WEB-INF \ IBM的Web-bnd.xml

developerworks forum

答案 1 :(得分:1)

我会尝试澄清你的一些问题。

通常在服务器配置文件中定义和配置

Datasource。它可以在应用程序中定义(通过web.xmlannotations),但我要避免这种情况,因为它在应用程序本身中的数据库细节不够灵活和硬编码。

数据源通过JNDI名称提供给应用程序,让我们说jdbc/myDS

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

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

有几种方法可以定义引用和绑定:

  • 注解
    在servlet中使用@Resource注释通过lookup属性定义引用名称和绑定:

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

  • 定义资源参考

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

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

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