BLOG ARTICLE JBoss EAP 4.3 | 2 ARTICLE FOUND

  1. 2009/05/27 JB29 Installer Project
  2. 2009/01/13 JBoss Queue Monitoring via MBean

옆에 앉아계신 차장님의 발기아래 JBoss Installer를 groovy로 만들어 LGPL 프로젝트로 구글에 등록했습니다. 일반 자바 문법으로 작성하였으면 상당했을 코드량을 Groovy의 치환자 등을 이용하여 JBoss 4.2와 EAP(Enterprise Application Platform:상용버전)을 한 번에 여러 대의 서버에 인스톨할 수 있는 프로그램입니다.

이것을 이용하여 30대의 운영 리눅스 서버(각 서버당 4개의 인스턴스)에 JBoss를 설치하는 데 30분이 걸렸다고 하네요. 초기 프로젝트 import는 만득이(http://www.mandki.com) 개발자인 전모씨 아드님이신 준식 차장님이 담당을 했습니다. 왜 JB29냐면 "JBoss를 설치하는 B29 폭격기"라는 곳에서 착안했습니다.

FTP로 서버를 순회하며 파일을 올리고 자동으로 압축을 풀고 해당 서버의 configuration으로 변경하는 작업들을 한 번에 수행합니다.

이제 groovy를 시작한터라 너무 자바틱할 수도 있겠지만 기능만큼은 막강할 수 있겠네요.
JBoss 5.0 용은 설정이 바뀐터라 코드를 조금 수정해야 합니다.

http://code.google.com/p/jb29/

크리에이티브 커먼즈 라이센스
Creative Commons License
2009/05/27 13:17 2009/05/27 13:17

JBoss 의 JMS서버의 queue를 모니터링하는 JMX Code입니다. jsp파일로 되어 있으며 복사해서 사용하면 됩니다.

아래의 파일이 실행되어 모니터링되려면 $SERVER_HOME/deploy/jboss-messaging.sar/messaging-service.xml 파일의 다음의 attribute를 true로 바꿔야 합니다.
<attribute name="EnableMessageCounters">true</attribute>

그리고 메시지를 샘플링하는 주기를 적절하게 주면 됩니다.
<attribute name="MessageCounterSamplePeriod">5000</attribute>


<%@ page language="java" contentType="text/html; charset=UTF-8"   pageEncoding="UTF-8" import="javax.naming.*, java.util.*,javax.management.*,org.jboss.jms.server.destination.*,org.jboss.jmx.adaptor.rmi.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!--meta http-equiv="refresh" content="5"-->
<link href="style.css" rel=stylesheet type="text/css">
<title>Insert title here</title>
</head>
 
<body leftmargin=15 topmargin=10>
<center><p>
<br>
 
<table width="600" cellpadding="7" cellspacing="0" border="1" bordercolordark="WHITE" bordercolorlight="BLACK">
<tr bgcolor=#E8EEEC>
<%
    String type = "Queue";
 
    Hashtable<String,String> env = new Hashtable<String,String>();
    String factory = "org.jboss.security.jndi.JndiLoginInitialContextFactory";
    env.put(Context.INITIAL_CONTEXT_FACTORY, factory);
    String url = "jnp://127.0.0.1:1099";
    env.put(Context.PROVIDER_URL, url);
    env.put(Context.SECURITY_CREDENTIALS, "admin");
    env.put(Context.SECURITY_PRINCIPAL, "admin");
    Context ctx = new InitialContext(env);
    RMIAdaptor server = (RMIAdaptor) ctx.lookup("jmx/invoker/RMIAdaptor");
%>
 
<td align center>Queue Name</td>
<td align center>Total Count</td>
<td align center>Current Count</td>
<td align center>Consumer Count</td>
<td align center>Delivering Count</td>
</tr>
<tr>
<td align center>queue/A</td>
<%
    String queueName = "A";
 
    // Get the MBeanInfo for the JNDIView MBean
    String targetName = "jboss.messaging.destination:service=" + type + ",name=" + queueName;
    ObjectName objName = ObjectName.getInstance(targetName);
 
    QueueMBean queueMBean = (QueueMBean) MBeanServerInvocationHandler.newProxyInstance(server, objName, QueueMBean.class, false);
 
    int totalMessageCount = 0;
    int currentMessageCount = 0;
 
    totalMessageCount = queueMBean.getMessageCounter().getCount();
    currentMessageCount = queueMBean.getMessageCount();
%>
<td align center><%= totalMessageCount %></td>
<td align center><%= currentMessageCount %></td>
<td align center><%= queueMBean.getConsumerCount() %></td>
<td align center><%= queueMBean.getDeliveringCount() %></td>
</tr>
<tr>
<td align center>queue/B</td>
<%
    queueName = "B";
 
    // Get the MBeanInfo for the JNDIView MBean
    targetName = "jboss.messaging.destination:service=" + type + ",name=" + queueName;
    objName = ObjectName.getInstance(targetName);
 
    queueMBean = (QueueMBean) MBeanServerInvocationHandler.newProxyInstance(server, objName, QueueMBean.class, false);
 
    totalMessageCount = 0;
    currentMessageCount = 0;
 
    totalMessageCount = queueMBean.getMessageCounter().getCount();
    currentMessageCount = queueMBean.getMessageCount();
%>
<td align center><%= totalMessageCount %></td>
<td align center><%= currentMessageCount %></td>
<td align center><%= queueMBean.getConsumerCount() %></td>
<td align center><%= queueMBean.getDeliveringCount() %></td>
</tr>
</table>

크리에이티브 커먼즈 라이센스
Creative Commons License
2009/01/13 11:09 2009/01/13 11:09