隨筆 - 6  文章 - 0  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(2)

          隨筆分類

          文章分類

          好友

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          ??? 記得有一次在群里的一個朋友,問到了怎樣在Spring里控制Hibernate的Session,由于之前工作一直都比較緊張,所以現(xiàn)在才想起。呵呵。
          ??? Spring對Hibernate的Session管理是自動實(shí)現(xiàn)的,我們使用getHibernateTemplate()這個方法,對Session的打開,關(guān)閉都是由Spring來控制。結(jié)果有時候就會出現(xiàn)Session過早的關(guān)閉問題,對于這種情況,不知道大家是怎樣解決的呢?我之前也在網(wǎng)上看到一些說法,:hibernate的要點(diǎn)19,20這里,不過我測試之后好像還是會出現(xiàn)這個問題,可能是由于我比較菜吧。呵呵。大家也可以照hibernate要點(diǎn)的方法試試,成功的話分享一下。于是我就采用了比較笨的方法,寫了個ThreadLocalSession來自己控制處理,這樣做雖然是可以自己來控制,但對于Spring的事務(wù)管理就不支持了。我也是并不推薦的做法。呵呵。上次的朋友好像對這個ThreadLocalSession有興趣,今日就貼出來跟大家分享下了。大家可不要扔石頭啊。呵呵。

          附件:ThreadLocalSession.rar
          posted @ 2006-07-29 20:27 badboy 閱讀(314) | 評論 (0)編輯 收藏

          ??? 昨天終于辭職了,忙了兩個月,都無乜時間上來寫下野。
          記得第二日上班,就被經(jīng)理捉去開會了,由于項(xiàng)目比較緊張,公司人手又不夠,唯有把我擺上臺了,呵呵。當(dāng)時真是有點(diǎn)興奮,因?yàn)榈谝淮谓佑|到項(xiàng)目管理,也算是個很好的鍛煉機(jī)會。客戶公司是按CMM3標(biāo)準(zhǔn)來要求的,整個項(xiàng)目按他們做監(jiān)控,我們來實(shí)施。
          ??? CMM3標(biāo)準(zhǔn)要求對項(xiàng)目的需求分析做得比較詳細(xì),接過之前的初步需求分析,連基本的業(yè)務(wù)架構(gòu)都系很粗略的(可能是因?yàn)榕c上級客戶缺少直接的交流吧,所有需求都是由乙方傳遞過來的)很多需求不明確的地方,又要通過乙方請示上級客戶,整個項(xiàng)目在需求這一塊就化了比較多的工夫了。
          ??? 遇到這種情況,建議可以直接跟上級客戶做交流,一來可以對需求不明確的地方得到解決,二來也可以對上級客戶的實(shí)際情況有進(jìn)一步的了解,提一些適當(dāng)?shù)慕ㄗh。
          ??? 經(jīng)過一個多星期的需求分析工作,按里程碑的規(guī)定,兩天之后又需要向乙方提交系統(tǒng)的原型和整體的技術(shù)解決方案了。(這兩天工作壓力非常大,每天都在公司加班到差不多11點(diǎn),哎。)項(xiàng)目的要求是采用B/S架構(gòu),C/S模式來實(shí)現(xiàn)的,我跟主工程師討論了一下后,初步?jīng)Q定了采用web start + spring + EJB?+?hibernate的技術(shù)框架來實(shí)現(xiàn),所以原型暫時只能用Visio來提供幾種方案過去了。由于項(xiàng)目緊,人手又不足這個步驟就做得比較粗了,因些乙方對于我們的技術(shù)能力也打了一個問號(這是我認(rèn)為的),因?yàn)槲覀儾]有這個技術(shù)框架的實(shí)施經(jīng)驗(yàn),當(dāng)時我做的DEMO還在調(diào)試當(dāng)中。只有空口說白話,他們當(dāng)然也對我們的技術(shù)失去信心,因些項(xiàng)目也就開始進(jìn)入疆持的階段了。
          ??? 這里又要總結(jié)下了。對于比較急的項(xiàng)目來說,還要采用比較成熟的做法好,采用新技術(shù),對乙方的說服力就不能得到肯定了,這大概也是由于我經(jīng)驗(yàn)不足吧。即使你技術(shù)再高,在客戶面前,拿不出一個有說服力的項(xiàng)目實(shí)施經(jīng)驗(yàn)出來,客戶的信心還是會大打折扣的。(這是我個人觀點(diǎn))
          ??? 疆持了一段時間,由于各方面的因素,項(xiàng)目最終還是失敗了。哎,第一次就失敗了,心里滋味也不好受,這里簡單總結(jié)一下,也希望各位大哥,能給點(diǎn)建議分享下成功的經(jīng)驗(yàn)。
          ??? 項(xiàng)目失敗后,一個同事就辭職了,我就要跟剩下的CMS新聞發(fā)布系統(tǒng),網(wǎng)站的BUG比較多,開發(fā)這個CMS的同事不在同一地方上班,溝通比較麻煩,我調(diào)試了兩天還沒有搞好。網(wǎng)站過幾天就要交乙方評估驗(yàn)收了,同事是比較有經(jīng)驗(yàn)的高手,經(jīng)理對他做出來的網(wǎng)站很有信心,乙方對我同事的技術(shù)也很有信心,但在這個網(wǎng)站上面BUG的確比較多,可是經(jīng)理就叫我先放下這個工作了,因?yàn)榻?jīng)理又接到了一個Compiere ERP開發(fā)的項(xiàng)目,于是就叫我著手研究這個Compiere了。(也許是因?yàn)樯蟼€項(xiàng)目失敗和過分自信的原因吧,這里沒有批評的意思,我們的經(jīng)理還是比較有經(jīng)驗(yàn)和實(shí)力的,但這個做法,同時也使我覺得太莽撞了)結(jié)果乙方對網(wǎng)站這塊,最終還是說BUG太多,評估不出來而失敗告終了。接下來也沒有什么下文了。
          ??? 幾個開發(fā)的同事都不在,我也曾多次建議經(jīng)理再找多人手回來。一個人搞開發(fā)的滋味真是不好受,雖說也可以給個機(jī)會自己鍛煉開展,但是對我來說,一個人開發(fā)真的沒有什么意思。。研究了一個多星期的Compiere,對Compiere的技術(shù)框架也有所了解吧,經(jīng)理的要求就是要重構(gòu)Compiere的Web這一塊,據(jù)我了解Compiere的web界面大部分都系在servlet里直接print out 出來的,經(jīng)理的意思是想用JSP模板的方式顯示出來,但模板的方式能不能合適?工作量又有多大?原有的基本功能能不能完全實(shí)現(xiàn)?我初步評估了一下,因?yàn)镃ompiere本身的結(jié)構(gòu)問題和我的技術(shù)有限的問題,可行性很低。于是各持已見,也討論了一下,回來之后,我再回頭想想,在各個項(xiàng)目上周轉(zhuǎn)了一下,當(dāng)初進(jìn)公司時的抱負(fù)都變得沒有意義了,同時辭職的念頭也出現(xiàn)了。年輕人總是沖動的。哈哈。于是昨天回去對這兩個月作了個總結(jié)就向經(jīng)理提出辭職了。(沒有項(xiàng)目壓力的感覺還是挺爽的。^_^)

          posted @ 2006-07-29 13:24 badboy 閱讀(354) | 評論 (0)編輯 收藏
          ??? 昨晚,我跟我們的PM討論到選課系統(tǒng)的問題,由于選課緊張,同時在線的同學(xué)一千多,所以引起服務(wù)器的高峰,以致系統(tǒng)有時會崩潰。針對這個問題我也深刻感受過(我們之前都是這樣選過來的)。
          于是我建議:用集群提高性能來解決。
          PM向我介紹了服務(wù)器的整體性能,(具體。。。這個不說了,可以算是較高級的服務(wù)器吧)同時也指出了整個問題的根本不在于服務(wù)器的性能而在于系統(tǒng)的本身,雖然集群可以可提高30%左的性能,他當(dāng)時就說了句:“整個資源就這么多,誰先到,就先得。所以我們就采取了限制人數(shù)的方法。”這汲及到一個系統(tǒng)設(shè)計(jì)的問題,下面就將自己體會的說說吧,
          ??? 當(dāng)我們對數(shù)據(jù)進(jìn)行操作的時候,總是會先把這部份的數(shù)據(jù)鎖起來,以保證數(shù)據(jù)的正確性,那么當(dāng)同時有很多人對這個數(shù)據(jù)進(jìn)行操作的時候,就會因?yàn)橄鹊降娜随i住了數(shù)據(jù)沒有釋放出來而導(dǎo)致,操作失敗。怎么才能防止這種情況呢?我們在設(shè)計(jì)的時候就要盡量減少對數(shù)據(jù)庫的操作,而將操場作放在一個事務(wù)里處理。我們用的是Weblogic服務(wù)器,所以設(shè)計(jì)的時候就盡量的依賴于weblogic的EJB容器進(jìn)行管理,將事務(wù)放到內(nèi)存里處理,這樣就減少了對數(shù)據(jù)庫的操作,提高整體的性能。由于我的文采不好,可能表達(dá)得有點(diǎn)模糊,大家就原諒我一次啦。。哈哈。。

          ??? 總結(jié)一句:就是盡量將事務(wù)在程序上處理,不要放在數(shù)據(jù)庫里處理。
          posted @ 2006-06-01 22:43 badboy 閱讀(244) | 評論 (0)編輯 收藏

          每個程序員在開發(fā)項(xiàng)目的過程中都會碰到或多或少的錯誤異常,我在這里會記錄一些常碰到的異常和處理方法,每碰到一個都會到這里來更新一下,希望大家也能幫我解決一下問題,小弟在此先謝過了。

          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包而引起的,因?yàn)橛袝r候IDE并沒有把你的jar包引入,雖然你明明在項(xiàng)目里配置了這個包,但你的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的項(xiàng)目部署到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

          錯誤原因:weblogic8.X版本里用到JSTL1.1的項(xiàng)目,weblogic8.X不支持JSP2.0,因?yàn)閖sp2.0中已經(jīng)把ELException類包括進(jìn)去了,而weblogic8.X里的是JSP1.2,JSTL1.1里也并沒有這個包。
          解決方法:
          ( 1?) 下載jstl1.0,然后修改web.xml
          ??這樣一來換引起了一個附帶問題:jstl1.0中沒有fn:這個taglib,所有用到fn:的地方必須用jsp來重寫。
          ( 2?) 改用支持JSP2.0的服務(wù)器,tomcat5或weblogic9
          posted @ 2006-04-30 14:47 badboy 閱讀(1195) | 評論 (0)編輯 收藏

          趁著五一假期有空,今天先把學(xué)到的一些開發(fā)規(guī)則跟大家分享下吧。良好的開發(fā)規(guī)則對整個團(tuán)隊(duì)是很有幫助的。下面這些都是我們在項(xiàng)目中的一些開發(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中

          posted @ 2006-04-30 13:51 badboy 閱讀(251) | 評論 (0)編輯 收藏

          大學(xué)就來畢業(yè)了。大三的這個學(xué)期過得非常充實(shí),在學(xué)校研究所實(shí)習(xí)學(xué)到了很多東東,申請了這個家都沒有在這里貢獻(xiàn)過什么,在這里以后都會記錄我的工作經(jīng)驗(yàn)給大家分享,希望大家以后多多交流學(xué)習(xí)。

          posted @ 2006-04-27 22:34 badboy| 編輯 收藏
          僅列出標(biāo)題  
          主站蜘蛛池模板: 许昌市| 咸阳市| 泗洪县| 汕尾市| 吉木萨尔县| 神池县| 南郑县| 朔州市| 宁陵县| 南充市| 元阳县| 南木林县| 仙居县| 金堂县| 安化县| 铜梁县| 于都县| 扬州市| 枣强县| 柏乡县| 剑川县| 沅江市| 临安市| 蓬莱市| 象山县| 台东市| 襄城县| 突泉县| 来凤县| 广宗县| 桓台县| 玉屏| 明光市| 大英县| 陈巴尔虎旗| 沾益县| 天气| 牡丹江市| 百色市| 营山县| 萨迦县|