5 Replies Latest reply on Sep 15, 2004 12:41 AM by mculpepper

    JBoss IDE - EJB3 support

    ivelin.ivanov

      The JBoss IDE team will begin implementing EJB3 support in an upcoming version. Let's discuss the roadmap.

        • 1. Feature Overview

          These are the current JBossIDE/EJB3 target features. I'll probably be able to come back and expand upon each one of these if need be.

          Support for content assist in all EJB3 annotations
          Datasource management. (required for the next 3 to be possible..)
          EJBQL Execution
          Source code generation wizards for Session and Entity beans
          Bean Inspection & Editing from both EJBQL Result Sets and Datasources
          Possibly some sort of JUnit plugging to make unit testing of EJBs a reality?


          Feel free to critique this list, as it's in no way in any final form.

          Thanks!
          -Marshall

          • 2. Re: Feature Overview
            maxandersen

            First couple of questions in the first round...

            "marshall" wrote:

            <li>Datasource management. (required for the next 3 to be possible..)</li>


            What does this cover ? Listing the available datasources in a container ? Is JSR 77 sufficient for this ?

            EJBQL Execution

            Does this require Datasource Management - is it not through the EntityManager one gets access to this ?

            Source code generation wizards for Session and Entity beans

            Again why does this require a datasource ?
            What should be the source of the generation ? From the database entities ? Like "one table/entity - one session facade" etc. ?

            Bean Inspection & Editing from both EJBQL Result Sets and Datasources

            How do we actually get hand on a EntityManager to invoke the Query'ies ?

            Possibly some sort of JUnit plugging to make unit testing of EJBs a reality?

            Can you elaborate on this one ?





            • 3. Re: JBoss IDE - EJB3 support
              maxandersen

              hmm - this forum doesn't like me, it snipped 50% of my posting....here are the last part:

              My thoughts on the JBossIDE is to separate concerns:

              1. Reverse/Forward Engineering (Code generation)

              Based mostly on hibernate/middlegen existing features.
              Make it independent of the EJB3 and it will be usefull in many contexts.

              2. On the fly - support

              Most of these are simply to supply as it is "just" simple extensions to the eclipse JDT (as much as i know it ;)

              EJB3 Annotations support
              Set of code templates for common ejb constructs

              3. Runtime support

              EJBQL querying (hopefully provide code completion on the syntax, but that requires access to some sort of metadata about the objects - none available at the moment in EJB3)

              Display results (from a List (java.beans) and ResultSet)

              Display/editable object graph (can we utilize the variable view from jdt - it contains at least a widget for doing this)

              Investigate how much of the management API that allows us to support advanced introspection (visualization/manipulation)

              • 4. Re: JBoss IDE - EJB3 support

                 

                "marshall" wrote:

                <li>Datasource management. (required for the next 3 to be possible..)</li>
                "maxhibernateorg" wrote:

                What does this cover ? Listing the available datasources in a container ? Is JSR 77 sufficient for this ?


                We probably don't want to get too heavy into this aspect of the IDE, but we'd want, at the very least.. to show a list of tables provided by each datasource that the container has. I believe JSR77 _should_ be fine for this.. I'll probably write a quick proof of concept just to make sure it works the way I think it does.

                "marshall" wrote:

                <li>EJBQL Execution</li>
                "maxhibernateorg" wrote:

                Does this require Datasource Management - is it not through the EntityManager one gets access to this ?


                You're right about not needing Datasource Management, though accessing the EntityManager remotely will either break the spec, or simply not work at all. (Apparently this part of the EJB3 spec is still somewhat in the air..). Bill's suggestion was that we create a JBoss specific service that exposes the EJBQL functionality. More about this when I can pick Bill's brain again.

                "marshall" wrote:

                <li>Source code generation wizards for Session and Entity beans</li>
                "maxhibernateorg" wrote:

                Again why does this require a datasource ?
                What should be the source of the generation ? From the database entities ? Like "one table/entity - one session facade" etc. ?


                This would be the primary use of the Datasource Management. I envision something to effect of right clicking on a Table, and using a wizard to create an EJB and/or session facade.
                "marshall" wrote:

                <li>Bean Inspection & Editing from both EJBQL Result Sets and Datasources</li>
                "maxhibernateorg" wrote:

                How do we actually get hand on a EntityManager to invoke the Query'ies ?


                This seems to be the big question. See my suggestion above.
                "maxhibernateorg" wrote:

                1. Reverse/Forward Engineering (Code generation)

                Based mostly on hibernate/middlegen existing features.
                Make it independent of the EJB3 and it will be usefull in many contexts.

                XDoclet (code, descriptor generation) functionality in JBossIDE is already very rich. 1.3.0 has standard configurations out of the box for EJB and Hibernate, just to name a few. Is there more that i'm missing here?
                "maxhibernateorg" wrote:

                2. On the fly - support

                Most of these are simply to supply as it is "just" simple extensions to the eclipse JDT (as much as i know it ;)

                EJB3 Annotations support
                Set of code templates for common ejb constructs

                Can you elaborate what you mean by on the fly? I agree with EJB3 Annotations. I'm hoping (actually, betting) that eclipse will offer automatic annotation code assist for any defined annotation within your project's classpath. If this is the case, the user can just create an EJB3 project, which will have the EJB3 libraries attached to the classpath.. and voila! instant code assist for all EJB3 annotations =).
                Code Templates for EJB3 is a fresh idea.. I like it.. we'll put a check next to that on the feature list.

                Continued onto the next posting..

                • 5. Re: JBoss IDE - EJB3 support

                  Continued from Previous Post

                  "maxhibernateorg" wrote:

                  3. Runtime support

                  EJBQL querying (hopefully provide code completion on the syntax, but that requires access to some sort of metadata about the objects - none available at the moment in EJB3)

                  Display results (from a List (java.beans) and ResultSet)

                  Display/editable object graph (can we utilize the variable view from jdt - it contains at least a widget for doing this)

                  Investigate how much of the management API that allows us to support advanced introspection (visualization/manipulation)

                  If we can figure out a way to get some sort of EJBQL Result Set back to JBossIDE, we can use jdk5 reflection to get the annotation meta-info and property names of each corresponding bean. The object graph would probably have to be rewritten for the most part.. I'm guessing it's an internal API only (though I don't have any facts to back that up, I'll do some reasarch).

                  I'll try to get some more time with Bill and figure out exactly how we are going to implement this "custom service" for ejbql execution.

                  Thanks for the feedback.. hopefully we can turn this into a Roadmap soon =).
                  -Marshall