/* | |
* 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.webbeans.spi; | |
import javax.enterprise.inject.spi.Bean; | |
import javax.servlet.http.HttpSession; | |
import java.io.IOException; | |
import java.io.InputStream; | |
import java.io.ObjectInput; | |
import java.io.ObjectOutput; | |
import java.io.OutputStream; | |
import java.io.ObjectInputStream; | |
import java.io.ObjectOutputStream; | |
/** | |
* Container provided failover and passivation service. | |
* @deprecated in the future we will simply store all SessionScoped stuff in the native http session. This will render this service useless. | |
*/ | |
public interface FailOverService | |
{ | |
/** | |
* Used for tracking the origin of serialized bean instances. | |
* | |
* @return an UUID which is unique for each installation. This might change on restarts. | |
*/ | |
public String getJvmId(); | |
/** | |
* @return Whether or not the system supports failover | |
*/ | |
public boolean isSupportFailOver(); | |
/** | |
* @return Whether or not the system support passivation | |
*/ | |
public boolean isSupportPassivation(); | |
/** | |
* Enable failover support. | |
* | |
* @param flag <code>true</code> to enable failover support | |
*/ | |
public void enableFailOverSupport(boolean flag); | |
/** | |
* Enable passivation support. | |
* | |
* @param flag <code>true</code> to enable passivation support | |
*/ | |
public void enablePassivationSupport(boolean flag); | |
/** | |
* Inform the service that a session is idle and that beans should be stored for fail over. | |
* Invoked when we finish a request. | |
* | |
* @param session The {@link HttpSession}. | |
*/ | |
public void sessionIsIdle(HttpSession session); | |
/** | |
* Inform the service that the session will be active. | |
* Invoked when a request is received. | |
* | |
* @param session The {@link HttpSession}. | |
*/ | |
public void sessionIsInUse(HttpSession session); | |
/** | |
* Informs the service that the session did activate and that beans should be restored. | |
* | |
* @param session The {@link HttpSession}. | |
*/ | |
public void sessionDidActivate(HttpSession session); | |
/** | |
* Invoked when the session will passivate and that beans should be stored for passivation. | |
* | |
* @param session The {@link HttpSession}. | |
*/ | |
public void sessionWillPassivate(HttpSession session); | |
/** | |
* Container provided object input stream. | |
* | |
* Note, the stream should support deserializing javassist objects. | |
* | |
* @deprecated we do not use javassist anymore since owb-1.2.0, thus no special handling is needed! | |
* | |
* | |
* @return custom object input stream. | |
*/ | |
public ObjectInputStream getObjectInputStream(InputStream in) throws IOException; | |
/** | |
* Container provided object output stream. | |
* | |
* Note, the stream should support serializing javassist objects. | |
* | |
* @deprecated as we do not use Javassist anymore this is not needed anymore! | |
* | |
* @return custom object output stream. | |
*/ | |
public ObjectOutputStream getObjectOutputStream(OutputStream out) throws IOException; | |
/** | |
* Container provided custom handler for serialize / deserialize a resource | |
* bean. Add clean up code in this method will allow OWB to override default | |
* resource bean passivation behavior. | |
* | |
* Note, in the method, a container may first invoke the application | |
* provided handler(@See SerializationHandler) if it is configured. | |
* | |
* @param bean The resource bean. | |
* @param resourceObject The resource bean instance | |
* @param in The input object stream | |
* @param out The output object stream | |
* | |
* @return {@link #NOT_HANDLED} if not handled by handler. | |
*/ | |
public Object handleResource( | |
Bean<?> bean, | |
Object resourceObject, | |
ObjectInput in, | |
ObjectOutput out | |
); | |
/** | |
* Returned, if container or application does not handle the resource object | |
* in the handleResource() method. | |
*/ | |
public final static Object NOT_HANDLED = new Object(); | |
} |