根据 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 数据和动态表名称 em> 而且这只能在原始 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
的物理数据源名称。
关于java - 如何设置java :comp/DefaultDataSource in WildFly?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31108608/