使用JNDI能访问服务器的那些资源?能不能举例说明下?越详越好,谢谢!
解决方案 »
- java如何实现压缩备份mysql数据库
- 关于接口方法的实现问题
- Runtime.getRuntime().exec(mkdir)问题
- hibernate级联更新变保存操作
- 请教一个hibernate组合查询的问题,谢谢!
- 请高手指教 关于用spring在tomcat5上发布WebServic的问题
- 关于eclipse3.0+weblogic8.1的配置问题,高分求助!!!
- 非高手莫进,我用JAVA+AXIS做了一个WEBSERVICE,用。NET应用程序访问成功,为什么用微软的htc控件访问返回就空值?
- 请高手,完善一下这个公共方法,多谢
- 用(jb6+wl6.1)开发jsp+servlet+ejb的朋友能留下QQ交流交流
- webservices 返回集合问题
- 多系统之间页面‘跨域访问’问题
JNDI 名称是便于用户使用的对象名称。这些名称通过 J2EE 服务器提供的命名和目录服务绑定到其对象。由于 J2EE 组件通过 JNDI API 访问此服务,因此对象通常使用其 JNDI 名称。例如,PointBase 数据库的 JNDI 名称为 jdbc/Pointbase。Application Server 启动时,将从配置文件中读取信息,并自动将 JNDI 数据库名称添加到名称空间。Java EE 应用程序客户机、企业 Bean 以及 Web 组件都需要具有权限才能访问 JNDI 命名环境。应用程序组件的命名环境是一种机制,使用它可以在部署或汇编期间自定义应用程序组件的商业逻辑。使用应用程序组件的环境即可对应用程序组件进行自定义,而无需访问或更改应用程序组件的源代码。Java EE 容器实现 Java EE 应用程序组件的环境,并将该环境作为 JNDI 命名上下文提供给 Java EE 应用程序组件实例。J2EE 应用程序组件的环境的使用方式如下:应用程序组件的商业方法使用 JNDI 接口访问该环境。应用程序组件提供商在部署描述符中声明应用程序组件需要其运行时环境提供的所有环境项。容器实现存储应用程序组件环境的 JNDI 命名上下文。容器还提供了部署者可以用于创建和管理每个应用程序组件的环境的工具。部署者使用容器提供的工具,可以初始化应用程序组件的部署描述符中声明的环境项。部署者可以设置和修改环境条目的值。容器使环境命名上下文在运行时可用于应用程序组件实例。应用程序组件的实例使用 JNDI 接口获取环境项的值。每个应用程序组件定义了其本身的环境项集合。一个应用程序组件在同一容器内的所有实例共享相同的环境项。不允许应用程序组件实例在运行时修改环境。命名引用和绑定信息
资源引用是部署描述符中的一种元素,用于标识该资源的组件的编码名称。更具体地说,编码名称引用资源的连接工厂。在下节给出的示例中,资源引用名称为 jdbc/SavingsAccountDB。资源的 JNDI 名称和资源引用名称是不同的。使用此命名方法,您需要在进行部署之前先映射这两个名称,但此方法也用于将组件与资源分离开。由于具有此分离功能,因此如果组件在以后需要访问其他资源,则无需更改名称。这一灵活性使您可以更加容易地从先前存在的组件汇编 J2EE 应用程序。下表列出了用于 Application Server 所使用的 J2EE 资源的 JNDI 查找及其关联的引用。表 6–1 JNDI 查找及其关联的引用
JNDI 查找名称 关联的引用 java:comp/env应用程序环境条目 java:comp/env/jdbcJDBC 数据源资源管理器连接工厂 java:comp/env/ejbEJB 引用 java:comp/UserTransactionUserTransaction 引用 java:comp/env/mailJavaMail 会话连接工厂 java:comp/env/urlURL 连接工厂 java:comp/env/jmsJMS 连接工厂和目标 java:comp/ORB应用程序组件之间共享的 ORB 实例 使用自定义资源
自定义资源访问本地 JNDI 系统信息库,外部资源访问外部 JNDI 系统信息库。这两种类型的资源都需要用户指定的工厂类元素、JNDI 名称属性等。在本节中,我们将讨论如何为 J2EE 资源配置 JNDI 连接工厂资源,以及如何访问这些资源。在 Application Server 中,您可以创建、删除和列出资源以及 list-jndi-entities。使用外部 JNDI 系统信息库和资源
通常,在 Application Server 上运行的应用程序需要访问存储在外部 JNDI 系统信息库中的资源。例如,一般的 Java 对象可能会以 Java 模式存储在 LDAP 服务器中。外部 JNDI 资源元素允许用户配置此类外部资源系统信息库。外部 JNDI 工厂必须实现 javax.naming.spi.InitialContextFactory 接口。使用外部 JNDI 资源的示例: <resources>
<!-- external-jndi-resource element specifies how to access J2EE resources
-- stored in an external JNDI repository. The following example
-- illustrates how to access a java object stored in LDAP.
-- factory-class element specifies the JNDI InitialContext factory that
-- needs to be used to access the resource factory. property element
-- corresponds to the environment applicable to the external JNDI context
-- and jndi-lookup-name refers to the JNDI name to lookup to fetch the
-- designated (in this case the java) object.
-->
<external-jndi-resource jndi-name="test/myBean"
jndi-lookup-name="cn=myBean"
res-type="test.myBean"
factory-class="com.sun.jndi.ldap.LdapCtxFactory">
<property name="PROVIDER-URL" value="ldap://ldapserver:389/o=myObjects" />
<property name="SECURITY_AUTHENTICATION" value="simple" />
<property name="SECURITY_PRINCIPAL", value="cn=joeSmith, o=Engineering" />
<property name="SECURITY_CREDENTIALS" value="changeit" />
</external-jndi-resource>
</resources>