EJB—CMP ok~

   一直找不到LOMBOZ v3.1.2里面建立实体Bean的实现,浪费了很多时间还是一无所获。于是毅然转投myeclipse阵营(eclipse v3.2 + myeclipse + jboss 4.0),感谢泡泡的指点,使我迅速安装成功,省事不少。
   连着三天晚上的尝试,BMP和CMP终于在我机子上跑起来了,那个高兴啊….
   回头总结一下,发现煞费一番苦心,结果解决了几个很现在看来很简单的问题。
   一个人的探索无疑事倍功半,往往一点即通的问题在google,百度上却要花去好几个小时。苦于无人指点啊!为什么老师讲课要基于SUN的J2EE Server + notepad呢!好端端的jboss+eclipse不用!愤怒!
   对于BMP的开发,部署,无须多说,挺容易就配置成功了。CMP可就折磨人了,老是报错,部署一直不正确。本质在于我对XDoclet这种基于注释编程的方式不熟悉,对于它的标记和XML配置文件的标签的对应关系更是一概不晓。只能对着它的官方文档和网上一些示例对照着摸索..
   总结几点在CMP中我犯的错误:
      1. EJB-QL编译错误,这是因为我不了解EJB-QL以及抽象持久化模式的原因造成的。比如“SELECT DISTINCT OBJECT(p) FROM PRODUCTS p WHERE p.basePrice < ?1”这句中的PRODUCTS并非数据库空中的表名,而是抽象持久花模式名,也就是在ejb-jar.xml中指定的“<abstract-schema-name>PRODUCTS</abstract-schema-name>”
      2. 对于配置jboss的mysql数据源,可以参见网上一些文档,比较多,这里就不详谈。只是要注意,利用XDoclet时,应该在Bean类中指定比如“ @jboss.persistence   datasource=”java:/MySqlDS”  datasource-mapping=”mySQL”   create-table=”true”   remove-table=”false””
      3. 部署时出现如下错误:
        00:40:09,809 INFO  [EJBDeployer] Undeploying: file:/F:/jboss 4.0.5.GA/server/default/deploy/Product.jar
        00:40:11,496 WARN  [verifier] EJB spec violation:
        Bean   : Product
        Method : public abstract Collection findByName(String) throws   FinderException, RemoteException
        Section: 10.5.6
        Warning: Every finder method except findByPrimaryKey(key) must be associated with a query element in the deployment descriptor. 

   然后我的每个finder方法都指定了EJB-QL的语句,原因到底在哪里喃?百思不得其解。至少耗费了三到四个小时的尝试,才发现原来是指定finder的时候,函数签名的参数没有使用完全限定类名!
   也就是说,把比如
      @ejb.finder   view-type= “both”
                         signature = “java.util.Collection findByName(String name)”
                         query = “SELECT DISTINCT OBJECT(p) FROM PRODUCTS p WHERE p.name = ?1″

   改成
      @ejb.finder   view-type= “both”
                         signature = “java.util.Collection findByName(java.lang.String name)”
                         query = “SELECT DISTINCT OBJECT(p) FROM PRODUCTS p WHERE p.name = ?1″

   一切就OK…
   狂晕+狂汗…GOD… such a stupid mistake!

   算了,这里还是表扬一下GOOGLE,顺便鄙视百度…最后的一个错误就是百度三小时未果,google三分钟解决啊~!
   好了,打住,上述文字未免也太混乱了吧…OK, 欧冠开始了,嘿嘿。。希望今天米兰笑到最后~~(上半场1:0了,呵呵)

Creative Commons License
This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-No Derivative Works 2.5 China Mainland License.
标签:, ,
此条目发表在 学无止境 分类目录,贴了 , , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已被标记为 *

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>