Avatar billede dn666 Nybegynder
10. juli 2003 - 13:44 Der er 4 kommentarer og
1 løsning

Xdoclet og deployment descritor

Jeg har lavet følgende Bean.

Xdoclet genereret klasserne:

Clip_group_packagesHome
Clip_group_packages
Clip_group_packagesPK

men...

Der bliver intet sat ind i deplument descritorne:
ejb-jar.xml og jbosscmp-jdbc.xml


her er min bean:

package dk.stream.ejb;
/**
* @ejb.bean
*      name="Clip_group_packages"
*      type="CMP"
*      view-type="local"
*      local-jndi-name="local/Clip_group_packages"
*      schema="Clip_group_packages"
*      cmp-version="2.x"
*      view-type="local"
* @ejb.value-object
*      name="Clip_group_packages"
*      match="*"
* @ejb.transaction
*      type="Required"
* @ejb.util
*      generate="physical"
* @ejb.persistence
*      table-name="clip_group_packages"
*
* @ejb:home generate="local"
* @jboss.persistence
*      create-table="false"
*      remove-table="false"
*/
import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
import javax.ejb.CreateException;
public abstract class Clip_group_packagesBean implements EntityBean  {
    private EntityContext context;
    /**
    *  @ejb.create-method
    */
    public Clip_group_packagesPK ejbCreate(Clip_partsLocal clipPart, GroupsLocal group) throws CreateException{
        setClip_parts_part_key(clipPart);
        setGroups_group_key(group);
        return null;
    }

    public void ejbPostCreate(Clip_partsLocal clipPart, GroupsLocal group) {
    }

    public void ejbActivate() {
    }

    public void ejbLoad() {
    }

    public void ejbPassivate() {
    }

    public void ejbRemove() {
    }

    public void ejbStore() {
    }

    public void setEntityContext(EntityContext ctx) {
        this.context = ctx;
    }

    public void unsetEntityContext() {
        this.context = null;
    }
    /** @ejb:pk-field
    * @ejb:interface-method view-type="local"
    *  @ejb:persistent-field
    */
    public abstract GroupsLocal getGroups_group_key();
    /** @ejb:interface-method view-type="local"
    *  @ejb:persistent-field
    */
    public abstract void setGroups_group_key(GroupsLocal newGroups_group_key);
    /** @ejb:pk-field
    * @ejb:interface-method view-type="local"
    *  @ejb:persistent-field
    */
    public abstract Clip_partsLocal getClip_parts_part_key();
    /** @ejb:interface-method view-type="local"
    *  @ejb:persistent-field
    */
    public abstract void setClip_parts_part_key(Clip_partsLocal newClip_parts_part_key);
}


og build.xml:

<project name="Stream-ejb"  default="copy" basedir=".">

    <property file="build.properties"/>

    <path id="project.class.path">
        <fileset dir="${lib.dir}">
            <include name="**/*.jar"/>
        </fileset>
    </path>

    <target name="prepare">
        <mkdir dir="${build.dir}/ejb/META-INF"/>
        <mkdir dir="${generated.src.dir}"/>
        <mkdir dir="${deploy.dir}"/>
    </target>

    <target name="ejbdoclet" depends="prepare">
        <taskdef
            name="ejbdoclet"
            classname="xdoclet.ejb.EjbDocletTask"
            classpathref="project.class.path"
        />
        <tstamp>
            <format property="TODAY" pattern="d-MM-yy"/>
        </tstamp>
        <ejbdoclet
            destdir="${generated.src.dir}"
            excludedtags="@version,@author"
            ejbspec="2.0"
            sourcepath="${ejb.src.dir}"
            classpathref="project.class.path"
        >
            <fileset dir="${ejb.src.dir}">
                <include name="**/*Bean.java"/>
            </fileset>

            <localinterface/>
            <homeinterface />
            <localhomeinterface/>
            <remoteinterface/>
            <entitypk/>
            <deploymentdescriptor destdir="${build.dir}/ejb/META-INF"/>

            <jboss version="3.0"
                datasource="java:/SapdbDS"
                typemapping="SapDB"
                destdir="${build.dir}/ejb/META-INF"
            />
        </ejbdoclet>
    </target>

    <target name="compile" depends="ejbdoclet">
      <javac srcdir="${ejb.src.dir}:${generated.src.dir}" destdir="${build.dir}/ejb">
            <include name="**/*.java"/>
            <classpath refid="project.class.path"/>
      </javac>
    </target>


    <target name="jar" depends="compile">
        <jar jarfile="${deploy.dir}/Status_ids.jar" basedir="${build.dir}/ejb"/>
    </target>

    <target name="copy" depends="jar">
        <copy todir="${jboss.deploy.dir}">
            <fileset dir="${deploy.dir}" >
                <include name="*.jar" />
            </fileset>
        </copy>
    </target>
</project>
Avatar billede arne_v Ekspert
10. juli 2003 - 13:54 #1
Prøv lige og flyt javadoc sektionen ned efter import lige
før class.
Avatar billede arne_v Ekspert
10. juli 2003 - 13:54 #2
(har vi iøvrigt ikke lige haft den ?)
Avatar billede dn666 Nybegynder
10. juli 2003 - 14:07 #3
Jo... for....
He.

Det hele stammer fra at jboss brokker sig:
Depends On Me: org.jboss.deployment.DeploymentException: Error while creating table; - nested throwable: (com.sap.dbtech.jdbc.exceptions.DatabaseException: [-7002] (at 156): KEY not allowed)]

jeg kan ikke se hvorfor den skulle gå ud og lave en create table, da jeg bruger:
* @jboss.persistence
*      create-table="false"
*      remove-table="false"
Avatar billede arne_v Ekspert
10. juli 2003 - 14:17 #4
Prøv og slå "CMP debug" til så JBoss skriver alle SQL sætninger udført
via CMP ud.

Gøres ved at sætte en linie ind i en deployment descriptor.

Måske er det ikke den tabel du tro det er.
Avatar billede dn666 Nybegynder
10. juli 2003 - 15:28 #5
Jeg gik ind i conf/log4j.xml og rettede
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

til <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">

so kommer sql kald osv med, og her fandt jeg ud af at jeg ikke havde fjernet min bean til et table jeg havde droppet tidligere pga. det ikke skulle bruges længere.
så den prøvede at create det igen

at overskue :)...

takker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester