I'm having a problem returning a handle to a stateful session bean. A ClassNotFoundException is returned from the readObject() method of ObjectInputStream. The class it cannot find is the stub to the session bean that I am attempting to get a handle for. I can see that it exists in the correct package.
I'm using a service locator
pattern to get the handle and then I store it in an HttpSession object in my
servlet through a Business Delegate. When I want to get the handle to the session bean again I call the service locator through my business delegate passing the handle id through to the getService(
String id) method of my service locator:
public static EJBObject getService(String id) throws ServiceLocatorException {
if (id == null) {
throw new ServiceLocatorException("test");
}
try {
byte[] bytes = new String(id).getBytes();
InputStream io = new
ByteArrayInputStream(bytes);
ObjectInputStream os = new
ObjectInputStream(io);
javax.ejb.Handle handle =
(javax.ejb.Handle)os.readObject();
return handle.getEJBObject();
} catch(Exception ex) {
ex.printStackTrace();
throw new ServiceLocatorException("test");
}
}
The problem I have is that when it gets to the line
javax.ejb.Handle handle =
(javax.ejb.Handle)os.readObject();
os.readObject() returns a class not found exception:
java.lang.ClassNotFoundException: com.waersystems.ejb.supplier._SupplierMaintenance_Stub
That is the correct stub for the session object and it exists in that package so why am I getting the exception? I'm using Websphere Studio Application Developer 5. Any ideas would be greatly appreciated.