What you have provided is an entity bean.  There are
no problems when declaring @ejb.create-method directly
within an entity bean.

The problem occurs when declaring the
@ejb.create-method tag within a plain old Java
abstract base class that the entity beans extend to
take advantage of the plain Java abtract base class'
fields and methods.

Take a look at my original post and you will notice
that my base class is just a plain old Java abstract
class that does not implement javax.ejb.EntityBean. 
This type of setup works well with
@ejb.interface-method and @ejb.persistence tags
declared within the plain old Java abstract base class
that is extended by entity beans and will put those
methods in the XDoclet generated *BeanCMP classes, the
remote and local interfaces, and the generated
deployment descriptor.  The only quirk is that XDoclet
has problems generating the create methods within the
local/remote home interfaces when @ejb.create-method
is declared in the plain old Java abstract base class
that the entity beans extend, but XDoclet will
generate the correct deployment descriptor
(ejb-jar.xml) information under
<assembly-descriptor><container-transaction><method>
...blah, blah, blah, ...
</method></container-transaction></assembly-descriptor>
if you include the @ejb.transaction tag along with the
@ejb.create-method tag.  I have included a sample of
the code again below.

Thanks.

*********Sample Base & Entity Classes*********

public abstract class MyDataBaseBean {
    
    /**
     * Creates a new instance of MyDataBaseBean 
     */
    public MyDataBaseBean() {
    }
    
    /**
     * @ejb.create-method
     *      view-type="local"
     * @ejb.transaction
     *      type="Required"
     */
    public test.primkeys.MyDataBeanPK
ejbCreate(test.MyData myData,
test.localinterfaces.MyDataLocal myDataLocal) throws
javax.ejb.CreateException {
        setMyData1(myData.getData1());
        setMyData2(myData.getData2());
        
        return null;
    }
    
    public void ejbPostCreate(test.MyData myData,
test.localinterfaces.MyDataLocal myDataLocal) throws
javax.ejb.CreateException {
        setMyData(myDataLocal);
    }

    /**
     * @ejb.interface-method
     *      view-type="local"
     * @ejb.persistence
     *      column-name="high"
     */
    public abstract java.math.BigDecimal getHigh();
    public abstract void setHigh(java.math.BigDecimal
high);

.........

}

/**
 * @ejb.bean
 *      name="MyDataABean"
 *      type="CMP"
 * @ejb.pk
 *      class="test.primkeys.MyDataBeanPK"
 *
 * @jboss.audit-updated-time
 *      field-name="updated"
 *      column-name="updated"
 * @jboss.persistence
 *      table-name="MyDataA"
 */
public abstract class MyDataABean extends
MyDataBaseBean implements javax.ejb.EntityBean {
    private javax.ejb.EntityContext context;

.........

}




--- Marco Mistroni <[EMAIL PROTECTED]> wrote:

> Hello,
>  ok could you do something for me?
>  i write below the ejb that i m using, would you
> mind running xdoclet
> against it and tell me
> what's get generated, so i see if the problem is the
> xdoclet tags or the
> environment?
>  here it is
>  -----------------------------------------------
> 
> package com.myapp.ejb;
> 
> import javax.ejb.*;
> 
> /**
> * @ejb.bean
> * name="ExpenseType"
> * type="CMP"
> * cmp-version="2.x"
> * jndi-name="budget/ExpenseTypeHome"
> * primkey-field="id"
> *
> * @ejb.finder
> * signature="java.util.Collection findAll()"
> *
> * @ejb.persistence table-name="types"
> *
> * @openejb
> *
> * @ejb.transaction type="Required"
> *
> * @jboss.unknown-pk class="java.lang.Integer"
> * auto-increment="true"
> *
> * @jboss.persistence datasource="worldcorp/MySqlDS"
> * createTable="false"
> * removeTable="false"
> *
> */
> public abstract class ExpenseTypeBean implements
> EntityBean
> {
> 
> /** @ejb.create-method */
> public Integer ejbCreate(Integer type, String
> description) throws
> CreateException {
> this.setId(type);
> this.setDescription(description);
> return null;
> }
> 
> 
> public abstract void setId(Integer id);
> 
> /**
> * @ejb.interface-method
> * @ejb.persistence
> */
> public abstract Integer getId();
> 
> 
> /**
> * @ejb.interface-method
> * @ejb.persistence
> */
> public abstract String getDescription();
> 
> /**
> * @ejb.interface-method
> */
> public abstract void setDescription(String desc);
> 
> }
> 
>  pls let me know what are the files that gets
> generated..
> 
> you could mail to me privately (i doubt that list
> allows attachment) at
> [EMAIL PROTECTED]
> 
>  regars
> 
> marco
> 



                
__________________________________ 
Yahoo! Mail - PC Magazine Editors' Choice 2005 
http://mail.yahoo.com


-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
xdoclet-user mailing list
xdoclet-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xdoclet-user

Reply via email to