jboss EAP 6.2+ 通过代码控制JNDI数据源
通过Jboss提供的API,可以操控JBoss,效果跟在管理控制台手动操作完全一样,下面是示例代码:
一、pom.xml添加依赖项
<dependency>
<groupId>org.jboss.as</groupId>
<artifactId>jboss-as-controller-client</artifactId>
<version>7.2.0.Final</version>
</dependency>
二、创建数据源示例
/**
* 创建jboss数据源示例
* @throws IOException
*/
@Test
public void createJbossDataSource() throws IOException{
String dataSourceName = "myDS";//数据源名称
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",dataSourceName); request.get("jndi-name").set("java:/"+dataSourceName);
request.get("use-java-context").set(Boolean.TRUE);
request.get("connection-url").set("jdbc:oracle:thin:@172.21.X.X:1521:orcl");
request.get("driver-name").set("oracle");//注意:jboss上要事先添加好名为oracle的ojdbc数据驱动jar包
request.get("driver-class").set("oracle.jdbc.driver.OracleDriver");
request.get("min-pool-size").set(1);
request.get("max-pool-size").set(15);
request.get("user-name").set("你的用户名");
request.get("password").set("你的密码"); ModelControllerClient client = ModelControllerClient.Factory.create(InetAddress.getByName("127.0.0.1"), 9999);
client.execute(new OperationBuilder(request).build());
client.close(); System.out.println(dataSourceName + "创建完成!");
}
三、删除数据源
/**
* 删除指定数据源示例
* @throws IOException
*/
@Test
public void deleteJbossDataSource() throws IOException {
String datasourceName = "myDS";
ModelNode request = new ModelNode();
request.get(ClientConstants.OP).set("remove");
request.get(ClientConstants.OP_ADDR).add("subsystem","datasources");
request.get(ClientConstants.OP_ADDR).add("data-source",datasourceName);
ModelControllerClient client = ModelControllerClient.Factory.create(
InetAddress.getByName("127.0.0.1"), 9999);
client.execute(new OperationBuilder(request).build());
client.close();
System.out.println("数据源" + datasourceName + "删除完成!");
}
四、启用/禁用指定数据源
/**
* 启用指定数据源
* @throws IOException
*/
@Test
public void enableJbossDataSource() throws IOException{
String datasourceName = "myDS";
ModelNode request = new ModelNode();
request.get(ClientConstants.OP).set("enable");//禁用的话,换成disable
request.get(ClientConstants.OP_ADDR).add("subsystem","datasources");
request.get(ClientConstants.OP_ADDR).add("data-source",datasourceName); ModelControllerClient client = ModelControllerClient.Factory.create(
InetAddress.getByName("127.0.0.1"), 9999);
client.execute(new OperationBuilder(request).build());
client.close();
System.out.println("数据源" + datasourceName + "启用完成!");
}
五、获取jboss已创建的jndi数据源列表
/**
* 获取jboss上已创建的所有数据源
* @throws IOException
*/
@Test
public void getJbossDataSource() throws IOException {
List<ModelNode> dsList = getDataSources();
for (ModelNode n : dsList) {
System.out.println(n.asString());
}
} private List<ModelNode> getDataSources() throws IOException {
final ModelNode request = new ModelNode();
request.get(ClientConstants.OP).set("read-resource");
request.get("recursive").set(true);
request.get(ClientConstants.OP_ADDR).add("subsystem", "datasources");
ModelControllerClient client = null;
try {
client = ModelControllerClient.Factory.create(InetAddress.getByName("127.0.0.1"), 9999);
final ModelNode response = client.execute(new OperationBuilder(request).build()); return response.get(ClientConstants.RESULT).get("data-source").asList();
} finally {
safeClose(client);
}
} private void safeClose(final Closeable closeable) {
if (closeable != null) try {
closeable.close();
} catch (Exception e) {
// no-op
}
}
github上还有一个开源项目jboss-controller-operation-executor,把一些常用操作做了封装,推荐大家也看一看。
jboss EAP 6.2+ 通过代码控制JNDI数据源的更多相关文章
- JBOSS EAP 6 系列三 Oracle、Mysql数据源的配置(驱动)—认识模块的使用
本文介绍JBOSS EAP 6.2中Oracle数据源的配置方式.结合之前JBOSS EAP 6.2新功能,本文初识JBOSS模块申明式容器这一特性. 模块申明式容器:JBOSS EAP不再有lib的 ...
- 代码中jndi数据源的支持
项目中基本都使用Spring框架,支持jndi还是很简单的,只需在spring配置文件中加入 <!-- 使用jndi配置数据源 --> <bean id="dataSour ...
- JNDI学习总结(一)——JNDI数据源的配置
一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动程序(Class.forName("数据库驱动类");) ②连接数据库(Connec ...
- JNDI数据源的配置
一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动程序(Class.forName("数据库驱动类");) ②连接数据库(Conn ...
- JNDI学习总结(一)——JNDI数据源的配置(转)
一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动程序(Class.forName("数据库驱动类");) ②连接数据库(Conn ...
- JNDI数据源
孤傲苍狼 只为成功找方法,不为失败找借口! JNDI学习总结(一)——JNDI数据源的配置 一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动程序(Cla ...
- JNDI数据源配置
一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动程序(Class.forName("数据库驱动类");) ②连接数据库(Connec ...
- JNDI学习总结(2)——JNDI数据源的配置
一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动程序(Class.forName("数据库驱动类");) ②连接数据库(Con ...
- JNDI学习总结(一)——JNDI数据源的配置
原文地址:http://www.cnblogs.com/xdp-gacl/p/3951952.html 一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动 ...
随机推荐
- 大数据计算平台Spark内核解读
1.Spark介绍 Spark是起源于美国加州大学伯克利分校AMPLab的大数据计算平台,在2010年开源,目前是Apache软件基金会的顶级项目.随着 Spark在大数据计算领域的暂露头角,越来越多 ...
- OBST(Optimal Binary Tree最优二叉搜索树)
二叉搜索树 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的 ...
- Windows Phone Studio-任何人都能开发Windows Phone App的在线工具
在一段时间的内测以后,微软于今天早些时候发布了其Windows Phone应用开发的在线工具,名字叫做Windows Phone Studio.其意义在于,通过简单的内容添加和样式选择,实现Windo ...
- C#语句1:选择语句一(if else )
语句是指程序命令,都是按照顺序执行的.语句在程序中的执行顺序称为“控制流”或“执行流”. 根据程序对运行时所收到的输入的响应,在程序每次运行时控制流可能有所不同. 注意,语句间的标点符号必须是英文标点 ...
- FFMPEG ./configure 参数及意义
FFMPEG版本:2.6.2,编译环境:ubuntu 14.4. 不同版本的FFMPEG参数可能不同,可在FFMPEG目录下使用以下命令查看 ./configure --help --help pri ...
- ARM体系结构
工作模式_ufisaus USR(User) :正常程序的执行状态 FIQ(Fast interrupt) :用于高速数据传输和通道处理 IRQ(Interrupt) :通常的中断处理 SVC(Sup ...
- Navicat for MySQL 工具注册码
在使用 MySQL 客户端中,感觉 Navicat for MySQL 做的还是很不错的.鄙人比较懒,喜欢采用绿色安装的方式,百度网盘上备份的有个绿色的压缩包,解压打开需要注册,这里记录一下注册码,版 ...
- svn报错
错误一:org.apache.subversion.javahl.ClientException: E155004: There are unfinished work items in 'D:\xa ...
- Redhat使用CentOS的Yum 网络源
Redhat 的更新包只对注册的用户生效,所以我们自己手动更改成CentOS 的更新包,CentOS几乎和redhat是一样的. 1.首先查看redhat 7.0系统本身所安装的那些yum 软件包:[ ...
- xargs用法详解
前言 最近我从svn上checkout出来了一个文件夹,然后加入了git的跟踪目录.用过svn的同学可能知道,这个文件夹里面每一层级都有个.svn隐藏文件夹,需要删除他们.本来我准备笨拙地一个一个手动 ...