I've already tried your suggestion sir, but it didn't work. I've found out
something i just want to confirm if this is the real cause of my problem. You
see TerminalSessionFacadeEJB resides in
G:\TestXDoclet\src\com\uniserv\comn\controller\ejb\session\terminalfacade and
TenderConfigEJB resides in
G:\TestXDoclet\src\com\uniserv\comn\controller\ejb\entity\tenderconfig . They
reside in a different directory. When i tried to put them in the same directory
XDoclet never displays the No Such EJB Defined error and it generates my
ejb-jar.xml correctly. The <ejb-local-ref> tags are generated correctly for the
session to entity communication inside ejb-jar.xml. Ive tried looking at the
samples that came with the XDoclet bundle and I noticed that the Session and
Entity beans are colocated in the same directory. Do you think this is the
culprit? Do I need to group all of my ejbs together in a single directory just
for XDoclet to locate them and generate the <ejb-local-ref> for the ejb-jar.
xml? If this is the solution to my problem, then how can i configure XDoclet to
see all the EJBs in my directories (EJBs in the session and entity directories).
I've tried everything like putting the Entity bean in the classpath, putting
them in a jar just for XDoclet to see it and yet, i failed miserably to solve
it.
This is my ejbdoclet task:
<target name="ejbdoclet" depends="prepare">
<taskdef name="ejbdoclet"
classname="xdoclet.ejb.EjbDocletTask"
classpath="${java.class.path};${log4j.jar.path};${ant.jar.path};
${xdoclet.jar.path} "/>
<ejbdoclet
sourcepath="${src.dir}"
destdir="${generated.java.dir}"
classpathref="project.class.path"
excludedtags="@version,@author"
ejbspec="2.0"
>
<fileset dir="${src.dir}">
<include name="**/*EJB.java"/>
</fileset>
<entitycmp/>
<deploymentdescriptor destdir="${build.dir}/ejb/META-INF"
validatexml="true"/>
<jboss version="3.0" xmlencoding="UTF-8" validatexml="true"
typemapping="Hypersonic
SQL" datasource="java:/DefaultDS" destdir="${build.
dir}/ejb/META-INF"/>
</ejbdoclet>
</target>
********************************************************************
I suspect you need to change ejb-name to "TenderConfig" by dropping the
EJB suffix. I have a UserEJB that has interfaces User/UserLocal. Here's
the code I use to reference a PhoneEJB similarly set up:
* @ejb.ejb-ref
* ejb-name="Phone"
* ref-name="ejb/Phone"
* view-type="local"
Phone, not PhoneEJB. Give that a shot.
David Harkness
Sony Pictures Digital Networks
(310) 482-4756
-----Original Message-----
From: Paulo Bengero [<mailto:[EMAIL> PROTECTED]
Sent: Monday, August 04, 2003 8:35 PM
To: [EMAIL PROTECTED]
Subject: [Xdoclet-user] Help! XDoclet says "No such EJB Defined"
I'm running XDoclet and whenever I "make" my build.xml file using
JBuilder 7, XDoclet always returns to me this error.This error started
to bug me when I added this field ( @ejb.ejb-ref
ejb-name="TenderConfigEJB" view-type="local" ) in my session
bean(Session Facade Implementation).I want to generate this set of tags:
<ejb-local-ref > <ejb-ref-name></ejb-ref-name>
<ejb-ref-type></ejb-ref-type> <local-home></local-home> <local></local>
<ejb-link></ejb-link> </ejb-local-ref> It seems XDoclet cannot recognize
TenderConfigEJB.By the way TenderConfigEJB is an Entity Bean. The error
log: [ejbdoclet] Running <deploymentDescriptor/> [ejbdoclet] Generating
EJB deployment descriptor. [ejbdoclet] Running XDoclet failed.
[ejbdoclet] <<No such EJB defined: TenderConfigEJB>> [ejbdoclet] 1 error
[ejbdoclet] javadoc: In doclet class xdoclet.DocletTask$DocletMain,
method start has thrown an exception
java.lang.reflect.InvocationTargetException
Any Ideas?
build.xml
_________________________
<?xml version="1.0" encoding="UTF-8"?>
<project name="XDoclet" default="ejbdoclet">
<property file="build.properties"/>
<target name="init">
<property name="dir" value="G:\JAVA Tools"/>
<property name="lib.dir" value="lib"/>
<!-- library/jar path -->
<property name="xdoclet.jar.path"
value="${dir}\XDoclet\lib\xdoclet.
jar"/>
<property name="log4j.jar.path"
value="${dir}\XDoclet\samples\lib\log4j.
jar"/>
<property name="ant.jar.path" value="${dir}\ANT\lib\ant.jar"/>
<property name="src.dir" value="src"/>
<property name="generated.src.dir" value="XDoclet/gen-src-code"/>
<property name="web.dir" value="${src.dir}/web"/>
<property name="generated.java.dir"
value="${generated.src.dir}/java"/>
<property name="config.dir" value="config"/>
<property name="build.dir" value="XDoclet/build"/>
<property name="dist.dir" value="XDoclet/dist"/>
<property name="build.compiler" value="modern"/>
<path id="project.class.path">
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
<!--
<fileset dir ="${basedir}/classes">
<include name="**/*.class"/>
</fileset>
-->
<!-- append the external classpath lastly -->
<pathelement path="${java.class.path};${log4j.jar.path}"/>
</path>
</target>
<!-- Prepare -->
<target name="prepare" depends="init">
<mkdir dir="${build.dir}"/>
<mkdir dir="${build.dir}/ejb"/>
<mkdir dir="${build.dir}/ejb/META-INF"/>
<mkdir dir="${build.dir}/web"/>
<mkdir dir="${build.dir}/web/WEB-INF"/>
<mkdir dir="${build.dir}/web/WEB-INF/tlds"/>
<mkdir dir="${build.dir}/web/WEB-INF/classes"/>
<mkdir dir="${build.dir}/j2ee"/>
<mkdir dir="${build.dir}/j2ee/META-INF"/>
<mkdir dir="${build.dir}/jmx"/>
<mkdir dir="${dist.dir}"/>
<mkdir dir="${generated.src.dir}"/>
<mkdir dir="${generated.java.dir}"/>
<echo message="XDoclet Path = ${xdoclet.jar.path}"/>
<echo message="Log4J Path = ${log4j.jar.path}"/>
<echo message="Ant Path = ${ant.jar.path}"/>
<echo message="ClassPath = ${java.class.path}"/>
<property name="cp" refid="project.class.path"/>
<echo message="CLASSPATH/REF ID:${cp}"/>
<echo message="base dir = ${basedir}/${src.dir}"/>
</target>
<target name="delete" >
<echo message = "Deleting directories"/>
<delete dir="${build.dir}"/>
<delete dir="${build.dir}/ejb"/>
<delete dir="${build.dir}/ejb/META-INF"/>
<delete dir="${build.dir}/web"/>
<delete dir="${build.dir}/web/WEB-INF"/>
<delete dir="${build.dir}/web/WEB-INF/tlds"/>
<delete dir="${build.dir}/web/WEB-INF/classes"/>
<delete dir="${build.dir}/j2ee"/>
<delete dir="${build.dir}/j2ee/META-INF"/>
<delete dir="${build.dir}/jmx"/>
<delete dir="${dist.dir}"/>
<delete dir="${generated.src.dir}"/>
<delete dir="${generated.java.dir}"/>
</target>
<!-- Run EJBDoclet -->
<target name="ejbdoclet" depends="prepare">
<taskdef name="ejbdoclet"
classname="xdoclet.ejb.EjbDocletTask"
classpath="${java.class.path};${log4j.jar.path};${ant.jar.path};
${xdoclet.jar.path} "/>
<ejbdoclet
sourcepath="${src.dir}"
destdir="${generated.java.dir}"
classpathref="project.class.path"
excludedtags="@version,@author"
ejbspec="2.0"
>
<fileset dir="${src.dir}">
<include name="**/*EJB.java"/>
</fileset>
<!-- <dataobject/>
<localinterface/>
<localhomeinterface/> -->
<remoteinterface/>
<homeinterface/>
<entitypk/>
<entitycmp/>
<deploymentdescriptor destdir="${build.dir}/ejb/META-INF"
validatexml="true"/>
<jboss version="3.0" xmlencoding="UTF-8"
validatexml="true"
typemapping="Hypersonic
SQL" datasource="java:/DefaultDS" destdir="${build.
dir}/ejb/META-INF"/>
<!--
<weblogic xmlencoding="UTF-8"
destdir="${build.dir}/ejb/META-INF"
validatexml="true"/>
<webSphere destdir="${build.dir}/ejb/META-INF" />
<orion/>
<apachesoap destdir="${build.dir}/web"/>
-->
<!--
Have struts form objects generated based on entity beans'
data objects. Will require struts.jar to compile.
<strutsform />
-->
</ejbdoclet>
</target>
</project>
TerminalSessionFacadeEJB
___________________________________
/**
* @ejb:bean type = "Stateless"
* name = "TerminalSessionFacadeEJB"
* jndi-name =
"com.uniserv.comn.controller.ejb.entity.tenderconfig.
TerminalSessionFaceEJB"
* display-name = "Terminal Session Facade EJB"
* @ejb.util
* generate="physical"
*
* @ejb.ejb-ref view-type="local"
* ejb-name="TenderConfigEJB"
*
*/
public class TerminalSessionFacadeEJB implements SessionBean {
private SessionContext ctx = null;
private ServiceLocator serviceLocator = null;
TenderConfigEJB
________________________________________
/**
* @ejb.bean
* name ="TenderConfigEJB"
* type="CMP"
* cmp-version="2.x"
* schema="TenderConfigEJB"
* view-type="local"
*
*/
import javax.ejb.*;
import com.uniserv.comn.model.*;
public abstract class TenderConfigEJB implements EntityBean{
private EntityContext ctx = null;
/**
* @ejb.pk
*
*/
public abstract int getTndrID();
public abstract void setTndrID(int iTndrID);
/**
* @ejb.pk
*
*/
public abstract String getTndrCfgName();
************************************
Paulo A. Bengero
Application Systems Engineer
Team ORION
UniServ Systems International Incorporated
* 7th Floor, Fujitsu House Bldg.
A. Arnaiz Ave. (Pasay Road)
Legaspi Village, Makati City 1229
Philippines
************************************
------------------------------------------------------------------------
FPI Gateway Scanner scanned email-body and no virus found
------------------------------------------------------------------------