<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    寫程序,做產品,過日子

    成功其實很簡單,就是強迫自己堅持下去

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      69 Posts :: 1 Stories :: 92 Comments :: 0 Trackbacks

    這兩天因為想測試一下群集Cache,用Myeclipse 建了一個測試程序,快把我折騰死了。

    在Myeclipse的設計中,Project的粒度很細。EAR Project, WAR Project, 和EJB Project是三個不同的Project。它不支持EAR Project包打天下不太一樣。

    我按照這個要求,創建了四個項目:EAR, WAR, EJB和一個公用的Pojo Project。

    公司剛剛換用了SubVersion首先涮了我一把。Subeclipse 1.0.1只認一個項目一個項目的check out。一下子把我的四個項目合并成一個什么都不是的大項目。 我只好把這個大項目關掉,再一個一個的導入進來。

    可是碰在新建Subversion庫的當口上,項目的服務器路徑變動了好幾次。每次都要我這么弄幾下。迫不得已,裝上TortoiseSVN-1.4.3。這東西爽!可以一下子把四個項目全取下來,而且不破壞eclipse項目結構。

    然而,當我打開eclipse,又碰到一個經典問題: subeclipse 1.0.1和TortoiseSVN-1.4.3不兼容,報告說我的subversion客戶端太老(其實是它自己老了),直接罷工了。

    左找右找,終于發現有人說subeclipse 1.1.6搞定了這個問題。于是升級,搞定了這個問題。

    ?

    要說Myeclipse對于EJB和JSP的支持確實漂亮,輕輕松松的就開發完成了。部署并初步運行也是成功的。

    只有一個美中不足:它生成的war包和jar包不能指定名字。在EAR的.mymetadata中,有這么一段配置:

    < project-modules >
    < project-module
    type ="WEB"
    name
    ="Cache?Web"
    id
    ="myeclipse.1171417787608"
    context-root
    ="/cache"
    j2ee-spec
    ="1.4"
    archive
    ="Cache?Web.war" >
    < attributes >
    < attribute? name ="webrootdir" ?value ="/root" ? />
    </ attributes >
    </ project-module >
    < project-module
    type ="EJB"
    name
    ="Cache?Ejb"
    id
    ="myeclipse.1171417692847"
    j2ee-spec
    ="1.4"
    archive
    ="Cache?Ejb.jar" ? />
    </ project-modules >

    ?

    包名中帶空格可不是我的風格。我嘗試修改上面的archive屬性。但是最后生成的EAR中,包名還是照舊。很有可能archive屬性根本就沒有作用。Myeclipse簡單的拿工程名做包名。

    ?

    沒辦法,將就過吧。繼續測試。Pojo是個單獨的Hibernate Pojo項目。EJB和JSP都有引用到。

    在EJB中,調用Pojo得到一個List,里面的元素是Order對象。在EJB中從Object轉成Order成功。但在JSP中轉型時,碰到一個極為古怪的問題:ClassCastException。

    調用EJB得到List都成功了,可怎么從中轉出Order對象會出問題呢?打開Debug看看,List中的確是Order對象啊!太古怪了!

    沒救了,死馬當活馬醫吧。把遠程EJB調用改成本地EJB調用——問題照舊!檢查所有配置文件,都簡單得不可能出問題啊!

    ……神啊,救救我吧。

    最后,在檢查部署后的文件時發現了問題。WAR包和EJB包各自把Pojo項目中的所有classs合并了進來。這樣在一個EAR中,每個pojo的class都有兩份。JSP和EJB各引用各的,從而導致了類型不匹配。

    問題的原因在于Myeclipse中指定的部署方法不對。為了省事,我在WAR和EJB的部署配置中,都選擇了“Merge dependent Java Project Delopyment"。如下圖所示。

    將部署配置改為Ignore之后,然后手工將pojo包放到jboss server的lib中,問題終于解決了。

    可是這樣一來,每次我都得手工的部署pojo包。在EAR的配置中有一個"Jar dependent Java projects"。選中它,并且在引用項目中選中Pojo項目。Myeclipse就會自動將Pojo包部署到EAR中。

    然而,它部署是部署了,沒把人家放到classpath中去,一運行就報錯:ClassNotFound。這個問題好解決,在EJB和WAR的MANIFEST.MF中加入classpath就可以了。

    一開始我用的是pojo.jar這個名字,放到classpath中后運行成功。

    可是Myeclipse在每次自動生成pojo包時,給的是工程名"cache pojo.jar",里面有個空格。classpath死活不認識它,用引號引起來也不行。

    問題到了最后,還是沒有圓滿解決——早知今日,我還不如直接用個ant building呢!

    posted on 2007-02-16 16:15 Welkin Hu 閱讀(2859) 評論(3)  編輯  收藏 所屬分類: Java

    Feedback

    # re: Myeclipse J2EE Project, 折騰死我了。 2007-02-16 17:37 BeanSoft
    試試 netbeans 吧, 呵呵, 好歹也是正版, 支持 svn 和 ant...  回復  更多評論
      

    # re: Myeclipse J2EE Project, 折騰死我了。[未登錄] 2007-02-28 14:02 boss_ch
    調試時用myeclipse 直接部署可以

    對于生產環境的部署 我們都還是用ant 的。  回復  更多評論
      

    # re: Myeclipse J2EE Project, 折騰死我了。 2009-02-07 19:28 xx
    我的老是不停的building。很慢,煩死了。  回復  更多評論
      

    主站蜘蛛池模板: 成人毛片免费观看视频| 四虎影视在线看免费观看| 亚洲成人免费网址| 久久久亚洲精品无码| 免费观看91视频| 亚洲成AV人片在线观看| 免费在线中文日本| 亚洲Av无码专区国产乱码DVD| 两个人看的www免费视频中文| 国产亚洲AV手机在线观看| a免费毛片在线播放| 亚洲精品成人网站在线观看| 边摸边吃奶边做爽免费视频网站| 日本高清免费不卡在线| 国产成人精品久久亚洲高清不卡| 亚洲?V无码成人精品区日韩| 国产亚洲精aa成人网站| 手机看片国产免费永久| 久久亚洲精品无码AV红樱桃| 日韩在线播放全免费| 亚洲AV无码AV男人的天堂不卡| 亚洲A丁香五香天堂网| 最近免费mv在线观看动漫| 内射少妇36P亚洲区| 成人免费无毒在线观看网站| 国产亚洲精品国产福利在线观看| 99在线视频免费| 亚洲综合精品网站| 亚洲AV成人精品一区二区三区 | 日本免费污片中国特一级| 亚洲黄色一级毛片| 天天拍拍天天爽免费视频 | 区久久AAA片69亚洲| 9277手机在线视频观看免费| 亚洲小说图区综合在线| 日本不卡免费新一区二区三区| 亚洲一区二区三区在线| 亚洲一区二区三区免费| 亚洲视频在线免费播放| 美女被免费视频网站| 久久99亚洲网美利坚合众国|