Hi,
I am trying to create jbosscmp-jdbc.xml file using Xdoclet. After the file is created the tags i.e. <jdbc-type>, <sql-type> and <datasource-mapping> are not coming. Similarly in ejb-jar.xml file, <cmp-field> tag is not getting generated. A quick help would be highly appreciated.
Thanks
Deependra
Here is my bean class.
//createTable="false"
//removeTable="false"
//datasourceMapping="Oracle8"
//* primkey-field="key"
package com.xx.yy.common.eb_pkgenerator;
import java.io.Serializable;
import javax.ejb.CreateException;
import javax.ejb.DuplicateKeyException;
import javax.ejb.EJBException;
import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
import javax.ejb.FinderException;
import javax.ejb.NoSuchEntityException;
import javax.ejb.ObjectNotFoundException;
import javax.ejb.RemoveException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
/**
* Magic do not remove
*/
/**
* This entity bean class contains method implementation defined in remote interface
*
* @version 1.0
* @author Sanjeev Garg
* @ejb:bean name="PKGenerator"
* jndi-name="jndi.PKGenerator"
* type="CMP"
* @ejb.persistence table-name="primary_keys"
* @ejb:transaction type="Required"
*
* @weblogic

ool max-beans-in-free-pool="20"
* initial-beans-in-free-pool="0"
* @weblogic:cache max-beans-in-cache="100"
* idle-timeout-seconds="10"
* read-timeout-seconds="15"
* @weblogic:transaction-descriptor trans-timeout-seconds="3600"
*
* @jboss

ool max-beans-in-free-pool="20"
* initial-beans-in-free-pool="0"
* @jboss:cache max-beans-in-cache="100"
* idle-timeout-seconds="10"
* read-timeout-seconds="15"
* @jboss:transaction-descriptor trans-timeout-seconds="3600"
* @jboss.persistence datasource="java:/xxDS"
* datasource-mapping="Oracle8"
* create-table="False"
* remove-table="False"
* pk-constraint="True"
* table-name="primary_keys"
* preferred-relation-mapping="foreign-key"
* @jboss:cmp-field field-name="key" column-name="key"
* @jboss:cmp-field field-name="value" column-name="value"
*/
public abstract class PKGeneratorBean implements EntityBean {
/* Entity Context */
private EntityContext ctx;
/* flag to determine whether or not the bean needs to be written to storage.*/
private transient boolean isDirty;
/**
* This method sets the EntityContext for the
EJB.
*
* @param EntityContext EntityContext
*/
public void setEntityContext(EntityContext ctx) {
this.ctx = ctx;
}
/**
* This method un-sets the EntityContext for the EJB.
*/
public void unsetEntityContext() {
this.ctx = null;
}
/**
* This method returns whether the EJB has been modified or not.
*
* This method must be public for the container to be able to invoke it.
*
* @return boolean isDirty
*/
public boolean isModified() {
return isDirty;
}
/**
* Sets the EJB's modified flag.
*
* @param flag Boolean modified Flag
*/
public void setModified(boolean flag) {
isDirty = flag;
}
public void ejbActivate() { }
public void ejbPassivate() { }
public void ejbLoad() { }
public void ejbStore() {
setModified(false);
}
public void ejbRemove() throws RemoveException {}
/**
* This method corresponds to the create method in the home interface
* "PKGeneratorHome.java".
* The parameter sets of the two methods are identical. When the client calls
* <code>PKGeneratorHome.create()</code>, the container
* allocates an instance of this EJB and calls
* <code>PKGeneratorBean.ejbCreate()</code>.
* <p>
* @param key the primary key.
* @param value The value of the primary key
* @exception javax.ejb.CreateException
* if there is a problem creating the bean
* @ejb.create-method
*/
public PKGeneratorPK ejbCreate(
String key,long value) throws CreateException {
setKey(key);
setValue(value);
return new PKGeneratorPK(key);
}
/**
* This method is required by the EJB Specification but is not used here.
*
* @param key the primary key.
* @param value The value of the primary key
*/
public void ejbPostCreate(String key,long value) {
}
/**
* This method will get the primary key for a given table
* @ejb:interface-method view-type="both"
*/
public long getNextIdAsLong() {
setValue(getValue()+1);
return getValue();
}
/**
* This method will get the primary key for a given table
* @ejb:interface-method view-type="both"
*/
public void setNextIdAsLong(long lPK) {
setValue(lPK);
}
/**
* This method will reset the primary key for the entity
* @ejb:interface-method view-type="both"
*/
public void resetKey() {
setValue(1L);
}
/**
* @ejb.interface-method
* @ejb.pk-field
* @ejb.persistence column-name="key"
* @ejb.relation-table table-name="key"
* datasource="java:/xxDS"
* datasource-mapping="Oracle8"
* create-table="false"
* remove-table="false"
* row-locking ="true"
* @jboss:column-name="key"
* @jboss:jdbc-type VARCHAR
* @jboss:sql-type VARCHAR2(20)
*/
public abstract String getKey();
/**
* @param key The primary key in the database
* @ejb.interface-method
* @ejb.persistence column-name="key"
*/
public abstract void setKey(String key);
/**
* @ejb.interface-method
* @jboss:column-name="value"
* @jboss:jdbc-type NUMERIC
* @jboss:sql-type NUMBER
*/
public abstract long getValue();
/**
* @param value The value of the primary key in the database
* @ejb.interface-method
*/
public abstract void setValue(long value);
}
here is the jbosscmp-jdbc.xml file and ejb-jar.xml file created using xdoclet.
snippet from jbosscmp-jdbc.xml.
<entity>
<ejb-name>PKGenerator</ejb-name>
<cmp-field>
<field-name>key</field-name>
<column-name>key</column-name>
</cmp-field>
<cmp-field>
<field-name>value</field-name>
<column-name>value</column-name>
</cmp-field>
<!--
To define load groups for this entity, write a file named
jbosscmp-jdbc-load-PKGeneratorBean.xml and put it in
your mergedir. Write it according to the following DTD slice:
<!ELEMENT load-groups (load-group+)>
<!ELEMENT load-group (load-group-name, description?, field-name+)>
<!ELEMENT load-group-name (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT field-name (#PCDATA)>
<!ELEMENT eager-load-group (#PCDATA)>
<!ELEMENT lazy-load-groups (load-group-name+)>
-->
</entity>
and code snippet from ejb-jar.xml
<entity >
<description><![CDATA[This entity bean class contains method implementation defined in remote interface]]></description>
<ejb-name>PKGenerator</ejb-name>
<home>com..xx.yy.zz.PKGeneratorHome</home>
<remote>com.pindartech.clipper.common.eb_pkgenerator.PKGenerator</remote>
<ejb-class>com..xx.yy.zz.PKGeneratorBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>com.xx.yy.zz.PKGeneratorPK</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>PKGenerator</abstract-schema-name>
</entity>