users@glassfish.java.net

Re: Websphere 5.x to Glassfish App Conversion

From: <glassfish_at_javadesktop.org>
Date: Mon, 10 Nov 2008 16:05:05 PST

Well... Still no luck. I thought I was having a different issue with a database connection to a table that didn't exist - but I hadn't gotten to that part of the code yet. I'm still failing to create this silly BEAN...

I have a number of beans in an application - so there is a "generic" bean handler class that creates the actual bean and returns it to the caller. I made the modification suggested to bypass the JNDIContext properties settings and simply try creating the bean using a no-arg InitialContext() call. Here's a synopsis (with original websphere code commented out and a ton of DEBUG print statements added):

GenericBeanHandler is called "BaseBeanHandler" [code]

public class BaseBeanHandler
{
        private static final boolean DEBUG = true;
/* { <LAZ> Conversion removed all the following}
        //JNDI context property names
  protected static final String PROP_JNDI_CACHE = "com.ibm.websphere.naming.jndicache.cacheobject";
  protected static final String PROP_PROVIDER_URL = Context.PROVIDER_URL;
  protected static final String PROP_CONTEXT_FACTORY = Context.INITIAL_CONTEXT_FACTORY;

  //Default JNDI context property values
  protected static final String DEFAULT_JNDI_CACHE = "cleared";
  protected static final String DEFAULT_CONTEXT_FACTORY = "com.ibm.websphere.naming.WsnInitialContextFactory";
    </LAZ> */

  //Member variables
  protected String m_JNDIUrl;
  protected String m_EJBName;
  protected Context m_Context;

  protected BaseBeanHandler(String jndiURL, String ejbName)
  {
    m_JNDIUrl = jndiURL;
    m_EJBName = ejbName;
    m_Context = null;
  }

  protected Object getBean(Class homeClass)
   throws Exception
  {
    Object bean = null;
    Method create = null;

    try
    {
      create = homeClass.getMethod("create", new Class[0]);
    }
    catch(Exception e)
    {
      throw e;
    }

    try
    {
// if(DEBUG) System.out.println("BaseBeanHandler-"+getHandlerName()+".getBean() for "+m_EJBName+" - attempt bean creation");
      
// Object home = (Object) PortableRemoteObject.narrow(getJNDIContext().lookup(m_EJBName), homeClass);
// bean = create.invoke(home, (Object) new Class[0]);
      if(DEBUG) System.out.println("BaseBeanHandler-"+getHandlerName()+".getBean() for "+m_EJBName+" - attempt no-arg bean creation");
      bean = new InitialContext().lookup(m_EJBName);
    }
    catch(Exception e)
    {
      if(DEBUG) System.out.println("BaseBeanHandler-"+getHandlerName()+".getBean() for "+m_EJBName+" - bean creation failed");
      bean = null;
      closeJNDIContext();
    }

    if(bean == null)
    {
      try
      {
// if(DEBUG) System.out.println(getHandlerName()+".getBean() for "+m_EJBName+" - bean is null, retrying");
// Object home = (Object) PortableRemoteObject.narrow(getJNDIContext().lookup(m_EJBName), homeClass);
// bean = create.invoke(home, (Object) new Class[0]);
        if(DEBUG) System.out.println("BaseBeanHandler-"+getHandlerName()+".getBean() for "+m_EJBName+" - attempt no-arg bean creation");
        bean = new InitialContext().lookup(m_EJBName);
      }
      catch(Exception e)
      {
        if(DEBUG) System.out.println("BaseBeanHandler-"+getHandlerName()+".getBean() for "+m_EJBName+" - bean creation failed");
        bean = null;
        closeJNDIContext();
        throw e;
      }
    }
    if(DEBUG) System.out.println("BaseBeanHandler-"+getHandlerName()+".getBean() for "+m_EJBName+" - bean is created and returned");
    return bean;
  }
[/code]

And here's one of the specific bean classes that utilizes the above class:
[code]
public class CWMManagerBeanHandler extends BaseBeanHandler
{
  private static final boolean DEBUG = true;
        //Member variables
  private String m_ServerName;
  private String m_SystemID;

