1

我正在阅读此页面上的教程:http:
//edocs.bea.com/docs/cd/E13222_01/wls/docs81/medrec_tutorials/ejbgen.html#858279

我有以下文件 BankAccountEJB.java

import javax.ejb.CreateException; import javax.ejb.EntityBean; import javax.ejb.EntityContext;

public abstract class BankAccountEJB implements EntityBean {

private EntityContext context;

public void setEntityContext(EntityContext aContext) {
    context = aContext;
}

public void ejbActivate() {

}

public void ejbPassivate() {

}

public void ejbRemove() {

}

public void unsetEntityContext() {
    context = null;
}

public void ejbLoad() {

}

public void ejbStore() {

}

public abstract String getName();

public abstract void setName(String name);

public abstract Float getBalance();

public abstract void setBalance(Float balance);

public java.lang.Long ejbCreate(String name, Float balance)  throws CreateException {
    if (name == null) {
        throw new CreateException("The field \"key\" must not be null");
    }

    // TODO add additional validation code, throw CreateException if data is not valid
    setName(name);

setBalance(balance);

    return null;
}

public void ejbPostCreate(java.lang.Long key) {
    // TODO populate relationships here if appropriate
}

}

我运行 java weblogic.tools.ejbgen.EJBGen -ddOnlyGen BankAccountEJB.java 会产生以下错误:

线程“主”com.bea.wls.ejbgen.EJBGenException 中的异常:ejbName 是 com.bea.wls.ejbgen.Bean.createBeanSpecificTags(Bean.java:202) 处 com.bea.wls.ejbgen.Bean 处的必需属性.(Bean.java:127) 在 com.bea.wls.ejbgen.EntityBean.(EntityBean.java:76) 在 com.bea.wls.ejbgen.EJBFactory.createBean(EJBFactory.java:135) 在 com.bea。 wls.ejbgen.EJBFactory.createBean(EJBFactory.java:99) 在 com.bea.wls.ejbgen.EJBGenSGen.initModule(EJBGenSGen.java:106) 在 com.bea.sgen.SGen.run(SGen.java:205)在 com.bea.wls.ejbgen.EJBGen.main(EJBGen.java:212) 在 com.bea.wls.ejbgen.EJBGen.main(EJBGen.java:238) 在 weblogic.tools.ejbgen.EJBGen.main(EJBGen .java:21)

任何输入将不胜感激~!

4

1 回答 1

2

注意:您是否仍在运行 Weblogic 8.1 - 它已经到了生命的尽头。ejbgen 也与 EJB 2.x 一起工作,在过去的 2 年中,开发已经转移到 EJB 3,所以我建议你赶上这些。

现在到你的具体问题。

您的代码似乎没有 ejbgen 工作所需的注释。

像这样的注释用于描述符的生成。

 * @ejbgen:entity
 *   ejb-name = containerManaged
 *   table-name = ejbAccounts
 *   data-source-name = examples-dataSource-demoPool
 *   prim-key-class =  AccountPK
 *   invalidation-target = ServiceDesignEJB

正如您的 URL 所说,本教程中的代码具有正确的数据作为示例 - 确保您在自己的代码中正确复制这些数据。

EJBGen 使用 bean 文件中的注释来生成部署描述符文件和 EJB Java 源文件。MedRec 应用程序中的 EJB 文件已经为 EJBGen 进行了注释。

有关 ejbgen 的另一个版本,请参阅http://www.beust.com/ejbgen/

于 2010-09-23T05:32:18.747 回答