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

Arc*_*ano 2 java jdbc wildfly-8

根据 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;
Run Code Online (Sandbox Code Playgroud)

需要注意的一件事是,我没有在应用程序中使用 JPA,我只是想获取默认数据源并使用原始 JDBC 调用,因为我正在处理大量 LOB 数据和动态表名称,而且只能在原始数据上使用JDBC。

我测试的方法是

System.out.println(ds.getConnection().getMetaData().getURL());
Run Code Online (Sandbox Code Playgroud)

哪个产量jdbc:h2:mem:test

Ste*_*e C 5

在您最喜欢的编辑器中打开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"/>
Run Code Online (Sandbox Code Playgroud)

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