package org.jboss.resource.connectionmanager;
import javax.management.ObjectName;
import javax.transaction.xa.XAException;
import org.jboss.logging.Logger;
import org.jboss.system.ServiceMBeanSupport;
import org.jboss.tm.XAExceptionFormatter;
public class JBossLocalXAExceptionFormatter
extends ServiceMBeanSupport
implements XAExceptionFormatter, JBossLocalXAExceptionFormatterMBean
{
private static final String EXCEPTION_CLASS_NAME = "org.jboss.resource.connectionmanager.JBossLocalXAException";
private static final Object[] NOARGS = {};
private ObjectName transactionManagerService;
public JBossLocalXAExceptionFormatter() {
}
public ObjectName getTransactionManagerService()
{
return transactionManagerService;
}
public void setTransactionManagerService(ObjectName transactionManagerService)
{
this.transactionManagerService = transactionManagerService;
}
protected void startService() throws Exception
{
getServer().invoke(transactionManagerService,
"registerXAExceptionFormatter",
new Object[] {JBossLocalXAException.class, this},
new String[] {Class.class.getName(), XAExceptionFormatter.class.getName()});
}
protected void stopService() throws Exception
{
getServer().invoke(transactionManagerService,
"unregisterXAExceptionFormatter",
new Object[] {JBossLocalXAException.class},
new String[] {Class.class.getName()});
}
public void formatXAException(XAException xae, Logger log)
{
try
{
log.warn("JBoss Local XA wrapper error: ", ((JBossLocalXAException)xae).getCause());
}
catch (Exception e)
{
log.info("Problem trying to format XAException: ", e);
}
}
}