文章出處
文章列表
通過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,把一些常用操作做了封裝,推薦大家也看一看。
文章列表
全站熱搜