Package com.sun.ejb
Class EJBUtils
- java.lang.Object
-
- com.sun.ejb.EJBUtils
-
public class EJBUtils extends Object
A handy class with static utility methods. Note that much of this code has to execute in the client so it needs to be careful about which server-only resources it uses and in which code paths.
-
-
Constructor Summary
Constructors Constructor Description EJBUtils()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static RemoteBusinessWrapperBase
createRemoteBusinessObject(ClassLoader loader, String businessInterface, Remote delegate)
static RemoteBusinessWrapperBase
createRemoteBusinessObject(String businessInterface, Remote delegate)
static Object
deserializeObject(byte[] data, ClassLoader loader, boolean resolveObject, long appUniqueId)
Utility method for deserializing EJBs, primary keys and container-managed fields, all of which may include Remote EJB references, Local refs, JNDI Contexts etc which are not Serializable.static Object
deserializeObject(byte[] data, ClassLoader loader, long appUniqueId)
static void
deserializeObjectFields(Object instance, ObjectInputStream ois)
static void
deserializeObjectFields(Object instance, ObjectInputStream ois, Object replaceValue, boolean usesSuperClass)
static Class
generateSEI(ClassGeneratorFactory cgf, String seiClassName, ClassLoader loader, Class beanClass)
static String
getGeneratedOptionalInterfaceName(String ejbClassName)
static String
getGeneratedRemoteIntfName(String businessIntf)
static String
getGeneratedRemoteWrapperName(String businessIntf)
static String
getGeneratedSerializableClassName(String beanClass)
static String
getGenericEJBHomeClassName()
static String
getRemote30HomeJndiName(String jndiName)
static String
getRemoteEjbJndiName(boolean businessView, String interfaceName, String jndiName)
static String
getRemoteEjbJndiName(EjbReferenceDescriptor refDesc)
Actual jndi-name under which Remote ejb factory lives depends on whether it's a Remote Home view or Remote Business view.static Class
loadGeneratedGenericEJBHomeClass(ClassLoader appClassLoader)
static void
loadGeneratedRemoteBusinessClasses(ClassLoader appClassLoader, String businessInterfaceName)
static void
loadGeneratedRemoteBusinessClasses(String businessInterfaceName)
static Class
loadGeneratedSerializableClass(ClassLoader loader, String className)
static Object
lookupRemote30BusinessObject(Object jndiObj, String businessInterface)
static Object
resolveEjbRefObject(EjbReferenceDescriptor refDesc, Object jndiObj)
static byte[]
serializeObject(Object obj)
static byte[]
serializeObject(Object obj, boolean replaceObject)
Utility methods for serializing EJBs, primary keys and container-managed fields, all of which may include Remote EJB references, Local refs, JNDI Contexts etc which are not Serializable.static void
serializeObjectFields(Object instance, ObjectOutputStream oos)
static void
serializeObjectFields(Object instance, ObjectOutputStream oos, boolean usesSuperClass)
static boolean
useStaticCodegen()
-
-
-
Method Detail
-
serializeObject
public static final byte[] serializeObject(Object obj, boolean replaceObject) throws IOException
Utility methods for serializing EJBs, primary keys and container-managed fields, all of which may include Remote EJB references, Local refs, JNDI Contexts etc which are not Serializable. This is not used for normal RMI-IIOP serialization. It has boolean replaceObject control, whether to call replaceObject or not- Throws:
IOException
-
serializeObject
public static final byte[] serializeObject(Object obj) throws IOException
- Throws:
IOException
-
deserializeObject
public static final Object deserializeObject(byte[] data, ClassLoader loader, boolean resolveObject, long appUniqueId) throws Exception
Utility method for deserializing EJBs, primary keys and container-managed fields, all of which may include Remote EJB references, Local refs, JNDI Contexts etc which are not Serializable.- Parameters:
data
-loader
-resolveObject
-appUniqueId
-- Returns:
- object
- Throws:
Exception
-
deserializeObject
public static final Object deserializeObject(byte[] data, ClassLoader loader, long appUniqueId) throws Exception
- Throws:
Exception
-
useStaticCodegen
public static boolean useStaticCodegen()
-
getGeneratedOptionalInterfaceName
public static String getGeneratedOptionalInterfaceName(String ejbClassName)
-
getGeneratedSerializableClassName
public static String getGeneratedSerializableClassName(String beanClass)
-
getGeneratedRemoteWrapperName
public static String getGeneratedRemoteWrapperName(String businessIntf)
-
getGenericEJBHomeClassName
public static String getGenericEJBHomeClassName()
-
getRemoteEjbJndiName
public static String getRemoteEjbJndiName(EjbReferenceDescriptor refDesc)
Actual jndi-name under which Remote ejb factory lives depends on whether it's a Remote Home view or Remote Business view. This is necessary since a single session bean can expose both views and the resulting factory objects are different. These semantics are not exposed to the developer-view to keep things simpler. The developer can simply deal with a single physical jndi-name. If the target bean exposes both a Remote Home view and a Remote Business view, the developer can still use the single physical jndi-name to resolve remote ejb-refs, and we will handle the distinction internally. Of course, this is based on the assumption that the internal name is generated in a way that will not clash with a separate top-level physical jndi-name chosen by the developer. Note that it's better to delay this final jndi name translation as much as possible and do it right before the NamingManager lookup, as opposed to changing the jndi-name within the descriptor objects themselves. This way, the extra indirection will not be exposed if the descriptors are written out and they won't complicate any jndi-name equality logic.
-
getRemoteEjbJndiName
public static String getRemoteEjbJndiName(boolean businessView, String interfaceName, String jndiName)
-
resolveEjbRefObject
public static Object resolveEjbRefObject(EjbReferenceDescriptor refDesc, Object jndiObj) throws NamingException
- Throws:
NamingException
-
lookupRemote30BusinessObject
public static Object lookupRemote30BusinessObject(Object jndiObj, String businessInterface) throws NamingException
- Throws:
NamingException
-
loadGeneratedSerializableClass
public static Class loadGeneratedSerializableClass(ClassLoader loader, String className) throws Exception
- Throws:
Exception
-
loadGeneratedRemoteBusinessClasses
public static void loadGeneratedRemoteBusinessClasses(String businessInterfaceName) throws Exception
- Throws:
Exception
-
loadGeneratedRemoteBusinessClasses
public static void loadGeneratedRemoteBusinessClasses(ClassLoader appClassLoader, String businessInterfaceName) throws Exception
- Throws:
Exception
-
loadGeneratedGenericEJBHomeClass
public static Class loadGeneratedGenericEJBHomeClass(ClassLoader appClassLoader) throws Exception
- Throws:
Exception
-
generateSEI
public static Class generateSEI(ClassGeneratorFactory cgf, String seiClassName, ClassLoader loader, Class beanClass)
-
createRemoteBusinessObject
public static RemoteBusinessWrapperBase createRemoteBusinessObject(String businessInterface, Remote delegate) throws Exception
- Throws:
Exception
-
createRemoteBusinessObject
public static RemoteBusinessWrapperBase createRemoteBusinessObject(ClassLoader loader, String businessInterface, Remote delegate) throws Exception
- Throws:
Exception
-
serializeObjectFields
public static void serializeObjectFields(Object instance, ObjectOutputStream oos) throws IOException
- Throws:
IOException
-
serializeObjectFields
public static void serializeObjectFields(Object instance, ObjectOutputStream oos, boolean usesSuperClass) throws IOException
- Throws:
IOException
-
deserializeObjectFields
public static void deserializeObjectFields(Object instance, ObjectInputStream ois) throws IOException
- Throws:
IOException
-
deserializeObjectFields
public static void deserializeObjectFields(Object instance, ObjectInputStream ois, Object replaceValue, boolean usesSuperClass) throws IOException
- Throws:
IOException
-
-