| Method from org.jboss.web.tomcat.service.jca.CachedConnectionValve Detail: |
public void addLifecycleListener(LifecycleListener listener) {
support.addLifecycleListener(listener);
}
|
protected void checkTransactionComplete(Request request) {
int status = Status.STATUS_NO_TRANSACTION;
try
{
status = tm.getStatus();
}
catch (SystemException ex)
{
log.error("Failed to get status", ex);
}
try
{
switch (status)
{
case Status.STATUS_ACTIVE:
case Status.STATUS_COMMITTING:
case Status.STATUS_MARKED_ROLLBACK:
case Status.STATUS_PREPARING:
case Status.STATUS_ROLLING_BACK:
try
{
tm.rollback();
}
catch (Exception ex)
{
log.error("Failed to rollback", ex);
}
// fall through...
case Status.STATUS_PREPARED:
String servletName = "< Unknown >";
try
{
Wrapper servlet = request.getWrapper();
if (servlet != null)
{
servletName = servlet.getName();
if (servlet.getJspFile() != null)
servletName = servlet.getJspFile();
}
}
catch (Throwable ignored)
{
}
String msg = "Application error: " + servletName + " did not complete its transaction";
log.error(msg);
}
}
finally
{
try
{
Transaction tx = tm.suspend();
if (tx != null)
{
String servletName = "< Unknown >";
try
{
Wrapper servlet = request.getWrapper();
if (servlet != null)
{
servletName = servlet.getName();
if (servlet.getJspFile() != null)
servletName = servlet.getJspFile();
}
}
catch (Throwable ignored)
{
}
String msg = "Application error: " + servletName +
" did not complete its transaction suspended tx=" + tx ;
log.error(msg);
}
}
catch (SystemException ex)
{
log.error("Failed to suspend transaction", ex);
}
}
}
|
public void event(Request request,
Response response,
HttpEvent event) throws IOException, ServletException {
try
{
ccm.pushMetaAwareObject(this, unsharableResources);
try
{
getNext().event(request, response, event);
}
finally
{
try
{
ccm.popMetaAwareObject(unsharableResources);
}
finally
{
checkTransactionComplete(request);
}
}
}
catch (ResourceException e)
{
throw new ServletException("Error invoking cached connection manager", e);
}
}
|
public LifecycleListener[] findLifecycleListeners() {
return support.findLifecycleListeners();
}
|
public String getCachedConnectionManagerObjectName() {
return ccmName;
}
Get the cached connection manager object name |
public String getInfo() {
return info;
}
Get information about this Valve. |
public String getTransactionManagerObjectName() {
return tmName;
}
Get the transaction manager object name |
public void invoke(Request request,
Response response) throws IOException, ServletException {
if(ccm == null)
throw new IllegalStateException("Uncomment the dependency on CachedConnectionManager"
+ " in META-INF/jboss-service.xml of jbossweb-tomcatxxx.sar");
try
{
ccm.pushMetaAwareObject(this, unsharableResources);
try
{
getNext().invoke(request, response);
}
finally
{
try
{
ccm.popMetaAwareObject(unsharableResources);
}
finally
{
checkTransactionComplete(request);
}
}
}
catch (ResourceException e)
{
throw new ServletException("Error invoking cached connection manager", e);
}
}
|
public void removeLifecycleListener(LifecycleListener listener) {
support.removeLifecycleListener(listener);
}
|
public void setCachedConnectionManagerObjectName(String ccmName) {
this.ccmName = ccmName;
}
Set the cached connection manager object name |
public void setTransactionManagerObjectName(String tmName) {
this.tmName = tmName;
}
Set the transaction manager object name |
public void start() throws LifecycleException {
try
{
MBeanServer server = MBeanServerLocator.locateJBoss();
ccm = (CachedConnectionManager) server.getAttribute(new ObjectName(ccmName), "Instance");
tm = (TransactionManager) server.getAttribute(new ObjectName(tmName), "TransactionManager");
}
catch (Exception e)
{
throw new LifecycleException(e);
}
// TODO unshareable resources
support.fireLifecycleEvent(START_EVENT, this);
}
|
public void stop() throws LifecycleException {
support.fireLifecycleEvent(STOP_EVENT, this);
unsharableResources.clear();
}
|