如何在 WildFly 中设置 java:comp/DefaultDataSource?

How do I set java:comp/DefaultDataSource in WildFly?

根据 JEE 规范,应该为使用 java:comp/DefaultDataSource 的应用程序提供默认数据源。开箱即用的 WildFly 将根据规范提供该数据源。

我似乎找不到一种方法,可以在不更改应用程序本身的 java:comp/DefaultDataSource 映射的情况下将值更改为指向其他地方。

在 "Container" -> "JPA Subsystem" 下有一个我尝试设置的默认数据源,但连接仍然转到 java:jboss/datasources/ExampleDS

@Resource(name = "somedatasource", lookup = "java:comp/DefaultDataSource")
private DataSource ds;

需要注意的一件事,我没有为应用程序使用 JPA,我只是想获取默认数据源并使用原始 JDBC 调用,因为我正在处理大量 LOB 数据和 dynamic table names 而且只有在 raw JDBC.

上才有可能

我测试的方式是

System.out.println(ds.getConnection().getMetaData().getURL());

产生 jdbc:h2:mem:test

在您最喜欢的编辑器中打开您的 standalone.xml,然后在 urn:jboss:domain:ee:2.0 子系统中找到以下行:

<default-bindings
   context-service="java:jboss/ee/concurrency/context/default"
   datasource="java:jboss/datasources/ExampleDS"
   jms-connection-factory="java:jboss/DefaultJMSConnectionFactory"
   managed-executor-service="java:jboss/ee/concurrency/executor/default"
   managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default"
   managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>

并将 datasource 值设置为您希望映射到的物理数据源名称 java:comp/DefaultDataSource