有JNDI命名空间约定吗?

4

我已经下载了JBoss EAP 6.1并且要添加一个新的数据源。我必须将数据源绑定到JNDI名称上。通过阅读示例数据源的JNDI名称,它是:

java:jboss/datasources/ExampleDS

我看到他们在java:jboss后使用了datasources。这只是一种命名约定吗?我无法在任何地方找到它,还是可以使用java:jboss/bananaboat/MyDS
下面列出的第一部分 - 例如java:comp是否为范围,其余部分只是普通的层次结构组织?
java:comp/ - The namespace is scoped to the current component (i.e. EJB) 
java:module/ - Scoped to the current module 
java:app/ - Scoped to the current application      
java:global/ - Scoped to the application server

https://docs.jboss.org/author/display/AS71/JNDI+Reference


该链接应更正为https://docs.jboss.org/author/display/WFLY/JNDI%20Reference.html。 - stmoebius
2个回答

2
我不得不自问同样的问题,并整理了这些链接。
简而言之,JNDI 命名策略可以是任何形式,但 JEE 定义了自己的命名策略:

JNDI 的定义独立于任何特定的命名和目录服务实现。

然而,一个重要的平台定义了有限的一组使用 JNDI 的命名策略,那就是...JEE

这将是数据源最常规的名称。
企业命名空间是根据 java URL 方案的 URL 上下文设置的。
例如,JDBC Salary 数据库的名称可能是 "java:comp/env/jdbc/Salary"。
  • ... comp 绑定到保留供组件相关绑定使用的子树。
  • ... env 绑定到保留为组件环境相关绑定使用的子树,其定义由其部署描述符。
  • 资源工厂引用被放置在由其资源管理器类型区分的子树中。
    • ...jdbc 用于 JDBC DataSource 引用。
JEE 7 教程还详细介绍了在 32.4.1.1 Portable JNDI Syntax 中引用 EJB 的命名策略。
请注意,使用@Resource注释注入DataSource时,通常会指定相对于java:comp/env的JNDI名称——请参见可移植和可部署解决方案的this answerthis answer
your updated link所述,java:jboss命名空间是WildFly/JBoss提供的自定义扩展。
回答这个问题,标准命名空间下的子树只是普通的层次结构。显然,如果这些子树被应用服务器、文档、进程等广泛认可,那么这才有意义。否则,我想几乎平坦的键值或随机的bananaboat/MyDS也可以,但仍然必须在支持的命名空间下"挂载",比如java:jboss

0

这些都是凭记忆说的(我是一段时间前被另一个团队成员告知的):

java:前缀是JBoss / EE标准。对于所有非可序列化资源,即它们是本地于jvm的资源,应该添加前缀。此后,您可以随意命名以形成“目录”结构。例如,如果您使用JNDI获取绑定“java:jboss/datasources”,则会返回列在该名称下的所有资源的子树。它将包含ExampleDS和可能还包括其他DataSources。

回答您的问题:您不必将其命名为java:jboss之后的datasources。但是将其命名为有意义的名称是有道理的。


数据源应该命名为:jdbc/MyDS吗? - Benoit
"JBoss/EE标准"到底是什么意思? - eis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接