3 Replies Latest reply on Oct 17, 2007 4:53 AM by wolfc

    JBossSessionBeanMetaData / using embedded Java bean properti

    wolfc

      I'm trying to create the JBossSessionBeanMetaData. It basicly is a SessionBeanMetaData combined with JBossSessionBeanMetaData, so I've got it extending JBossSessionBeanMetaData.
      Now how can I reuse SessionBeanMetaData so that the binding is complete?
      In other words, how can I have use the properties of an embedded Java bean as xml element bindings on the master Java bean?

        • 1. Re: JBossSessionBeanMetaData / using embedded Java bean prop
          aloubyansky

          Have a look at the DescriptionGroupMetaData. If I understood you right, what you need is @JBossXmlModelGroup annotation.

          • 2. Re: JBossSessionBeanMetaData / using embedded Java bean prop
            wolfc

            I don't have a model group here.

            I got:

            <?xml version="1.0"?>
            <jboss
             xmlns="http://www.jboss.com/xml/ns/javaee"
             xmlns:jee="http://java.sun.com/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee
             http://www.jboss.org/j2ee/schema/jboss_5_0.xsd"
             version="3.0">
             <enterprise-beans>
             <service>
             <ejb-name>ServiceSix</ejb-name>
             <ejb-class>org.jboss.ejb3.test.service.ServiceSix</ejb-class>
             <local>org.jboss.ejb3.test.service.ServiceSixLocal</local>
             <remote>org.jboss.ejb3.test.service.ServiceSixRemote</remote>
             <management>org.jboss.ejb3.test.service.ServiceSixManagement</management>
             <jndi-name>serviceSix/remote</jndi-name>
             <local-jndi-name>serviceSix/local</local-jndi-name>
             <ejb-ref>
             <ejb-ref-name>ejb/StatelessBean</ejb-ref-name>
             <ejb-ref-type>Session</ejb-ref-type>
             <remote>org.jboss.ejb3.test.service.StatelessRemote</remote>
             <ejb-link>StatelessBean</ejb-link>
             <injection-target>
             <injection-target-class>org.jboss.ejb3.test.service.ServiceSix</injection-target-class>
             <injection-target-name>stateless</injection-target-name>
             </injection-target>
             <jndi-name>StatelessBean/remote</jndi-name>
             </ejb-ref>
             <ejb-local-ref>
             <ejb-ref-name>ejb/StatelessLocal</ejb-ref-name>
             <ejb-ref-type>Session</ejb-ref-type>
             <local>org.jboss.ejb3.test.service.StatelessLocal</local>
             <ejb-link>StatelessBean</ejb-link>
             <injection-target>
             <injection-target-class>org.jboss.ejb3.test.service.ServiceSix</injection-target-class>
             <injection-target-name>setStatelessLocal</injection-target-name>
             </injection-target>
             <jndi-name>StatelessBean/local</jndi-name>
             </ejb-local-ref>
             <resource-ref>
             <res-ref-name>testDatasource</res-ref-name>
             <res-type>javax.sql.DataSource</res-type>
             <res-auth>Container</res-auth>
             <res-sharing-scope>Shareable</res-sharing-scope>
             <mapped-name>java:/DefaultDS</mapped-name>
             <injection-target>
             <injection-target-class>org.jboss.ejb3.test.service.ServiceSix</injection-target-class>
             <injection-target-name>testDatasource</injection-target-name>
             </injection-target>
             </resource-ref>
             <resource-env-ref>
             <jee:description>A test of the resource-env-ref tag</jee:description>
             <resource-env-ref-name>res/aQueue</resource-env-ref-name>
             <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>
             <jndi-name>queue/mdbtest</jndi-name>
             </resource-env-ref>
             </service>
             </enterprise-beans>
            </jboss>

            So this is a combined JBossSessionBeanMeta and SessionBeanMetaData rolled into 1. Since I'm part of JBossEnterpriseBeansMetaData I must extend JBossSessionBeanMetaData. So:
            @XmlType(name="jboss-service-beanType")
            public class JBossServiceBeanMetaData extends JBossSessionBeanMetaData
            {
             public void setSessionBeanMetaData(SessionBeanMetaData embedded)
             {
             ...
             }
            }

            Now what annotations do I need to add?

            • 3. Re: JBossSessionBeanMetaData / using embedded Java bean prop
              wolfc

              Ah got something, now I see what you mean:

              @JBossXmlModelGroup(name="embeddedSessionBean", propOrder={"descriptionGroup", "ejbClass" })
              class EmbeddedSessionBeanMetaData extends SessionBeanMetaData
              {
              }

              It would appear that name is mandatory and I must specify a propOrder to get things done.

              The JBossSessionBeanMetaData class itself is going to be a dirty hack into existing structures.