【问题标题】:How create datasource programmatically in Wildfly 10?如何在 Wildfly 10 中以编程方式创建数据源?
【发布时间】:2018-01-24 01:31:51
【问题描述】:

我已经搜索了在 Wildfly 中创建数据源的替代方法,但我没有找到以编程方式创建它的替代方法,这可能吗?

【问题讨论】:

    标签: jakarta-ee jboss datasource wildfly


    【解决方案1】:

    以下示例使用 JBoss-EAP 7.0(使用 Wildfly)进行了测试。 Pure Wildfly 可能会有一个不同的 maven 依赖项,提供ModelControllerClient。此示例使用以下 Maven 依赖项(来自存储库 https://maven.repository.redhat.com/ga):

    <dependency>
      <groupId>org.wildfly.core</groupId>
      <artifactId>wildfly-controller-client</artifactId>
      <version>2.1.13.Final-redhat-1</version>
    </dependency>
    

    我假设你已经手动配置了一个数据源并且驱动模块就位jboss/modules/system/layers,下面的例子使用MySQL驱动。将驱动程序添加到 JBoss 配置 您必须执行以下代码:

    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("jdbc-driver","mysql");
    request.get("driver-name").set("mysql");
    request.get("driver-module-name").set("com.mysql");
    request.get("driver-xa-datasource-class-name").set("com.mysql.jdbc.jdbc2.optional.MysqlXADataSource");
    client.execute(new OperationBuilder(request).build());
    client.close();
    

    这会将驱动程序添加到您的配置中:

    <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>
    

    【讨论】:

      【解决方案2】:

      您可以使用 Wildfly 的 CLI 工具创建数据源,如 here 所述。如果 CLI 工具对您来说不够用,您可以直接使用原生管理 API,例如 here 的说明。

      【讨论】:

        猜你喜欢
        • 2017-10-14
        • 1970-01-01
        • 1970-01-01
        • 2016-12-16
        • 2013-02-05
        • 1970-01-01
        • 2020-01-02
        • 1970-01-01
        • 2014-12-05
        相关资源
        最近更新 更多