寫程序,做產(chǎn)品,過日子

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

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

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

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

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

          公司剛剛換用了SubVersion首先涮了我一把。Subeclipse 1.0.1只認一個項目一個項目的check out。一下子把我的四個項目合并成一個什么都不是的大項目?!∥抑缓冒堰@個大項目關(guān)掉,再一個一個的導(dǎo)入進來。

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

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

          左找右找,終于發(fā)現(xiàn)有人說subeclipse 1.1.6搞定了這個問題。于是升級,搞定了這個問題。

          ?

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

          只有一個美中不足:它生成的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簡單的拿工程名做包名。

          ?

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

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

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

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

          ……神啊,救救我吧。

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

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

          將部署配置改為Ignore之后,然后手工將pojo包放到j(luò)boss 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 閱讀(2855) 評論(3)  編輯  收藏 所屬分類: Java

          Feedback

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

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

          對于生產(chǎn)環(huán)境的部署 我們都還是用ant 的。  回復(fù)  更多評論
            

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

          主站蜘蛛池模板: 峨山| 定日县| 邻水| 禹州市| 林芝县| 莱州市| 鹤山市| 仁怀市| 怀集县| 桑植县| 丽水市| 新平| 枣阳市| 永康市| 阿荣旗| 安平县| 通江县| 丰城市| 赤城县| 全州县| 香河县| 芦山县| 宣武区| 濮阳县| 溆浦县| 淳化县| 兴安盟| 沂源县| 通江县| 牟定县| 曲周县| 读书| 耿马| 清苑县| 化德县| 沙湾县| 镇康县| 武鸣县| 广昌县| 昔阳县| 甘泉县|