您的位置:首页 > 编程语言 > Java开发

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

2005-09-24 09:03 615 查看
我用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"
好了,问题终于解决了,我又得继续去写我的程序了。以后我会把我在写程序过程中遇到的问题和体会、感悟写出来和大家分享、交流。咱们下回再见。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息