  //**
  //** Public methods
  //**

  public CWMManagerBeanHandler(String jndiURL, String ejbName, String systemID)
  {
    super(jndiURL, ejbName);
    m_SystemID = systemID;
    
    try
    {
      InetAddress localhost = InetAddress.getLocalHost();
      m_ServerName = localhost.getHostName();
      System.out.println("CWMManagerBeanHandler - constructor was passed: jndiURL - "+jndiURL+"; ejbName - "+ejbName+"; systemID - "+systemID+"");
      System.out.println("CWMManagerBeanHandler - constructor set member: m_SystemID - "+m_SystemID+"; m_ServerName - "+m_ServerName+"");
    }
    catch(Exception e)
    {
      m_ServerName = "UNKNOWN SERVER";
    }
  }

  public boolean save(String name, long value)
   throws Exception
  {
    boolean okay = false;
    CWMManager mgr = null;
    StopWatch sw = new StopWatch();

    System.out.println("CMWManagerBeanHandler.save() called - passing in vars: name - "+name+" ; value - "+value);
    try
    {
      MonitorData md = new MonitorData();
      md.setServerName(m_ServerName);
      md.setSystemID(m_SystemID);
      md.setName(name);
      md.setValue(value);

      System.out.println("CMWManagerBeanHandler.save() - creates a MonitorData object containing: ServerName - "+m_ServerName);
      System.out.println(" SystemID - "+m_SystemID);
      System.out.println(" name - "+name);
      System.out.println(" value - "+value);
      System.out.println("CWMManagerBeanHandler.save() - attempts to create CWMManagerBean object");
      mgr = getCWMManagerBean();
      System.out.println("CWMManagerBeanHandler.save() - calls save method of CWMManagerBean object passing MonitorData object");
      okay = mgr.save(md);
    }
    catch(Exception e)
    {
      sw.stop();
      dumpException("save()", sw, e);
      okay = false;
      closeJNDIContext();
      throw e;
    }
    finally
    {
      removeBean(mgr);
    }

    return okay;
  }
[/code]

Everytime, I get the following log file entries:
[Log]
[#|2008-11-10T17:24:29.537-0600|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=httpSSLWorkerThread-8081-1;|
CMWManagerBeanHandler.save() called - passing in vars: name - Active Requests ; value - 1|#]

[#|2008-11-10T17:24:29.537-0600|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=httpSSLWorkerThread-8081-1;|
CMWManagerBeanHandler.save() - creates a MonitorData object containing: ServerName - JEPP002711|#]

[#|2008-11-10T17:24:29.537-0600|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=httpSSLWorkerThread-8081-1;|
                                                                        SystemID - JEPP_APP|#]

[#|2008-11-10T17:24:29.537-0600|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=httpSSLWorkerThread-8081-1;|
                                                                        name - Active Requests|#]

[#|2008-11-10T17:24:29.537-0600|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=httpSSLWorkerThread-8081-1;|
                                                                        value - 1|#]

[#|2008-11-10T17:24:29.537-0600|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=httpSSLWorkerThread-8081-1;|
CWMManagerBeanHandler.save() - attempts to create CWMManagerBean object|#]

[#|2008-11-10T17:24:29.537-0600|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=httpSSLWorkerThread-8081-1;|
CWMManagerBeanHandler.getBean() for ejb/CWMManager - bean is null, retrying|#]

[#|2008-11-10T17:24:29.552-0600|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=httpSSLWorkerThread-8081-1;|
BaseBeanHandler-CWMManagerBeanHandler.getBean() for ejb/CWMManager - attempt no-arg bean creation|#]

[#|2008-11-10T17:24:29.552-0600|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=httpSSLWorkerThread-8081-1;|
BaseBeanHandler-CWMManagerBeanHandler.getBean() for ejb/CWMManager - bean creation failed|#]

[#|2008-11-10T17:24:29.552-0600|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=httpSSLWorkerThread-8081-1;|
BaseBeanHandler-CWMManagerBeanHandler.getBean() for ejb/CWMManager - attempt no-arg bean creation|#]

[#|2008-11-10T17:24:29.552-0600|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=httpSSLWorkerThread-8081-1;|
BaseBeanHandler-CWMManagerBeanHandler.getBean() for ejb/CWMManager - bean creation failed|#]

[#|2008-11-10T17:24:29.552-0600|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=httpSSLWorkerThread-8081-1;|
CWMManagerBeanHandler.save() - Elapsed time = 00:00:00.015 - Exception: javax.naming.NameNotFoundException|#]

[#|2008-11-10T17:24:29.568-0600|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=httpSSLWorkerThread-8081-1;|
javax.naming.NameNotFoundException
        at com.sun.enterprise.naming.TransientContext.resolveContext(TransientContext.java:268)
        at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:191)
        at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:74)
        at com.sun.enterprise.naming.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:111)
        at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:398)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at utils.basebeans.BaseBeanHandler.getBean(BaseBeanHandler.java:122)
        at CWM.CWMManagerBeanHandler.getCWMManagerBean(CWMManagerBeanHandler.java:240)
        at CWM.CWMManagerBeanHandler.save(CWMManagerBeanHandler.java:207)
        at utils.servlet.BaseServlet.updateMonitorData(BaseServlet.java:1082)
        at utils.servlet.BaseServlet.incrRequest(BaseServlet.java:1139)
        at utils.servlet.BaseServlet.doPost(BaseServlet.java:433)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
        at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:290)
     {and so on for a bunch} . . .
|#]

[#|2008-11-10T17:24:29.568-0600|INFO|sun-appserver9.1|javax.enterprise.system.container.web|_ThreadID=17;_ThreadName=httpSSLWorkerThread-8081-1;|PWC1412: WebModule[/app/cbci] ServletContext.log():CBCServlet: updateMonitorData() - unable to update monitor data NAME: 'Active Requests' VALUE: '1' Exception: javax.naming.NameNotFoundException|#]

[#|2008-11-10T17:24:29.568-0600|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=httpSSLWorkerThread-8081-1;|
javax.naming.NameNotFoundException
        at com.sun.enterprise.naming.TransientContext.resolveContext(TransientContext.java:268)
        at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:191)
        at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:74)
        at com.sun.enterprise.naming.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:111)
        at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:398)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at utils.basebeans.BaseBeanHandler.getBean(BaseBeanHandler.java:122)
        at CWM.CWMManagerBeanHandler.getCWMManagerBean(CWMManagerBeanHandler.java:240)
        at CWM.CWMManagerBeanHandler.save(CWMManagerBeanHandler.java:207)
        at utils.servlet.BaseServlet.updateMonitorData(BaseServlet.java:1082)
        at utils.servlet.BaseServlet.incrRequest(BaseServlet.java:1139)
        at utils.servlet.BaseServlet.doPost(BaseServlet.java:433)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
        at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:290)
     {and so on for a bunch more} . . .
|#]

[/log]

I would've thought this would be gravy - but, I'm suspecting I'm being dense and not seeing the obvious mistake here, there's something really simple causing this failure to generate a bean. When trying to analyze the Exception dumps, my thinking is the top level class references all seem to be pointing to something within the jndiContext part I'm either making "NULL" with the no-arg call or the defaults are not appropriate for the way this is written.

Any ideas on how I can get past this roadblock???

Da Lizard...
[Message sent by forum member 'loungelizard' (loungelizard)]

http://forums.java.net/jive/thread.jspa?messageID=315923