2 Replies Latest reply on Jan 19, 2007 9:29 PM by naxo

    How to share objects between EJB?

    naxo

      Hi,

      First of all, I am newbie in J2EE. I have a doubt about EJB. I don't know how to share objects (if possible) within EJB. I want to know if I can use any kind of ?shared memory? to store some objects to be shared and access from any EJB instance running on the same server.

      I have some information stored in a database, and I want to avoid accessing the database every time an EJB need some information store on it (that information doesn?t change very often). I have some beans managing the database and some other beans that depend on some of the data stored in the database. I want the managing bean to store some data in a "shared memory", and leave it there without any modification until the data in the database will be changed (the managing beans are fully responsible for the database, so if there is any modification in the database they can modify the stored data in the "shared memory"). Then I want some other beans to have access to that "shared memory" so they don?t have to access the database directly...

      I am using JBoss AS 4.0.5 (with EJB 3.0 specification), session beans, message-driven beans and entity beans for persistence (MySQL server 5). I have looked the specification and some books that I have, and I couldn?t find anything like the javax.servlet.ServletContext object that exist in the web tier. In this object I can bind an object to a given attribute name in this servlet context, and any other servlet from the same context can get access to it by using the attribute name. For example;

      //Storing the object in the context
      ServletConfig.getServletContext().setAttribute(name, object)

      //Getting the stored object from the context
      ServletConfig.getServletContext().getAttribute(name)

      I hope that I have made myself clear, I am Spanish and it?s a little difficult for me to explain myself in English? as I told you I am a beginner in J2EE so I am a little confuse right now, and I might be quite wrong on anything that I have said in this post.

      Thanks in advanced

        • 1. Re: How to share objects between EJB?
          genman

          The JBossCache product allows you to share data between instances.

          The EJB spec doesn't define a session context like that. State is normally kept within the DB, and EJBs are fetched when data is needed.

          Usually, what people do to pro-actively notify is use MDBs and send messages to pass around information.

          • 2. Re: How to share objects between EJB?
            naxo

            Thanks for the answer Genman!

            I will take a look on the JBossCache product specification...

            After my studies, I think too that the EJB 3.0 specification doesn't define a context object or any similar object like the web tier does (servlet specification)... thats why I am trying to find a different way of doing that.

            Bye