blob: 46147716985ae00adf156df277d9c60683a5086f [file] [log] [blame]
/*
* Copyright 2002, Apple Computer, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name of Apple Computer, Inc. ("Apple")
* nor the names of its contributors may be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*/
package org.openejb.corba.core;
import org.omg.CORBA.Policy;
import org.omg.PortableServer.IdAssignmentPolicyValue;
import org.omg.PortableServer.ImplicitActivationPolicyValue;
import org.omg.PortableServer.LifespanPolicyValue;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.RequestProcessingPolicyValue;
import org.omg.PortableServer.ServantRetentionPolicyValue;
import org.openejb.core.entity.EntityEjbHomeHandler;
import org.openejb.core.entity.EntityEjbObjectHandler;
import org.openejb.util.proxy.InvocationHandler;
/**
* This class manages CORBA references and dispatches method on behalf of an entity container.
*
* @author Stefan Reich sreich@apple.com
*/
public class EntityContainerAdapter extends StatefulContainerAdapter{
public EntityContainerAdapter( org.omg.CORBA.ORB orb, POA homePOA,
org.omg.CosNaming.NamingContextExt nameServiceRootContext,
org.openejb.RpcContainer cntr,
ContainerSystem system ) throws org.openejb.OpenEJBException
{
super(orb, homePOA, nameServiceRootContext, cntr, system);
}
/**
* entity bean references are supposed to be long lived, and are therefore activated on a
* POA with a persistent liefespan policy
*/
protected Policy[] poaPolicies(POA poa) {
return new Policy[] {
poa.create_lifespan_policy(LifespanPolicyValue.PERSISTENT),
poa.create_request_processing_policy(RequestProcessingPolicyValue.USE_SERVANT_MANAGER),
poa.create_servant_retention_policy(ServantRetentionPolicyValue.NON_RETAIN),
poa.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
poa.create_implicit_activation_policy(ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION),
};
}
protected InvocationHandler createObjectInvocationHandler(Object primaryKey, Object deploymentId) {
EntityEjbObjectHandler handler = new EntityEjbObjectHandler(cntr, primaryKey, deploymentId);
// let's not copy argument and return value unnecessarily
handler.setIntraVmCopyMode(false);
return handler;
}
protected InvocationHandler createHomeInvocationHandler(Object deploymentId) {
EntityEjbHomeHandler handler = new EntityEjbHomeHandler(cntr, null, deploymentId);
// let's not copy argument and return value unnecessarily
handler.setIntraVmCopyMode(false);
return handler;
}
}