动态配置 JBOSS ( eap 6.2 ) DataSource

操作环境

windows + jboss eap 6.2 + MyEclipse 10.0

配置远程接口


<interface name="management">

<inet-address value="${jboss.bind.address.management:127.0.0.1}"/>

</interface>

<socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/>

在jboss企业版的jboss-eap-6.2\standalone\configuration的目录中standalone.xml 用于配置NativeManagement Client接口配置文件,默认如上。也可以自定义配置,

如下**系统配置


<interface name="management">

<inet-address value="${jboss.bind.address.management:192.168.24.125}"/>

</interface>

<socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/>

注入数据


DataSourceEntity dsEntity = new DataSourceEntity();

// 连接字符串

dsEntity.setConnURL("java:jboss/datasources/KsMysqlDS");

// 数据源名称

dsEntity.setDsName("KSDScfltest");

dsEntity.setDriver("mysql");

dsEntity.setEnabled(true);

dsEntity.setJdniName("java:jboss/datasources/" + dsEntity.getDsName());

dsEntity.setMaxPoolSize(20);

dsEntity.setMinPoolSize(5);

dsEntity.setUseJTA(true);

dsEntity.setUsername("root");

dsEntity.setPassword("root");

dsEntity.setTimeout(3600);

try {

createDateSource(dsEntity);

} catch (Exception e) {

System.out.println(e.toString());

}


