通过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数据源的更多相关文章

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

    本文介绍JBOSS EAP 6.2中Oracle数据源的配置方式.结合之前JBOSS EAP 6.2新功能,本文初识JBOSS模块申明式容器这一特性. 模块申明式容器:JBOSS EAP不再有lib的 ...

  2. 代码中jndi数据源的支持

    项目中基本都使用Spring框架,支持jndi还是很简单的,只需在spring配置文件中加入 <!-- 使用jndi配置数据源 --> <bean id="dataSour ...

  3. JNDI学习总结(一)——JNDI数据源的配置

    一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动程序(Class.forName("数据库驱动类");) ②连接数据库(Connec ...

  4. JNDI数据源的配置

    一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动程序(Class.forName("数据库驱动类");)   ②连接数据库(Conn ...

  5. JNDI学习总结(一)——JNDI数据源的配置(转)

    一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动程序(Class.forName("数据库驱动类");)   ②连接数据库(Conn ...

  6. JNDI数据源

    孤傲苍狼 只为成功找方法,不为失败找借口! JNDI学习总结(一)——JNDI数据源的配置 一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动程序(Cla ...

  7. JNDI数据源配置

    一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动程序(Class.forName("数据库驱动类");) ②连接数据库(Connec ...

  8. JNDI学习总结(2)——JNDI数据源的配置

    一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动程序(Class.forName("数据库驱动类");)    ②连接数据库(Con ...

  9. JNDI学习总结(一)——JNDI数据源的配置

    原文地址:http://www.cnblogs.com/xdp-gacl/p/3951952.html 一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动 ...

随机推荐

  1. git入门学习(二):新建分支/上传代码/删除分支

    一.git新建分支,上传代码到新的不同分支  我要实现的效果,即是多个内容的平行分支:这样做的主要目的是方便统一管理属于同一个内容的不同的项目,互不干扰.如图所示: 前提是我的github上已经有we ...

  2. js和jquery获取父级元素、子级元素、兄弟元素的方法

    最近工作中总遇到取各种父啊子啊兄弟姐妹啊,每次都得查,这次整理个全乎的~ [js的获取方式] function dom(){      var a = document.getElementByIdx ...

  3. javascript中,对于this指向的浅见

    # this的指向在函数创建的时候确定不了.只有在执行的时候,才可以确定. ## 1 . 这里的this指向window window.fn(); 所以this.user是undefined func ...

  4. CMPP3.0实现物联网卡通讯

    当下物联网发展迅猛,物联网卡可以接受短信指令,实现千里之外尽可掌控.本人做过一个这类项目,把相关经验记录下来,分享给需要的人. 物联网卡通讯其实跟电话卡一样,可以使用CMPP协议.不过由于物联网卡位数 ...

  5. ADO.Net(四)——扩展属性和配置文件应用

    一.扩展属性 处理:有外键关系时将代号化信息处理成原始文字,让用户可看懂的(粗略解释) 利用扩展属性 如:Info表中的民族列显示的是民族代号处理成Nation表中的民族名称 需要在Info类里面扩展 ...

  6. java -jar 执行 eclipse export 的 jar 包报错处理

    1. 错误1:打 jar 包执行,报错,找不到 类库的 jar 包 F:\>java -jar remoteLogin.jarException in thread "AWT-Even ...

  7. InnoDB源码分析--缓冲池(三)

    转载请附原文链接:http://www.cnblogs.com/wingsless/p/5582063.html 昨天写到了InnoDB缓冲池的预读:<InnoDB源码分析--缓冲池(二)> ...

  8. Drupal7网站+IIS7.0+PHP+MySql

    .服务器系统环境 Windows Server R2 Enterprise 64位操作系统 .所需软件 IIS7 PHPManager http://phpmanager.codeplex.com/r ...

  9. SQL Server求解连续操作(登录)数量(次数)最大的记录(用户)问题

    在园中大V深蓝医生中的一篇文中发现了这个问题,感觉挺有意思. 问题简化为"求解连续日期登录次数最大的用户".至少连续2天都登录才能认为是连续日登录. 数据岛问题 这个问题让我联想到 ...

  10. sql server 跟踪各事件的字段项编码及解释

    column_id有如下表:1 TextData 与跟踪内捕获的事件类相关的文本值. 2 BinaryData 与在跟踪中捕获的事件类相关的二进制值. 3 DatabaseID USE databas ...