Jakarta ee Jboss wildfly如何在本地JNDI名称空间中绑定条目?

Jakarta ee Jboss wildfly如何在本地JNDI名称空间中绑定条目?,jakarta-ee,jboss,wildfly,jndi,Jakarta Ee,Jboss,Wildfly,Jndi,我提供了一个库(让我们称之为事件源库),它从我的业务服务中抽象出数据源(在本例中为eventstore)的实现。在库中,我希望通过本地应用程序范围的JNDI命名空间资源查找注入eventstore数据源: @Resource(lookup="java:app/jdbc/eventstore") Datasource eventstore; 这是因为我在JEE容器中有许多单独的微服务,它们使用单独的数据源。我希望容器确定为每个微服务分配给java:app/eventstore的数据源 JBoss

我提供了一个库(让我们称之为事件源库),它从我的业务服务中抽象出数据源(在本例中为eventstore)的实现。在库中,我希望通过本地应用程序范围的JNDI命名空间资源查找注入eventstore数据源:

@Resource(lookup="java:app/jdbc/eventstore")
Datasource eventstore;
这是因为我在JEE容器中有许多单独的微服务,它们使用单独的数据源。我希望容器确定为每个微服务分配给java:app/eventstore的数据源

JBoss wildfly standalone.xml中的命名子系统似乎不支持本地可移植JNDI名称空间,它只支持:JBoss、:global和:/

我怎样才能做到这一点?有没有一种方法可以声明全局资源并映射到本地范围的可移植JNDI命名空间?我注意到AppName位于正确的名称空间中,但我不知道如何在那里添加内容


我怀疑jboss-app.xml或jboss-web.xml可能是答案,但我找不到一个好的例子。我正在将我的服务作为单独的war文件进行部署,它们没有封装在ear中。

很高兴我们已经成功地解决了这个问题。答案是使用web.xml在本地JNDI可移植名称空间与全局可移植名称空间之间映射,用于在standalone.xml部署描述符中定义物理资源:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <resource-ref>
        <description>DB Connection</description>
        <res-ref-name>java:app/jdbc/eventstore</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <lookup-name>java:global/something/DS.eventstore</lookup-name>
    </resource-ref>
</web-app>

数据库连接
java:app/jdbc/eventstore
javax.sql.DataSource
java:global/something/DS.eventstore
注意web.xml需要放在src/main/webapp/web-INF/web.xml下(如果您使用maven构建项目)

因此,在我们的例子中,我们将事件源库中的资源定义为java:app/jdbc/eventstore,然后在我们的业务服务中,我们指定一个全局可移植名称空间,以便通过web.xml从:java:global/something/DS.eventstore中查找资源


在服务器部署描述符命名子系统中,我们可以将此全局JNDI命名空间链接到物理数据源的配置。

根据文档,这是不可能的。无法在standalone.xml中输入本地JNDI资源,但是可以在web.xml中完成本地资源和查找