Пример

public class BpSessionEJBServlet extends HttpServlet{
public void execute () throws ServletException{
Context ctx = null;
try {
java.util.Hashtable env = new java.util.Hashtable();
env.put (Context.INITIAL_CONTEXT_FACTORY, FACTORY);
ctx = new InitialContext(env);
Object homeObject = ctx.lookup ("EJB JNDI NAME");
BpSessionManagerHome sseHome = (BpSessionManagerHome)javax.rmi.PortableRemoteObject.narrow((org.omg.CORBA.Object)homeObject, BpSessionManagerHome.class);
}
захват (Исключение e) {
throw new ServletException ("INIT Error: " + e.getMessage(),e);
}
наконец {
попробуйте {
if (ctx != null)
ctx.close();
}
захват (Исключение e) {//Обработайте это исключение соответственно }
}
}
}

Решение
Не декларируйте EJBHome локальным образом. Вместо этого декларируйте его как поле (кэширование) и назначьте его в методе init() сервлета.


public class BpSessionEJBServlet extends HttpServlet{
private BpSessionManagerHome sseHome = null; //Кэшируйте домашний EJB здесь
public void init () throws ServletException{
Context ctx = null;
try {
java.util.Hashtable env = new java.util.Hashtable();
env.put (Context.INITIAL_CONTEXT_FACTORY, FACTORY);
ctx = new InitialContext(env);
Object homeObject = ctx.lookup ("EJB JNDI NAME");
sseHome = (BpSessionManagerHome)javax.rmi.PortableRemoteObject.narrow((org.omg.CORBA.Object)homeObject, BpSessionManagerHome.class);
}
catch (Exception e) {
throw new ServletException ("INIT Error: " + e.getMessage(),e);
}
finally {
try {
if (ctx != null)
ctx.close();
}
захват (Исключение e) {//Обработайте это исключение соответственно }
}
}
}