Java 是否存在JNDI命名空间约定?
我已经下载了JBoss EAP 6.1,我将添加一个新的数据源。我必须将数据源绑定到JNDI名称。通过读取示例数据源的JNDI名称:Java 是否存在JNDI命名空间约定?,java,jakarta-ee,jboss,datasource,Java,Jakarta Ee,Jboss,Datasource,我已经下载了JBoss EAP 6.1,我将添加一个新的数据源。我必须将数据源绑定到JNDI名称。通过读取示例数据源的JNDI名称: java:jboss/datasources/ExampleDS 我看到他们在java:jboss之后使用了datasources。这仅仅是一种命名约定——我在任何地方都找不到——还是使用java:jboss/bananaboat/MyDS` 下面列出的第一部分(例如java:comp是范围,其余部分只是普通的层次结构组织)是否正确 java:comp/ - T
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
这一切都来自记忆(刚才另一位团队成员告诉我):
java:前缀是JBoss/EE标准。对于所有不可序列化的资源,都应该加上前缀,这意味着它们是jvm的本地资源。在这之后,您可以命名任何您想要形成类似“目录”结构的东西。e、 如果您使用JNDI获得绑定“java:jboss/datasources”,您将获得该名称下列出的所有资源的子树。它将包含示例,也可能包含其他数据源
回答您的问题:您不必用java:jboss来命名数据源。但是给它起个有意义的名字是有意义的。我不得不自己回答同样的问题,并把这些链接放在一起 简而言之,可以是任何类型,但JEE定义了自己的: JNDI的定义独立于任何特定的命名和定义 目录服务实现 然而,一个重要的平台确实定义了一组有限的 使用JNDI的命名策略是JEE 这将是数据源最常用的名称: 企业名称空间植根于
java
URL方案的URL上下文中
例如,JDBCSalary
数据库的名称可能为“java:comp/env/JDBC/Salary
”
绑定到为组件相关绑定保留的子树comp
绑定到一个子树,该子树是为组件的部署描述符定义的与环境相关的绑定保留的env
- 资源工厂引用放置在按其资源管理器类型区分的子树中。
- …
用于jdbc数据源引用jdbc
- …
@Resource
用于注入数据源的注释
通常指定相对于java:comp/env
的JNDI名称-有关可移植和可部署的解决方案,请参见或
如中所述,java:jboss
名称空间是仅由WildFly/jboss提供的自定义扩展
为了回答这个问题,标准名称空间下的子树只是普通的层次结构。显然,只有在应用服务器、文档、流程等(广泛)识别这些子树的情况下,才有意义。否则,我猜几乎平坦的键值或随机的
bananaboat/MyDS
可以,但仍然必须“装载”在支持的名称空间下,比如java:jboss
数据源应该命名为:jdbc/MyDS吗?甚至“jboss/EE标准”都意味着应该将链接更正为什么