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 |
---|