All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.openejb.spi.ApplicationServer Maven / Gradle / Ivy

There is a newer version: 4.7.5
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.openejb.spi;

import javax.ejb.EJBHome;
import javax.ejb.EJBMetaData;
import javax.ejb.EJBObject;
import javax.ejb.Handle;
import javax.ejb.HomeHandle;

import org.apache.openejb.ProxyInfo;

/**
 * 

LOCAL to REMOTE SERIALIZATION

* * Definition:

* This is a serialization that initiates in the local vm, but * is outside the scope of a marked IntraVM local serialization. *

* Circumstances:

* When an IntraVM implementation of a javax.ejb.* interface is * serialized outside the scope of the IntraVM Server *

* These serializations happen when objects are sent from a * local bean to a remote client as part of a return value, or * when a stateful session bean is passified. *

* Action:

* Don't serialize the IntraVM javax.ejb.* interface * implementation, instead ask the ApplicationServer to nominate * its own implementation as a replacement. This is done via * the org.apache.openejb.spi.ApplicationServer interface. *

* Example Scenario:

* SERIALIZATION
*
1. ObjectOutputStream encounters an IntraVmMetaData instance * in the object graph and calls its writeReplace method. *
2. The IntraVmMetaData instance determines it is being * serialized outside the scope of an IntraVM serialization * by calling IntraVmCopyMonitor.isIntraVmCopyOperation(). *
3. The IntraVmMetaData instance calls the getEJBMetaData * method on the ApplicationServer. *
4. The IntraVmMetaData instance returns the * ApplicationServer's EJBMetaData instance from the * writeReplace method. *
5. The ObjectOutputStream serializes the ApplicationServer's * EJBMetaData instance in place of the IntraVmMetaData * instance. *

* Note: The ApplicationServer's EJBMetaData instance can * be any object that implements the javax.ejb.EJBMetaData * interface and can also implement any serialization * methods, such as the writeReplace method, to nominate a * replacement or implement protocol specific logic or * otherwise gain control over the serialization of * EJBMetaData instances destined for its remote clients. *

* DESERIALIZATION

* The deserialization of the Application Server's * javax.ejb.* implementations is implementation specific. *

* * @version $Revision: 1153797 $ $Date: 2011-08-04 02:09:44 -0700 (Thu, 04 Aug 2011) $ */ public interface ApplicationServer { public EJBMetaData getEJBMetaData(ProxyInfo proxyInfo); public Handle getHandle(ProxyInfo proxyInfo); public HomeHandle getHomeHandle(ProxyInfo proxyInfo); public EJBObject getEJBObject(ProxyInfo proxyInfo); public Object getBusinessObject(ProxyInfo proxyInfo); public EJBHome getEJBHome(ProxyInfo proxyInfo); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy