呵呵,花了N天,终于解决了EJB部署中遇到的问题.

我用Eclipse+JBoss4.0+MySql写一个信息管理系统,遇到一个部署错误的问题,在下花了N多天,伤了N多脑细胞,看了N篇文章,google了N遍net,终于找到了问题的症结。下面写出来供可能遇到相同问题的以参考:在这个系统中,有一个school和grade的之间的1:N的关联。我在school和grade中定义了相应的关联如下:

/*********School EJB*******************
  * 2005-9-23
  *
  * @ejb.interface-method view-type = "local"
  * @ejb.relation name="school-grade" role-name="school-has-grade"
  * @return
  */
 public abstract Collection getGrade();

 /**
  * @ejb.interface-method view-type = "local"
  * @param grade
  */
 public abstract void setGrade(Collection grade);

/*********Grade EJB**********************
  * 2005-9-23
  *
  * @ejb.interface-method view-type = "local"
  * @ejb.relation name="school-grade" role-name="grade-belong-school"
  *
  * @jboss.relation related-pk-field="id" fk-column="school_id"
  *                 fk-constraint="true"
  * @return SchoolLocal
  */
 public abstract SchoolLocal getSchool();

 /**
  * @ejb.interface-method view-type = "local"
  * @param school
  */
 public abstract void setSchool(SchoolLocal school);

用xDoclet生成了部署描述文件后,然后就在JBoss中部署这两个EJB,哪知道出现了如下的错误:org.jboss.deployment.DeploymentException: Setter was found but no getter was found for field: school

真是奇怪了,在接口中和EJB实现文件中明明有getter方法,怎么会找不到呢?我第一反应是:JBoss有BUG????我还特地下了JBoss4.0.3RC,结果还是一样,还是报上面的错。会不会是部署描述文件出了问题?可是查了很多遍,看不出有哪一点不对。真是见鬼了!害得我一气之下将原来的工程文件全部删除(还好,损失不太大:))重新再做一遍,原以为这回应该没什么问题了吧。可是一部署,晕倒!还是这样的问题。

写到这儿,各位看官有何感想?我差一点就放弃了。好在laliluna的文章帮了我的大忙.原来是在GradeEJB中少了一个引用描述,在GradeEJB的类定义前加入下面一行,再运行xDoclet,再部署,问题就解决了:

@ejb.ejb-ref view-type="local" ejb-name="School" ref-name="ejb/school/School"

好了,问题终于解决了,我又得继续去写我的程序了。以后我会把我在写程序过程中遇到的问题和体会、感悟写出来和大家分享、交流。咱们下回再见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值