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 RemoteBusinessWrapperBasecreateRemoteBusinessObject(ClassLoader loader, String businessInterface, Remote delegate)static RemoteBusinessWrapperBasecreateRemoteBusinessObject(String businessInterface, Remote delegate)static ObjectdeserializeObject(byte[] data, ClassLoader loader)static ObjectdeserializeObject(byte[] data, ClassLoader loader, boolean resolveObject)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 voiddeserializeObjectFields(Object instance, ObjectInputStream ois)static voiddeserializeObjectFields(Object instance, ObjectInputStream ois, Object replaceValue, boolean usesSuperClass)static ClassgenerateSEI(ClassGeneratorFactory cgf, String seiClassName, ClassLoader loader, Class beanClass)static StringgetGeneratedOptionalInterfaceName(String ejbClassName)static StringgetGeneratedRemoteIntfName(String businessIntf)static StringgetGeneratedRemoteWrapperName(String businessIntf)static StringgetGeneratedSerializableClassName(String beanClass)static StringgetGenericEJBHomeClassName()static StringgetRemote30HomeJndiName(String jndiName)static StringgetRemoteEjbJndiName(boolean businessView, String interfaceName, String jndiName)static StringgetRemoteEjbJndiName(com.sun.enterprise.deployment.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 ClassloadGeneratedGenericEJBHomeClass(ClassLoader appClassLoader)static voidloadGeneratedRemoteBusinessClasses(ClassLoader appClassLoader, String businessInterfaceName)static voidloadGeneratedRemoteBusinessClasses(String businessInterfaceName)static ClassloadGeneratedSerializableClass(ClassLoader loader, String className)static ObjectlookupRemote30BusinessObject(Object jndiObj, String businessInterface)static ObjectresolveEjbRefObject(com.sun.enterprise.deployment.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 voidserializeObjectFields(Object instance, ObjectOutputStream oos)static voidserializeObjectFields(Object instance, ObjectOutputStream oos, boolean usesSuperClass)static booleanuseStaticCodegen()
-
-
-
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) 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.- Throws:
Exception
-
deserializeObject
public static final Object deserializeObject(byte[] data, ClassLoader loader) 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(com.sun.enterprise.deployment.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(com.sun.enterprise.deployment.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
-
-