Jakarta ee 如何在Wildfly 10中以编程方式创建数据源?
我已经搜索了在Wildfly中创建数据源的备选方案,但没有找到以编程方式创建数据源的备选方案,是否可行?您可以使用Wildfly的CLI工具创建数据源,如前所述。如果CLI工具不足以满足您的需要,您可以直接使用本机管理API,如示例所述。以下示例使用JBoss EAP 7.0(使用Wildfly)进行测试。纯Wildfly可能会有一个不同的maven依赖项,提供Jakarta ee 如何在Wildfly 10中以编程方式创建数据源?,jakarta-ee,jboss,datasource,wildfly,Jakarta Ee,Jboss,Datasource,Wildfly,我已经搜索了在Wildfly中创建数据源的备选方案,但没有找到以编程方式创建数据源的备选方案,是否可行?您可以使用Wildfly的CLI工具创建数据源,如前所述。如果CLI工具不足以满足您的需要,您可以直接使用本机管理API,如示例所述。以下示例使用JBoss EAP 7.0(使用Wildfly)进行测试。纯Wildfly可能会有一个不同的maven依赖项,提供ModelControllerClient。此示例使用以下Maven依赖项(来自存储库): 这会将驱动程序添加到您的配置中: <d
ModelControllerClient
。此示例使用以下Maven依赖项(来自存储库):
这会将驱动程序添加到您的配置中:
<driver name="mysql" module="com.mysql">
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
使用此代码,数据源以编程方式创建:
<datasource jta="true" jndi-name="java:jboss/datasources/TestDs" pool-name="TestDs" use-java-context="true" use-ccm="true">
<connection-url>jdbc:mysql://localhost/test</connection-url>
<driver>mysql</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<pool>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
<prefill>true</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
<security>
<user-name>test</user-name>
<password>test</password>
</security>
<statement>
<prepared-statement-cache-size>32</prepared-statement-cache-size>
<share-prepared-statements>true</share-prepared-statements>
</statement>
</datasource>
jdbc:mysql://localhost/test
mysql
事务读取已提交
5.
20
真的
假的
仅连接失败
测试
测试
32
真的
<driver name="mysql" module="com.mysql">
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
ModelControllerClient client = ModelControllerClient.Factory.create(InetAddress.getByName("localhost"), 9990);
ModelNode request = new ModelNode();
request.get(ClientConstants.OP).set(ClientConstants.ADD);
request.get(ClientConstants.OP_ADDR).add("subsystem","datasources");
request.get(ClientConstants.OP_ADDR).add("data-source","TestDs");
request.get("jta").set(true);
request.get("jndi-name").set("java:jboss/datasources/TestDs");
request.get("pool-name").set("TestDs");
request.get("use-java-context").set(true);
request.get("use-ccm").set(true);
request.get("connection-url").set("jdbc:mysql://localhost/test");
request.get("driver-name").set("mysql");
request.get("transaction-isolation").set("TRANSACTION_READ_COMMITTED");
request.get("min-pool-size").set(5);
request.get("max-pool-size").set(20);
request.get("pool-prefill").set(true);
request.get("pool-use-strict-min").set(false);
request.get("flush-strategy").set("FailingConnectionOnly");
request.get("user-name").set("test");
request.get("password").set("test");
request.get("prepared-statements-cache-size").set(32);
request.get("share-prepared-statements").set(true);
client.execute(new OperationBuilder(request).build());
client.close();
<datasource jta="true" jndi-name="java:jboss/datasources/TestDs" pool-name="TestDs" use-java-context="true" use-ccm="true">
<connection-url>jdbc:mysql://localhost/test</connection-url>
<driver>mysql</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<pool>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
<prefill>true</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
<security>
<user-name>test</user-name>
<password>test</password>
</security>
<statement>
<prepared-statement-cache-size>32</prepared-statement-cache-size>
<share-prepared-statements>true</share-prepared-statements>
</statement>
</datasource>