엔터프라이즈 솔루션/BEA WebLogic

WebLogic에서 Inflight Transaction(진행중인 트렌젝션) 상태 모니터링 하기

Terry Cho 2008. 7. 10. 16:30

WebLogic 9.2 MP2 기준으로 작성
JMX 이용하여 XID를 입력하여 해당 트렌젝션에 대한 TM,RM,상태 정보들을 출력해주는 JSP 예제
==
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.management.*" %>
<%@ page import="javax.management.remote.*" %>
<%@ page import="weblogic.management.runtime.*" %>

<%!
 public void printMap(Map map,JspWriter writer) throws Exception {
  for(Iterator i=map.keySet().iterator();i.hasNext();){
   Object key = i.next();
   writer.println(key+":"+map.get(key)+"\n<BR>");
  } 
 }
%>
<%
 // MBean 서버에 연결
 Hashtable h = new Hashtable();    
 
 h.put(Context.SECURITY_PRINCIPAL, "weblogic");     
 h.put(Context.SECURITY_CREDENTIALS, "weblogic" );     
 h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, "weblogic.management.remote");     

 JMXServiceURL serviceURL = new JMXServiceURL(
   "t3","localhost",7001,"/jndi/weblogic.management.mbeanservers.runtime");
 
    JMXConnector connector = JMXConnectorFactory.connect(serviceURL,h);
    MBeanServerConnection conn = connector.getMBeanServerConnection();
 
    ObjectName service = new ObjectName("com.bea:Name=RuntimeService,Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean");
   
 // ServerRuntime 얻어오기
 ObjectName  serverRuntime = (ObjectName)conn.getAttribute(service, "ServerRuntime");

 // xid를 이용해서 jtaRuntime으로 부터 JTATransaction객체를 읽어온다.
 String xid = request.getParameter("xid");
 
 ObjectName jtaRuntime = (ObjectName)conn.getAttribute(serverRuntime,"JTARuntime");
 JTATransaction tx = (JTATransaction)conn.invoke(jtaRuntime,"getJTATransaction",
   new Object[] {new String(xid)},new String[] {"java.lang.String"} );

 if(tx == null){ out.println("No transaction exist");return;}

 // 해당 트렌젝션에 대한 정보 출력
 // 참고
 // http://edocs.beasys.com/wls/docs92/javadocs_mhome/weblogic/management/runtime/JTATransaction.html
 
 out.println("# UserProperties");
 out.println("<BR>");
 printMap(tx.getUserProperties(),out);
 
 out.println("# Tx started before :"+tx.getSecondsActiveCurrentCount());
 out.println("<BR>");
 out.println("# Status :"+tx.getStatus());
 out.println("<BR>");
 out.println("# Server & Status");
 out.println("<BR>");
 printMap(tx.getServersAndStatus(),out);
 out.println("# Resource & Status");
 printMap(tx.getResourceNamesAndStatus(),out);
 

%>
==

그리드형

'엔터프라이즈 솔루션 > BEA WebLogic' 카테고리의 다른 글

Non Blocking Sync Call  (2) 2008.10.29