abstractcontext.java

来自「RESIN 3.2 最新源码」· Java 代码 · 共 366 行

JAVA
366
字号
/* * Copyright (c) 1998-2008 Caucho Technology -- all rights reserved * * This file is part of Resin(R) Open Source * * Each copy or derived work must preserve the copyright notice and this * notice unmodified. * * Resin Open Source is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Resin Open Source is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty * of NON-INFRINGEMENT.  See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with Resin Open Source; if not, write to the *   Free SoftwareFoundation, Inc. *   59 Temple Place, Suite 330 *   Boston, MA 02111-1307  USA * * @author Scott Ferguson */package com.caucho.ejb;import com.caucho.security.SecurityContext;import com.caucho.security.SecurityContextException;import com.caucho.util.L10N;import javax.ejb.*;import javax.transaction.UserTransaction;import java.rmi.RemoteException;import java.security.Identity;import java.security.Principal;import java.util.Properties;import java.util.logging.Level;import java.util.logging.Logger;/** * Base class for an abstract context */abstract public class AbstractContext implements EJBContext {  private static final L10N L = new L10N(AbstractContext.class);  private static final Logger log    = Logger.getLogger(AbstractContext.class.getName());  private boolean _isDead;  private Class _invokedBusinessInterface;  /**   * Returns true if the context is dead.   */  public boolean isDead()  {    return _isDead;  }  /**   * Returns the server which owns this bean.   */  public abstract AbstractServer getServer();  /**   * Returns the EJB's meta data.   */  public EJBMetaData getEJBMetaData()  {    return getServer().getEJBMetaData();  }  /**   * Returns the EJBHome stub for the container.   */  public EJBHome getEJBHome()  {    throw new UnsupportedOperationException(getClass().getName());  }  /**   * Returns the EJBLocalHome stub for the container.   */  public EJBLocalHome getEJBLocalHome()  {    try {      Object localHome = getServer().getEJBLocalHome();      // ejb/0f61      if (localHome == null && getServer().getEJBHome() == null)        throw new IllegalStateException("getEJBLocalHome() is only allowed through EJB 2.1 interfaces");      return null;    } catch (RuntimeException e) {      throw e;    } catch (Exception e) {      return null;    }  }  /**   * Returns the object's handle.   */  public Handle getHandle()  {    throw new UnsupportedOperationException();  }  /**   * Returns the object's home handle.   */  public HomeHandle getHomeHandle()  {    return getServer().getHomeHandle();  }  /**   * Returns the local object in the context.   */  public EJBLocalObject getEJBLocalObject()    throws IllegalStateException  {    throw new IllegalStateException(L.l("`{0}' has no local interface.  Local beans need a local-home and a local interface.  Remote beans must be called with a remote context.",                                        getServer()));  }  /**   * Looks up an object in the current JNDI context.   */  public Object lookup(String name)  {    return getServer().lookup(name);  }  /**   * Returns the EJBObject stub for the container.   */  public EJBObject getEJBObject()  {    EJBObject obj = getRemoteView();    if (obj == null)      throw new IllegalStateException("getEJBObject() is only allowed through EJB 2.1 interfaces");    return obj;    /*      throw new IllegalStateException(L.l("`{0}' has no remote interface.  Remote beans need a home and a remote interface.  Local beans must be called with a local context.",                                          getServer().getEJBName()));    */  }  /**   * Returns the underlying bean   */  public EJBObject getRemoteView()  {    return null;    /*      throw new IllegalStateException(L.l("`{0}' has no remote interface.  Remote beans need a home and a remote interface.  Local beans must be called with a local context.",                                          getServer()));    */  }  /**   * Create the home view.   */  public EJBHome createRemoteHomeView()  {    return null;    /*      throw new IllegalStateException(L.l("`{0}' has no remote interface.  Remote beans need a home and a remote interface.  Local beans must be called with a local context.",                                          getServer().getEJBName()));    */  }  /**   * Create the local home view.   */  public EJBLocalHome createLocalHome()  {    return null;    /*      throw new IllegalStateException(L.l("`{0}' has no local interface.  Local beans need a local-home and a local interface.  Remote beans must be called with a remote context.",                                          getServer().getEJBName()));    */  }  /**   * Create the 2.1 remote view.   */  public Object createRemoteView21()  {    return null;  }  /**   * Create the 3.0 remote view.   */  public Object createRemoteView()  {    return null;  }  /**   * Obsolete method which returns the EJB 1.0 environment.   */  public Properties getEnvironment()  {    return new Properties();  }  /**   * Obsolete method returns null.   */  public Identity getCallerIdentity()  {    return null;  }  /**   * Returns the principal   */  public Principal getCallerPrincipal()  {    try {      return SecurityContext.getUserPrincipal();    } catch (SecurityContextException e) {      log.log(Level.WARNING, e.toString(), e);      return null;    }  }  /**   * Obsolete method returns false.   */  public boolean isCallerInRole(Identity role)  {    return false;  }  /**   * Returns true if the caller is in the named role.   */  public boolean isCallerInRole(String roleName)  {    return SecurityContext.isUserInRole(roleName);  }  public void remove()    throws RemoveException  {    EJBObject obj = null;    try {      obj = getEJBObject();    } catch (Exception e) {    }    try {      if (obj != null) {        obj.remove();        return;      }    } catch (RemoteException e) {    }    EJBLocalObject local = null;    try {      local = getEJBLocalObject();    } catch (Exception e) {    }    if (local != null) {      local.remove();      return;    }  }  /**   * Returns the current UserTransaction.  Only Session beans with   * bean-managed transactions may use this.   */  public UserTransaction getUserTransaction()    throws IllegalStateException  {    if (getServer().isContainerTransaction())      throw new IllegalStateException("getUserTransaction() is not allowed with container-managed transaction");    return getServer().getUserTransaction();  }  /**   * Looks the timer service.   */  public TimerService getTimerService()    throws IllegalStateException  {    return getServer().getTimerService();  }  /**   * Forces a rollback of the current transaction.   */  public void setRollbackOnly()    throws IllegalStateException  {    if (! getServer().isContainerTransaction())      throw new IllegalStateException("setRollbackOnly() is only allowed with container-managed transaction");    try {      getServer().getUserTransaction().setRollbackOnly();    } catch (Exception e) {      throw new IllegalStateException(e);    }  }  /**   * Returns true if the current transaction will rollback.   */  public boolean getRollbackOnly()    throws IllegalStateException  {    if (! getServer().isContainerTransaction())      throw new IllegalStateException("getRollbackOnly() is only allowed with container-managed transaction");    throw new IllegalStateException("invalid transaction");  }  /**   * Destroy the context.   */  public void destroy() throws Exception  {    _isDead = true;  }  public Class getInvokedBusinessInterface()    throws IllegalStateException  {    if (_invokedBusinessInterface == null)      throw new IllegalStateException("SessionContext.getInvokedBusinessInterface() is only allowed through EJB 3.0 interfaces");    return _invokedBusinessInterface;  }  public void __caucho_setInvokedBusinessInterface(Class invokedBusinessInterface)  {    _invokedBusinessInterface = invokedBusinessInterface;  }  /**   * Runs the timeout callbacks.   */  public void __caucho_timeout_callback(javax.ejb.Timer timer)  {    throw new IllegalStateException(L.l("'{0}' does not have a @Timeout callback",					getClass().getName()));  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?