4

我都读过,但我不明白,有人可以举个例子并用简单的英语解释吗?主要是它和“名称”元素有什么区别/

来自 Oracle 教程

mappedName 元素是资源应该映射到的不可移植的、特定于实现的名称。因为 name 元素在指定或默认时仅对应用程序是本地的,因此许多 Java EE 服务器提供了一种跨应用程序服务器引用资源的方法。这是通过设置 mappedName 元素来完成的。mappedName 元素的使用在 Java EE 服务器实现中是不可移植的。

来自 Oracle Javadocs mappedName

公共抽象字符串映射名称

此资源应映射到的产品特定名称。此资源的名称(由 name 元素定义或默认)是使用该资源的应用程序组件的本地名称。(它是 JNDI java:comp/env 名称空间中的一个名称。)许多应用程序服务器提供了一种将这些本地名称映射到应用程序服务器已知的资源名称的方法。此映射名称通常是全局 JNDI 名称,但可以是任何形式的名称。应用程序服务器不需要支持任何特定形式或类型的映射名称,也不需要使用映射名称的能力。映射的名称取决于产品并且通常取决于安装。映射名称的使用是不可移植的。

默认: ””

4

1 回答 1

11

假设您javax.sql.DataSource在应用程序服务器中配置了一个连接池 (),并将其放置在 JNDI 中,例如java:datasources/jta/MyDb

假设您的应用程序的一个组件(可能是 EJB)需要访问数据库。DataSource可以注入为:

@Resource
private DataSource theDatabase;

您的组件可能是通用的,即可以部署在多个环境中。或者在单个环境中可能有许多数据源 ( java:datasources/jta/MyDb1, java:datasources/jta/MyDb2, ...)。您如何将特定内容映射DataSource到您的组件?

@Resource(mappedName="java:datasources/jta/MyDb")
private DataSource theDatabase;

(可能缺少确切的细节,或者是特定于应用程序服务器的,但我希望你能明白一般的意思。)

于 2013-09-12T09:52:47.900 回答