public class DataSourceEntity {

/*

* DATASOURCES.Attribute 属性设置

*/

//数据源名称

private String dsName;

//jndi名称

private String jdniName;

//是否启用

private boolean isEnabled;

//驱动名称,如:mysql\oracle

private String driver;

/*

* DATASOURCES.Conection 连接设置

*/

//连接字符串

private String connURL;

//是否使用JTA

private boolean useJTA;

/*

* DATASOURCES.Security 安全设置

*/

//连接ds用户名及密码

private String username;

private String password;

/*

* DATASOURCES.Pool 连接池设置

*/

//最小最大连接池

private int minPoolSize;

private int maxPoolSize;

//空闲时间

private int timeout;

public int getTimeout() {

return timeout;

}

public void setTimeout(int timeout) {

this.timeout = timeout;

}

public DataSourceEntity(){

}

public DataSourceEntity(String dsName,String jdniName,boolean isEnabled,String connURL,boolean

useJTA,String username,String password,int minPoolSize,int maxPoolSize){

}

public String getDsName() {

return dsName;

}

public void setDsName(String dsName) {

this.dsName = dsName;

}

public String getJdniName() {

return jdniName;

}

public void setJdniName(String jdniName) {

this.jdniName = jdniName;

}

public boolean isEnabled() {

return isEnabled;

}

public void setEnabled(boolean isEnabled) {

this.isEnabled = isEnabled;

}

public String getDriver() {

return driver;

}

public void setDriver(String driver) {

this.driver = driver;

}

public String getConnURL() {

return connURL;

}

public void setConnURL(String connURL) {

this.connURL = connURL;

}

public boolean isUseJTA() {

return useJTA;

}

public void setUseJTA(boolean useJTA) {

this.useJTA = useJTA;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public int getMinPoolSize() {

return minPoolSize;

}

public void setMinPoolSize(int minPoolSize) {

this.minPoolSize = minPoolSize;

}

public int getMaxPoolSize() {

return maxPoolSize;

}

public void setMaxPoolSize(int maxPoolSize) {

this.maxPoolSize = maxPoolSize;

}

}

简单的pojo配置数据,这些从JBoss Mananager 可以看到一些默认的配置

动态添加


/**

*

* @Title: createDateSource

* @Description: TODO(动态添加数据源)

* @param @param dsEntity 设定文件 数据源实体

* @return void 返回类型 void

* @throws IOException

* @throws

* @author cfl

* @date 2015年3月13日

*/

public static void createDateSource(DataSourceEntity dsEntity) throws IOException {

//连接jboss进程的客户端

ModelControllerClient client =  ModelControllerClient.Factory

.create(InetAddress.getByName("127.0.0.1"), 9999);

//操作数据源节点

ModelNode op = new ModelNode();

try {

op.get("operation").set("add");

// 数据源名称

String dsname = dsEntity.getDsName();

// 在datasources下面添加数据源名称为dsname的子节点data-source

op.get("address").add("subsystem", "datasources").add("data-source", dsEntity.getDsName());

// 设置jndi查找名称

op.get("jndi-name").set(dsEntity.getJdniName() + dsEntity.getDsName());

// 设置数据源类

//op.get("datasource-class").set("com.mysql.jdbc.jdbc2.optional.MysqlXADataSource");

// 设置驱动名称

op.get("driver-name").set(dsEntity.getDriver());

op.get("use-java-context").set("true");

// 数据源连接池名称

op.get("pool-name").set(dsEntity.getDsName());

// 连接池timeout

op.get("Idle Timeout").set(dsEntity.getTimeout());

op.get("jta").set(true);

op.get("connection-url").set(dsEntity.getConnURL());

// 连接数据源名称

op.get("user-name").set(dsEntity.getUsername());

// 连接数据源密码

op.get("password").set(dsEntity.getPassword());

// 连接池大小

op.get("max-pool-size").set(dsEntity.getMaxPoolSize());

op.get("min-pool-size").set(dsEntity.getMinPoolSize());

//启用该数据源,默认关闭

op.get("Is enabled?").set(true);

// 执行设置

ModelNode result = client.execute(op);

System.out.println("----------" + result.toString() + "---------");

} finally {

client.close();

}

}

 

 

效果图

当然也可以从standalone.xml看到生成的相关节点

*注 [1] API地址:  https://docs.jboss.org/author/display/AS71/The+native+management+API

时间: 2024-10-03 19:47:48

动态配置 JBOSS ( eap 6.2 ) DataSource的相关文章

动态配置 JBOSS ( eap 6.2 ) 数据源

操作环境 windows + jboss eap 6.2 + MyEclipse 10.0 项目用的是jboss eap 6.2,作为Red公司升级后的eap稳定版. 相比之前的 AS 系列,不管是安全性和集群的稳定性,加上天然的出厂配置上都好了非常多. 对于开发人员来讲.省去了非常多工作. 配置远程接口 <interface name="management"> <inet-address value="${jboss.bind.address.manag

JBOSS EAP 6 系列三 Oracle、Mysql数据源的配置(驱动)—认识模块的使用

本文介绍JBOSS EAP 6.2中Oracle数据源的配置方式.结合之前JBOSS EAP 6.2新功能,本文初识JBOSS模块申明式容器这一特性. 模块申明式容器:JBOSS EAP不再有lib的概念,一切都是module.无论是系统调用的lib,用户编制的lib,或者应用程序引用到的第三方lib都以模块的方式构建起来,并在使用的地方申明具体使用哪个模块. 以下分三步介绍数据源的配置: 将数据库驱动构建为JBOSS内的模块 为JBOSS容器加载驱动模块 为JBOSS容器配置数据源 1.将数据

JBoss EAP 为应用项目配置PostgreSQL数据源

一.前言 客户在计划将业务向云平台迁移,这些天也在测试将数据库由Oracle替换为开源的PostgrSQL.为什么选PostgreSQL?因为这是对应用程序代码修改最小的方案,没有之一! PostgreSQL数据库的简要信息为:服务器loacalhost,端口5432,数据库projadm,用户名/密码:projadm/proj2013. 开始前,在https://jdbc.postgresql.org/download.html下载与JBoss版本和JDK版本匹配的JDBC驱动包,存放某目录(

jboss eap 6.3 域(Domain)模式配置

jboss提供了二种运行模式:standalone(独立运行模式).domain(域模式),日常开发中,使用standalone模式足已:但生产部署时,一个app,往往是部署在jboss集群环境中的,如果所有jboss server均采用standalone模式,会给运维带来极大的工作量,需要每台jboss server上逐一部署/更新,显然不适合. domain模式正是为了解决这一问题,该模式下,所有jboss server可以划分成不同的group(注:这里的jboss server并不一定

linux下jboss eap 6.3 域(Domain)模式配置

jboss eap 6.3 域(Domain)模式配置(开始之前先安装jdk) jboss提供了二种运行模式:standalone(独立运行模式).domain(域模式),日常开发中,使用standalone模式足已:但生产部署时,一个app,往往是部署在jboss集群环境中的,如果所有jboss server均采用standalone模式,会给运维带来极大的工作量,需要每台jboss server上逐一部署/更新,显然不适合. domain模式正是为了解决这一问题,该模式下,所有jboss s

linux下jboss eap 6.3 集群(cluster)配置

jboss eap 6.3 集群(cluster)配置 接上一篇继续,Domain模式解决了统一管理多台jboss的问题,今天我们来学习如何利用mod_cluster来实现负载均衡.容错. mod_cluster是jboss的一个开源集群模块(基于apache 2.2.x),官网地址为http://mod-cluster.jboss.org/ ,下面是使用步骤: 一.从官网下载binary文件 http://mod-cluster.jboss.org/downloads/1-2-6-Final-

JBOSS EAP 6 系列六 公共模块的jar配置到jboss的modules详细配置

公司项目中遇到并要解决的问题 1:原则上除了自己写的代码之外,公共的jar不应该都在打包的时候打包到ear里面,这样的话包太大,也不符合的分层的逻辑,在jboss容器内部,每个ear的包重复jar都会调入jboss内部,而造成浪费过多地的服务器资源,会出现不定期的异常. 2:jboss eap 6.*系列,需要模块化配置,需要加载的jar,解决如何在jboss里面配置 3:公共的jar在jboss里面已经配置,加载--但是源码运行的时候不能根据maven的配置,加载jar的路径的问题 第一步:配

JBOSS EAP 6 系列一 新特性

在项目中,采用的架构是Springmvc+spring+EJB+Jpa等架构,当然服务器是Jboss,本次Jboss我们采用的是JBossEap6.2,Jboss7的新特性与Jboss4.5的大的改变是: 模块申明式容器 JBOSS EAP不再有lib的概念,一切都是module.无论是系统调用的lib,用户编制的lib,或者应用程序引用到的第三方lib都以模块的方式构建起来,并在使用的地方申明具体使用了哪个模块.这就带来两个好处, 按官方的说法提供了一种完全的模块化的类加载系统,JBOSS会根

JBOSS EAP实战(1)

JBOSS的诞生 1998年,在硅谷SUN公司的SAP实验室,一个年轻人正坐在电脑前面思考,然后写着什么东西. 不,他没有在写程序,他在写辞呈.他正在做出人生的一个重大决定: 他要辞掉在SUN的这份工作,投身到open source的开发.旁边好多朋友在劝他,这样的做法是"moving down the food chain"(应该是丢掉铁饭碗的意思),这是他整个职业生涯的下坡路. 但是这个年轻人却义无反顾地微笑着,眼睛里充满着自信,他相信几年以后他会为他今天的决定自豪,他相信这不是他