persistence.xml 数据源与 web.xml / ibm-web-bnd.xml 资源参考之间的关系
Relationship between persistence.xml datasource and web.xml / ibm-web-bnd.xml resource-ref
我正在尝试遵循 this 教程,同时在 Websphere 8.5.5 上使用默认的 Websphere JPA ( OpenJPA ) 实现使其适应 运行。
我在 Eclipse 中创建项目并使用 WAS for Developers。
最初,当 运行 启动应用程序时,我收到有关资源引用不可用的错误(不记得确切的错误消息)
经过一些研究和大量试错方法后,我让应用程序开始工作。我必须在 web.xml 和 ibm-web-bnd.xml 中进行(或进行)更改以将 resource-ref 添加到 persistence.xml 中定义的数据源(不记得了,如果我更改了尝试和错误尝试中的任何其他内容)。
但是现在,我有以下问题
实际需要进行哪些更改才能实现
申请工作?
persistence.xml和persistence.xml中的datasource有什么关系
web.xml / ibm-web-bnd.xml?
中的资源参考
这是目前在一个动态网络项目中完成的。还有哪些变化
如果我想在 EJB 项目或
JPA 项目?
在本教程中,JPA 在动态 Web 项目中。有什么变化
如果我创建一个 ejb 项目/JPA 项目并且想要
以这种方式执行应用程序,而不是在 Web 中定义 JPA
项目?
是否有任何技术说明或其他文档对此进行解释?
我建议使用 Websphere Liberty Profile,8.5.5.6(当前版本)。
一些说明(您可能已经知道):
web.xml
包含您的 servlet、映射、初始化参数、侦听器、安全性、数据源等。
persistence.xml
在处理持久性单元时是必需的。它定义了配置(JPA 访问意图、隔离级别、锁定级别等)。
它包含实体 类 和应用的数据源。
ibm-web-bnd.xml
它包含逻辑资源的映射。数据源、Jms 绑定、Ejb 绑定...
我会推荐 IBM redbooks,例如WebSphere 应用服务器 V8.5
完整配置文件的管理和配置指南
Mapping between resource reference from web.xml and JNDI name from Application server can be stored in 2 places.
You can define this mapping during development in the 'binding file' - in case of the web module it is stored in WEB-INF/ibm-web-bnd.xml file.
If you use RAD, you can create binding file via right click on web project JEE -> generate Bindings deployment descriptor.
And then in the descriptor you put something like this:
Then it is used during installation.
If you didnt specify bindig via file, you can do this during application installation eg. via console. Then binding file is created and it is stored in:
PROFILE_ROOT\installedApps\cellName\Application.ear\WebModule.war\WEB-INF\ibm-web-bnd.xml and in
PROFILE_ROOT\config\cells\cellName\applications\Application.ear\deployments\Application\WebModule.war\WEB-INF\ibm-web-bnd.xml
我会尽力澄清你的一些问题。
Datasource
通常在服务器配置文件中定义和配置。它可以在应用程序中定义(通过 web.xml
或 annotations
),但我会避免这种情况,因为它不太灵活并且在应用程序本身中硬编码数据库细节。
数据源通过 JNDI 名称提供给应用程序,比方说 jdbc/myDS
。
在 persistence.xml
中,您可以提供 JPA 应用程序将使用的数据源 JNDI 名称。 JNDI 名称可以是全局名称(在这种情况下它必须与服务器中定义的 JNDI 名称相匹配 - 所以在我们的例子中是 jdbc/myDS)或作为资源引用名称(例如 java:comp/env/ jdbc/myDS参考)。
如果您使用资源引用,它会为您提供更好的灵活性,因为它不必匹配服务器中定义的 JNDI 名称,但是您必须在您的应用程序中定义该引用并为其提供绑定。
有几种定义引用和绑定的方式:
注释
在 servlet 中使用 @Resource
注释通过查找属性定义引用名称和绑定:
@Resource(type=DataSource.class, name="jdbc/myDSReference", lookup="jdbc/myDS")
部署描述符
使用 web.xml
通过 <resource-ref>
定义资源引用
ibm-mmm-bnd.xml
文件(mmm在web模块的情况下可以是web
,或者在ejb模块的情况下是ejb-jar
)是一个绑定文件,它可以提供之间的映射服务器上定义的引用和全局 JNDI 名称。您可以使用它代替 lookup
属性(您必须在 Java EE 6 应用程序之前使用它,因为那时没有查找属性)。
也可以在应用程序安装期间或之后通过 WebSphere Web 管理控制台或通过 wsadmin
脚本定义和更改该绑定。
如果是 EJB 项目 - 如果您想使用引用,则必须将它们定义为将访问 EntityManager
的任何给定 bean 的资源引用。再次通过注释或部署描述符。
我正在尝试遵循 this 教程,同时在 Websphere 8.5.5 上使用默认的 Websphere JPA ( OpenJPA ) 实现使其适应 运行。
我在 Eclipse 中创建项目并使用 WAS for Developers。
最初,当 运行 启动应用程序时,我收到有关资源引用不可用的错误(不记得确切的错误消息)
经过一些研究和大量试错方法后,我让应用程序开始工作。我必须在 web.xml 和 ibm-web-bnd.xml 中进行(或进行)更改以将 resource-ref 添加到 persistence.xml 中定义的数据源(不记得了,如果我更改了尝试和错误尝试中的任何其他内容)。
但是现在,我有以下问题
实际需要进行哪些更改才能实现 申请工作?
persistence.xml和persistence.xml中的datasource有什么关系 web.xml / ibm-web-bnd.xml?
中的资源参考
这是目前在一个动态网络项目中完成的。还有哪些变化 如果我想在 EJB 项目或 JPA 项目?
在本教程中,JPA 在动态 Web 项目中。有什么变化 如果我创建一个 ejb 项目/JPA 项目并且想要 以这种方式执行应用程序,而不是在 Web 中定义 JPA 项目?
是否有任何技术说明或其他文档对此进行解释?
我建议使用 Websphere Liberty Profile,8.5.5.6(当前版本)。
一些说明(您可能已经知道):
web.xml 包含您的 servlet、映射、初始化参数、侦听器、安全性、数据源等。
persistence.xml 在处理持久性单元时是必需的。它定义了配置(JPA 访问意图、隔离级别、锁定级别等)。 它包含实体 类 和应用的数据源。
ibm-web-bnd.xml 它包含逻辑资源的映射。数据源、Jms 绑定、Ejb 绑定...
我会推荐 IBM redbooks,例如WebSphere 应用服务器 V8.5 完整配置文件的管理和配置指南
Mapping between resource reference from web.xml and JNDI name from Application server can be stored in 2 places. You can define this mapping during development in the 'binding file' - in case of the web module it is stored in WEB-INF/ibm-web-bnd.xml file. If you use RAD, you can create binding file via right click on web project JEE -> generate Bindings deployment descriptor. And then in the descriptor you put something like this: Then it is used during installation. If you didnt specify bindig via file, you can do this during application installation eg. via console. Then binding file is created and it is stored in: PROFILE_ROOT\installedApps\cellName\Application.ear\WebModule.war\WEB-INF\ibm-web-bnd.xml and in PROFILE_ROOT\config\cells\cellName\applications\Application.ear\deployments\Application\WebModule.war\WEB-INF\ibm-web-bnd.xml
我会尽力澄清你的一些问题。
Datasource
通常在服务器配置文件中定义和配置。它可以在应用程序中定义(通过 web.xml
或 annotations
),但我会避免这种情况,因为它不太灵活并且在应用程序本身中硬编码数据库细节。
数据源通过 JNDI 名称提供给应用程序,比方说 jdbc/myDS
。
在 persistence.xml
中,您可以提供 JPA 应用程序将使用的数据源 JNDI 名称。 JNDI 名称可以是全局名称(在这种情况下它必须与服务器中定义的 JNDI 名称相匹配 - 所以在我们的例子中是 jdbc/myDS)或作为资源引用名称(例如 java:comp/env/ jdbc/myDS参考)。
如果您使用资源引用,它会为您提供更好的灵活性,因为它不必匹配服务器中定义的 JNDI 名称,但是您必须在您的应用程序中定义该引用并为其提供绑定。
有几种定义引用和绑定的方式:
注释
在 servlet 中使用@Resource
注释通过查找属性定义引用名称和绑定:@Resource(type=DataSource.class, name="jdbc/myDSReference", lookup="jdbc/myDS")
部署描述符
使用web.xml
通过<resource-ref>
定义资源引用
ibm-mmm-bnd.xml
文件(mmm在web模块的情况下可以是web
,或者在ejb模块的情况下是ejb-jar
)是一个绑定文件,它可以提供之间的映射服务器上定义的引用和全局 JNDI 名称。您可以使用它代替 lookup
属性(您必须在 Java EE 6 应用程序之前使用它,因为那时没有查找属性)。
也可以在应用程序安装期间或之后通过 WebSphere Web 管理控制台或通过 wsadmin
脚本定义和更改该绑定。
如果是 EJB 项目 - 如果您想使用引用,则必须将它们定义为将访问 EntityManager
的任何给定 bean 的资源引用。再次通过注释或部署描述符。