??? 昨天終于辭職了,忙了兩個月,都無乜時間上來寫下野。
記得第二日上班,就被經(jīng)理捉去開會了,由于項目比較緊張,公司人手又不夠,唯有把我擺上臺了,呵呵。當(dāng)時真是有點興奮,因為第一次接觸到項目管理,也算是個很好的鍛煉機會??蛻艄臼前碈MM3標(biāo)準(zhǔn)來要求的,整個項目按他們做監(jiān)控,我們來實施。
??? CMM3標(biāo)準(zhǔn)要求對項目的需求分析做得比較詳細(xì),接過之前的初步需求分析,連基本的業(yè)務(wù)架構(gòu)都系很粗略的(可能是因為與上級客戶缺少直接的交流吧,所有需求都是由乙方傳遞過來的)很多需求不明確的地方,又要通過乙方請示上級客戶,整個項目在需求這一塊就化了比較多的工夫了。
??? 遇到這種情況,建議可以直接跟上級客戶做交流,一來可以對需求不明確的地方得到解決,二來也可以對上級客戶的實際情況有進(jìn)一步的了解,提一些適當(dāng)?shù)慕ㄗh。
??? 經(jīng)過一個多星期的需求分析工作,按里程碑的規(guī)定,兩天之后又需要向乙方提交系統(tǒng)的原型和整體的技術(shù)解決方案了。(這兩天工作壓力非常大,每天都在公司加班到差不多11點,哎。)項目的要求是采用B/S架構(gòu),C/S模式來實現(xiàn)的,我跟主工程師討論了一下后,初步?jīng)Q定了采用web start + spring + EJB?+?hibernate的技術(shù)框架來實現(xiàn),所以原型暫時只能用Visio來提供幾種方案過去了。由于項目緊,人手又不足這個步驟就做得比較粗了,因些乙方對于我們的技術(shù)能力也打了一個問號(這是我認(rèn)為的),因為我們并沒有這個技術(shù)框架的實施經(jīng)驗,當(dāng)時我做的DEMO還在調(diào)試當(dāng)中。只有空口說白話,他們當(dāng)然也對我們的技術(shù)失去信心,因些項目也就開始進(jìn)入疆持的階段了。
??? 這里又要總結(jié)下了。對于比較急的項目來說,還要采用比較成熟的做法好,采用新技術(shù),對乙方的說服力就不能得到肯定了,這大概也是由于我經(jīng)驗不足吧。即使你技術(shù)再高,在客戶面前,拿不出一個有說服力的項目實施經(jīng)驗出來,客戶的信心還是會大打折扣的。(這是我個人觀點)
??? 疆持了一段時間,由于各方面的因素,項目最終還是失敗了。哎,第一次就失敗了,心里滋味也不好受,這里簡單總結(jié)一下,也希望各位大哥,能給點建議分享下成功的經(jīng)驗。
??? 項目失敗后,一個同事就辭職了,我就要跟剩下的CMS新聞發(fā)布系統(tǒng),網(wǎng)站的BUG比較多,開發(fā)這個CMS的同事不在同一地方上班,溝通比較麻煩,我調(diào)試了兩天還沒有搞好。網(wǎng)站過幾天就要交乙方評估驗收了,同事是比較有經(jīng)驗的高手,經(jīng)理對他做出來的網(wǎng)站很有信心,乙方對我同事的技術(shù)也很有信心,但在這個網(wǎng)站上面BUG的確比較多,可是經(jīng)理就叫我先放下這個工作了,因為經(jīng)理又接到了一個Compiere ERP開發(fā)的項目,于是就叫我著手研究這個Compiere了。(也許是因為上個項目失敗和過分自信的原因吧,這里沒有批評的意思,我們的經(jīng)理還是比較有經(jīng)驗和實力的,但這個做法,同時也使我覺得太莽撞了)結(jié)果乙方對網(wǎng)站這塊,最終還是說BUG太多,評估不出來而失敗告終了。接下來也沒有什么下文了。
??? 幾個開發(fā)的同事都不在,我也曾多次建議經(jīng)理再找多人手回來。一個人搞開發(fā)的滋味真是不好受,雖說也可以給個機會自己鍛煉開展,但是對我來說,一個人開發(fā)真的沒有什么意思。。研究了一個多星期的Compiere,對Compiere的技術(shù)框架也有所了解吧,經(jīng)理的要求就是要重構(gòu)Compiere的Web這一塊,據(jù)我了解Compiere的web界面大部分都系在servlet里直接print out 出來的,經(jīng)理的意思是想用JSP模板的方式顯示出來,但模板的方式能不能合適?工作量又有多大?原有的基本功能能不能完全實現(xiàn)?我初步評估了一下,因為Compiere本身的結(jié)構(gòu)問題和我的技術(shù)有限的問題,可行性很低。于是各持已見,也討論了一下,回來之后,我再回頭想想,在各個項目上周轉(zhuǎn)了一下,當(dāng)初進(jìn)公司時的抱負(fù)都變得沒有意義了,同時辭職的念頭也出現(xiàn)了。年輕人總是沖動的。哈哈。于是昨天回去對這兩個月作了個總結(jié)就向經(jīng)理提出辭職了。(沒有項目壓力的感覺還是挺爽的。^_^)
每個程序員在開發(fā)項目的過程中都會碰到或多或少的錯誤異常,我在這里會記錄一些常碰到的異常和處理方法,每碰到一個都會到這里來更新一下,希望大家也能幫我解決一下問題,小弟在此先謝過了。
java常見的錯誤異常:
1、java.lang.NullPointerException
錯誤原因:很明顯是由于空值造成的。問題出現(xiàn)于很多方面,唯有具體情況具體分析了。
解決方法:細(xì)心分析,多判斷傳的參數(shù)據(jù)是否為空;
2、java.lang.NumberFormatException
錯誤原因:由于為空或不能轉(zhuǎn)化為數(shù)值類型時引起的異常。
解決方法:轉(zhuǎn)換前判斷是否為空,能否轉(zhuǎn)成數(shù)值類型。
2、java.lang.NoClassDefFoundError
錯誤原因:通常這個異常是由于沒有找到相應(yīng)的jar包而引起的,因為有時候IDE并沒有把你的jar包引入,雖然你明明在項目里配置了這個包,但你的lib里卻是沒有的。
解決方法:將相應(yīng)的包復(fù)制到lib里去。
Struts,Hibernate,Spring中常見的異常:
1、java.io.FileNotFoundException: Could not open class path resource [user.hbm.xml]
錯誤原因:沒有找到hibernate mapping resource的映射文件,該xml文件沒有在classpath中,這里的hbm.xml文件名和路徑一定要注意大小寫,不然就會出現(xiàn)這個錯誤。還有在用JB開發(fā)時,resource里的xml文件要勾copy,這樣編譯的時候才會把xml文件copy到classpath里去。
解決方法:把對應(yīng)的xml文件copy到classpath相應(yīng)的目錄。
2、org.springframework.beans.NotWritablePropertyException: Invalid property 'userDao' of bean class
錯誤原因:是在spring-config.xml中property name的錯誤。
<property name="...."> 中name的名字是與bean的set方法相關(guān)的,而且要注意大小寫。
例:
在spring-config.xml里配置了一個bean
? <bean id="mySystemManagerFacadeTarget" class="com.site.system.domain.impl.SystemManagerImpl">
??<property name="userDao">
???<ref bean="myUserDao"/>
??</property>
??<property name="roleDao">
???<ref bean="myRoleDao"/>
??</property>
? </bean>
則SystemManagerImpl里就必須要有對應(yīng)的set方法
? private UserDao userDao;
? private RoleDao roleDao;
? /**
?? * set the value of dao
?? */
? public void setUserDao(UserDao userDao) {
??? this.userDao = userDao;
? }
? public void setRoleDao(RoleDao roleDao){
??? this.roleDao = roleDao;
? }
解決方法:細(xì)心分析整個流程,
3、CharScanner; panic: ClassNotFoundException: org.hibernate.hql.ast.HqlToken
錯誤原因:把有hibernate3的項目部署到WebLogic里,WebLogic里已經(jīng)有一個antlr.jar的版本了,導(dǎo)致Hibernate里的antlj.jar不能找到。(網(wǎng)上獲知)
解決方法:
( 1 ) 在hibernate.properties上,或是在spring的conext xml中,加上一個
<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>(不推薦,原因請看我這里的Hibernate2.1升級到Hibernate3.0 )
( 2 ) 將antlr-2.7.5H3.jar這個包加入到weblogic里,注意要加在開頭。(推薦)?
4、java.lang.NoClassDefFoundError:?javax/servlet/jsp/el/ELException
趁著五一假期有空,今天先把學(xué)到的一些開發(fā)規(guī)則跟大家分享下吧。良好的開發(fā)規(guī)則對整個團隊是很有幫助的。下面這些都是我們在項目中的一些開發(fā)規(guī)則:
一、jsp命名規(guī)則:
?? 1.格式:對象名_功能名.jsp
?? 2.名字全部小寫
?? 3.功能名定義:
?????? 主界面:main;
?????? 新增界面:add;
?????? 修改界面:update;
?????? 查看界面:view;等
?? 例如,系統(tǒng)參數(shù)主界面的命名為:sysparam_main.jsp
二、action方法命名規(guī)則:
?? 1.格式:do +〔對象名+〕功能名;??????? 注:對象名可無
?? 2.功能名定義:
?????? 打開主界面:Main
?????? 新增:Add;
?????? 新增提交:AddSubmit;
?????? 修改:Update;
?????? 修改提交:UpdateSubmit;
?????? 刪除提交:DeleteSubmit;
?????? 查看:View
?????? 查詢:Query
?????? 選擇:Select
?????? 選擇提交:SelectSubmit
?????? 等;
??? 例如:打開系統(tǒng)參數(shù)新增界面的方法名為:doSysParamAdd 或doAdd????????
三、Service方法命名規(guī)則:
??? 1.格式:功能名 + 對象名
??? 2.功能名定義:
??????? 獲得對象:get
??????? 新增對象:add
??????? 修改對象:update
??????? 刪除對象:delete
??????? 等;
???? 3.如果操作的是對象的集合,則對象名用復(fù)數(shù)
???? 例如:獲得系統(tǒng)參數(shù)列表的方法名為:getSysParams
四、class命名規(guī)則:
?? 參考《Java編程規(guī)范》
五、數(shù)據(jù)類型
??? 1、由系統(tǒng)生成的ID用Long
??? 2、金額用Double,小數(shù)位為2位
??? 3、10位以下的整數(shù)用Integer,10位以上的用Long
??? 4、日期用java.util.Date???
???
六、所有的頁面流轉(zhuǎn)都經(jīng)過action操作,即使只是簡單的打開一個頁面,也不在jsp中直接寫鏈接。
七、修改、刪除操作都是先選擇checkbox再選功能按鈕,查看則直接通過鏈接。
八、所有對持久數(shù)據(jù)的搜索查詢方法都封裝在query中
大學(xué)就來畢業(yè)了。大三的這個學(xué)期過得非常充實,在學(xué)校研究所實習(xí)學(xué)到了很多東東,申請了這個家都沒有在這里貢獻(xiàn)過什么,在這里以后都會記錄我的工作經(jīng)驗給大家分享,希望大家以后多多交流學(xué)習(xí)。