我已经阅读过这两本书并且我不理解它们,有人可以举一个例子并用简单的英语解释一下吗?主要是它与“name”元素/
之间的区别来自Oracle教程
mappedName元素是一个不可移植的,特定于实现的名称 资源应该映射到。因为name元素的时候 指定或默认,仅对应用程序是本地的,许多Java EE 服务器提供了一种在整个应用程序中引用资源的方法 服务器。这是通过设置mappedName元素来完成的。使用的 mappedName元素在Java EE服务器上是不可移植的 的实施方式。
来自Oracle Javadocs mappedName
public abstract String mappedName
此资源应映射到的产品特定名称。该 由name元素或默认定义的此资源的名称是 使用资源的应用程序组件的本地名称。 (它是JNDI java:comp / env命名空间中的一个名称。)许多应用程序 服务器提供了将这些本地名称映射到资源名称的方法 应用服务器已知。此映射名称通常是全局的 JNDI名称,但可以是任何表单的名称。应用程序服务器不是 也不需要支持任何特定形式或类型的映射名称 使用映射名称的能力。映射的名称取决于产品 并且通常依赖于安装。不能使用映射名称。
默认:“”
答案 0 :(得分:10)
假设您在应用程序服务器中配置了一个连接池(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;
(确切的细节可能会丢失或者是特定于应用程序服务器的,但我希望你能得到一般意见。)