I am having an issue with Geronimo and memory.  First, this could be a configuration issue or a memory leak.  Here is what happens. 

 

·         When we build java objects, we deploy to the Geronimo application server.

·         We then run Junit tests to test the remote interface and bring back data objects

·         Most of the time, this works without a hitch.  However, after a while (say a good week or so) everything will break and say that we are out of memory (perm size)

 

I know that one on the actions that can be taken is to update the perm size.  First question is to how to do this correctly for Geronimo?  Second, what is the ideal perm size (if there is one) for Geronimo.

 

The other idea is that there could be a memory leak.  My objects are basic data objects and we are using the entity manager from the container to access the data.  Is there something that needs to be released after I make the database calls?  Here is an example of the code that I have:

 

 

@Stateless

public class Faction implements IFactionRemote

{

            @PersistenceContext(unitName = "domain.ecommerce")

            private EntityManager m_em;

                       

            @EJB(name="LoggerLocal")

            private ILoggerLocal m_logger;

                       

            @EJB(name="EntityEmdsLocal")

private IEntityEmdsLocal m_emdsEntity;

                       

/**

 * Default constructor.

            */

public Faction()

{

   

            }

 

            /**

             * Returns an MDS Entity Group

             * @param EntityId

             * @param BusinessType

             * @return EmdsEnity - MDS Group Entity

             */

            @Override

            public EmdsEntity ReturnGroup(String EntityId, String BusinessType)

            {

                        PkEntity oKey = new PkEntity();

                        EmdsEntity oEntity = null;

                                   

                        oKey.setId(EntityId);

                        oKey.setBusinessType(BusinessType);

                        oKey.setType("GRP");

                                   

                        try

                        {                                             

                                    oEntity = this.m_emdsEntity.ReturnEntity(oKey);

                        }

                        catch(Exception ex)

                        {

                                    this.m_logger.error("Faction error: ", ex);

                        }

                                   

                        return oEntity;

            }

}

 

 

Is there anything that I need to be doing to the EntityManager or other EJB’s to release the resources?  Do I explicitly set the entity manager to null?  Any help that you can give me will be greatly appreciated.

 

 

Russell Collins

Sr. Software Engineer

McLane Advanced Technology

254.771.6419