|
2006年2月11日
一、為啥不去聽(tīng)別人分享? 1、覺(jué)得對(duì)現(xiàn)有工作無(wú)關(guān) 2、工作任務(wù)重,沒(méi)空 3、沒(méi)目的,隨大流 4、覺(jué)得別人一次講太多,記不住 5、任務(wù)性分享,不感興趣 二、為啥自己不主動(dòng)分享? 1、覺(jué)得內(nèi)容少,不想分享 2、無(wú)主題,主題窄 3、壓力大,硬湊PPT 4、工作任務(wù)壓著,沒(méi)空想分享 5、目的性太強(qiáng),沒(méi)想其他東西 三、主動(dòng)分享或聽(tīng)分享的好處? 1、擴(kuò)大個(gè)人影響力 2、鍛煉自己的總結(jié)能力 3、鞏固自己對(duì)某一方面東西的認(rèn)識(shí) 4、迫使自己學(xué)點(diǎn)東西 5、培養(yǎng)自己考慮問(wèn)題的全面性 6、學(xué)習(xí)演講技巧
摘要: 1.目的
mysql的列是固定的,不支持存儲(chǔ)如Map 結(jié)構(gòu)的數(shù)據(jù),但現(xiàn)在我們的需求是希望有一個(gè) ext Map的擴(kuò)展列,可以存儲(chǔ)Map結(jié)構(gòu)的數(shù)據(jù),并且可以在mysql里面進(jìn)行運(yùn)算.(即schema free)。所以解決方案是創(chuàng)建一個(gè)map_get()函數(shù),可以根據(jù)key得到對(duì)應(yīng)的value 閱讀全文
摘要: 因?yàn)樾枰褂胔adoop與hbase結(jié)合使用,所以需要為hadoop hdfs升級(jí)使用append寫(xiě)模式。需要對(duì)現(xiàn)有的hadoop 0.20.1 升級(jí)至0.20.205.0; 升級(jí)過(guò)程簡(jiǎn)單的使用 hadoop namenode -upgrade 從 -18 version => -32version(這個(gè)是dfs/name/current/VERSION).但我們發(fā)現(xiàn)0.20.205跟hive不兼容,所以又安裝facebook的hadoop版本(-30版本)。
整個(gè)升級(jí)流程簡(jiǎn)單來(lái)說(shuō)就是: dfs/name/current/VERSION -18 => -32 => -30. 升級(jí)再回滾的過(guò)程。
閱讀全文
摘要: 單機(jī)應(yīng)用內(nèi),在進(jìn)程內(nèi)部,我們可以使用ThreadLocal傳遞應(yīng)用上下文的方式. 當(dāng)前的 Spring Secrucity , Spring TransactionManager, Log4J MDC, Struts2 ActionContext等等應(yīng)用場(chǎng)景隨處可見(jiàn).
但在是分布式系統(tǒng)下,由于不是在同一個(gè)進(jìn)程內(nèi),所以無(wú)法使用ThreadLocal. 那么什么是分布式ThreadLocal呢?就是將一個(gè)系統(tǒng)中的ThreadLocal信息可以傳遞至下一個(gè)系統(tǒng),將兩者的調(diào)用可以關(guān)聯(lián)起來(lái)。如對(duì)應(yīng)用有一個(gè)調(diào)用,我們生成一個(gè)請(qǐng)求ID (traceId),在后面所有分布式系統(tǒng)調(diào)用中,可以通過(guò)這個(gè)traceId將所有調(diào)用關(guān)聯(lián)起來(lái),這樣查找調(diào)用日志都將十分方便. 閱讀全文
摘要: 我們知道,大家提倡面向接口編程,但凡事都有個(gè)度,當(dāng)濫用,那么面向接口完全流于形式。 閱讀全文
摘要: 現(xiàn)大家使用的ibatis,hibernate,spring jdbc的sql日志信息,有一點(diǎn)個(gè)缺點(diǎn)是占位符與參數(shù)是分開(kāi)打印的,如果想要拷貝sql至PLSQL Developer客戶(hù)端直接執(zhí)行,需要自己拼湊sql。而log4jdbc是在jdbc層的一個(gè)日志框架,可以將占位符與參數(shù)全部合并在一起顯示,方便直接拷貝sql在PLSQL Developer等客戶(hù)端直接執(zhí)行,加快調(diào)試速度。 閱讀全文
摘要: 本次新版本發(fā)布最主要的更新內(nèi)容是生成器的加強(qiáng),并且之前已經(jīng)發(fā)布了rapid-generator獨(dú)立版.
此次升級(jí)保證模板的兼容性.后續(xù)rapid-framework的發(fā)行版將不直接提供rapid-generator的源碼在項(xiàng)目中,以便以后大家編寫(xiě)的模板都可以在一個(gè)生成器引擎中運(yùn)行. 閱讀全文
(本方法屬于作者經(jīng)驗(yàn)總結(jié)出該模式)
Holder模式的主要功能是將一些Bean可以轉(zhuǎn)為靜態(tài)方法調(diào)用.方便使用.
適用于一些系統(tǒng)只存在單例(singleton)并且 十分常用 的基礎(chǔ)服務(wù)對(duì)象.這些基礎(chǔ)服務(wù)如果每次使用spring注入,只會(huì)增加無(wú)謂的代碼及一些不確定性.
示例如下:
BeanValidatorHolder.validate(bean) // HibernateValidator一般系統(tǒng)只有一個(gè)
CacheHolder.get("key") //如Memcached,應(yīng)用系統(tǒng)也只有一個(gè)對(duì)象
ApplicationContextHolder.getBean("userInfoService");
與singleton相比特點(diǎn)
- 一個(gè)Holder只能持有一個(gè)對(duì)象
- Holder一般是持有接口,所以你可以方便的改變實(shí)現(xiàn)
- 配合spring完成Holder初始化
用于持有Cache對(duì)象
1.1在spring中初始化
<bean class="cn.org.rapid_framework.util.holder.CacheHolder">
<property name="cache" ref="memcacheCacheImpl"/>
</bean>
1.2使用 CacheHolder?使用
CacheHolder.add("key","cache_value","1h");
//do something
1.3實(shí)現(xiàn)
public class CacheHolder implements InitializingBean{
private static Cache cache;
public void afterPropertiesSet() throws Exception {
if(cache == null) throw new IllegalStateException("not found 'cache' for CacheHolder ");
}
public void setCache(Cache c) {
if(cache != null) throw new IllegalStateException("CacheHolder already holded 'cache'");
cache = c;
}
public static Cache getCache(){
return cache;
}
//省略了其它N多cache靜態(tài)方法
public static void add(String key, Object value, String expiration) {
cache.add(key, value, parseDuration(expiration));
}
public static void cleanHolder() {= null;
}
}
holder |
功能 |
BeanValidatorHolder |
用于持有Hibernate Validator |
SpringValidatorHolder |
用于持有Spring Validator |
ApplicationContextHolder |
用于持有Spring ApplicationContext? |
CacheHolder |
用于持有Cache |
MessagePublisherHodler |
用于持有類(lèi)似JMS消息中心的消息發(fā)送 |
MessageSourceHolder |
持用MessageSource?,用于國(guó)際化 |
MailerHolder |
用于郵件發(fā)送的Mailer |
ConfigHolder |
用于持有配置,需要?jiǎng)討B(tài)刷新的參數(shù)使用,請(qǐng)查看文章保持類(lèi)的無(wú)狀態(tài) |
SecurityManagerHolder |
用于權(quán)限控制的SecurityManager |
摘要: 使用JSP的都知道jsp:include指令,可以include其它jsp頁(yè)面或者servlet。
而如果你不是使用JSP,而是使用模板引擎如Freemarker,Velocity。有該功能也將十分方便。 閱讀全文
摘要: 既然可以用如此簡(jiǎn)單的方法達(dá)到我們的目的,為何要搞出那么復(fù)雜的方案. (簡(jiǎn)單就是美) 閱讀全文
摘要: 1.SOA存在的目的?
2.為什么說(shuō)SOA是一種風(fēng)格?
3.SOA解決了服務(wù)集成(依賴(lài))問(wèn)題 閱讀全文
摘要:
新增插件:
flex_cairngorm: 基于cairngorm mvc的flex插件,代碼生成器生成的在線demo
freemarker_html_view: 基于freemarker的html視圖,用于不喜歡jsp的同學(xué)使用
v3.5更新內(nèi)容:
擴(kuò)展jsp,freemarker,velocity的模板可以相互繼承,打造替換sitemesh,struts tiles的布局框架.
freemarker,velocity實(shí)現(xiàn)管道操作來(lái)進(jìn)行布局
新增分頁(yè)方言: SQLServer2005Dialect
spring事務(wù)配置采用@Transactional替換xml配置
jdbc增加了sql生成工具,用于進(jìn)一步封裝spring jdbc操作
閱讀全文
摘要: 網(wǎng)上搜索了一番,用于控制flex UI組件的權(quán)限的框架只有chimp相近一些.
但是不喜歡他的基于flex annotation的權(quán)限控制方式.遂決定自己寫(xiě)一套flex權(quán)限控制框架。
如果你熟悉作者的另外一套javascript 表單驗(yàn)證框架rapid-validation,將會(huì)對(duì)下面的使用方式有似曾相識(shí)的感覺(jué)。
閱讀全文
摘要: flex3只支持兩種語(yǔ)言,en_US,ja_JP
而flex4中則支持多國(guó)語(yǔ)言,所以可以將flex4中的%FLEX_HOME%\frameworks\locale\zh_CN拷貝至flex3中。 閱讀全文
摘要: 在google code上編寫(xiě)wiki文檔你最擔(dān)心的是什么:
1. 版本不好控制,在線同時(shí)只能瀏覽一個(gè)版本號(hào)的wiki頁(yè)面
2. 不能提供離線版本
現(xiàn)在使用這個(gè)工具,可以將google wiki直接下載為本地的html ,并且與wiki相關(guān)的資源,如 css ,js ,圖片都可以一同下載 并且與在線瀏覽的效果一樣 .
還提供與ant的集成,直接與構(gòu)建腳本相結(jié)合.
閱讀全文
摘要: 我們都知道,在網(wǎng)上我們很容易找到一個(gè)HTML模板,但是想要尋找一個(gè)Flex,那是少之又少。 本項(xiàng)目的目的是推動(dòng)大家一起共享一些好用的模板,推動(dòng)flex在國(guó)內(nèi)的發(fā)展。 閱讀全文
摘要: 一.功能介紹
1.將前一個(gè)模板的輸出,變成一個(gè)變量,后一個(gè)模板可以通過(guò)變量引用前一個(gè)模板的輸出
2.整個(gè)管道下的模板都在同一個(gè)context中,即模板間可以相互引用變量
將管道操作與我之前擴(kuò)展的模板繼承相結(jié)合,即可打造一個(gè)完美的頁(yè)面布局框架.
閱讀全文
摘要: 與我之前的擴(kuò)展freemarker類(lèi)似,現(xiàn)新增加三個(gè)指令:block,override,extends
一.目的
1.父模板頁(yè)面定義好布局,子模板可以重定義布局中的部分內(nèi)容
2.使模板可以實(shí)現(xiàn)類(lèi)似"類(lèi)"的繼承關(guān)系,并不限繼承層次 閱讀全文
摘要: 現(xiàn)擴(kuò)展freemarker,新增加三個(gè)指令: @extends,@block,@override
一.目的
1. 父模板頁(yè)面定義好布局,子模板可以重定義布局中的部分內(nèi)容
2. 使模板可以實(shí)現(xiàn)類(lèi)似"類(lèi)"的繼承關(guān)系,并不限繼承層次
閱讀全文
摘要: RESTful服務(wù)中很重要的一個(gè)特性即是同一資源,多種表述.
即
/user/123.xml 將返回xml格式數(shù)據(jù)
/user/123.json 將返回json格式數(shù)據(jù)
/user/123.html 將返回html格式數(shù)據(jù)
閱讀全文
摘要: 使用過(guò)python django模板的應(yīng)該清楚,django里面有一個(gè)激動(dòng)人心的功能就是模板可以使用類(lèi)的繼承關(guān)系。 即模板是可以繼承的,并且不限繼承的層次。
如
1. child.html extends base.html
2. grandchild.html extends child.html
這樣,我們?cè)赽ase.html中定義好html布局,然后在“子類(lèi)”(我們這樣稱(chēng)呼吧)重定義需要父頁(yè)面內(nèi)容即可 閱讀全文
摘要: 在對(duì)數(shù)據(jù)庫(kù)水平分區(qū)的情況下,面對(duì)多個(gè)數(shù)據(jù)庫(kù),想要生成一個(gè)唯一性的主鍵這是一個(gè)問(wèn)題。 閱讀全文
摘要: 雖然spring 3.0及ibatis3還未發(fā)布,但rapid里面的集成基本已經(jīng)成型,正式版發(fā)布會(huì)繼續(xù)跟進(jìn).
以下是changelog
新增插件
springmvc_rest : spring restful插件,現(xiàn)基于springmvc3.0 rc1版本,并且rc1還有一個(gè)bug,現(xiàn)rapid自帶一個(gè)類(lèi)手工修復(fù)
ibatis3 : 現(xiàn)在跟隨ibatis3 beta5版本,擴(kuò)展實(shí)現(xiàn)了基于dialect的分頁(yè)
rapid_mailer : 基于spring mail的郵件發(fā)送插件,向ruby on rails的mailer靠攏 閱讀全文
摘要: 為公司講解的一個(gè)PPT,相關(guān)內(nèi)容如下
CAP原則
BASE策略
異步(MessageQueue)
數(shù)據(jù)庫(kù)
數(shù)據(jù)的水平切分及垂直切分
數(shù)據(jù)庫(kù)讀寫(xiě)分離
避免分布式事務(wù)
反范式的數(shù)據(jù)庫(kù)設(shè)計(jì)
負(fù)載均衡
DNS負(fù)載均衡
反向代理負(fù)載均衡
LVS
緩存
數(shù)據(jù)庫(kù)緩存
服務(wù)器緩存/頁(yè)面緩存/數(shù)據(jù)緩存/靜態(tài)化
反向代理緩存
HA
Session
Share Nothing Architecture架構(gòu)
瀏覽器優(yōu)化
瀏覽器緩存/CDN/小圖片合并
分布式文件系統(tǒng)
閱讀全文
摘要: (注:以下代碼是基于ibatis3 beta4的擴(kuò)展,ibatis3正式版如果實(shí)現(xiàn)改變,將會(huì)繼續(xù)跟進(jìn)修改)
iBatis3默認(rèn)使用的分頁(yè)是基于游標(biāo)的分頁(yè),而這種分頁(yè)在不同的數(shù)據(jù)庫(kù)上性能差異不一致,最好的辦法當(dāng)然是使用類(lèi)似hibernate的基于方言(Dialect)的物理分頁(yè)功能。
iBatis3現(xiàn)在提供插件功能,通過(guò)插件我們可以編寫(xiě)自己的攔截器來(lái)攔截iBatis3的主要執(zhí)行方法來(lái)完成相關(guān)功能的擴(kuò)展。 閱讀全文
摘要: 為了使flex客戶(hù)端能夠直接調(diào)用服務(wù)端的spring bean,SBI提供的此種功能,SBI使用DispatchServlet代理轉(zhuǎn)發(fā)MessageBrokerServlet的請(qǐng)求,增加了一些無(wú)用的類(lèi)及相關(guān)配置,
而其實(shí)完成相同的功能,最簡(jiǎn)只需兩個(gè)類(lèi)即可. 閱讀全文
摘要: springmvc_rest的示例使用,包含通過(guò)/userinfo/1, /userinfo/1.json,/userinfo/1.xml 來(lái)查看html,json, xml三種數(shù)據(jù)
ibatis3的示例及基于方言(Dialect)的分頁(yè)使用 閱讀全文
摘要: 現(xiàn)編寫(xiě)了ibatis3的代碼例子.
一.首先我們來(lái)看現(xiàn)在的xml mapper關(guān)于增刪改查的編寫(xiě)
閱讀全文
摘要: 由于下一版本的rapid-framwork需要集成spring RESTful URL,所以研究了一下怎么搭建. 并碰到了一下問(wèn)題。
springmvc 3.0 中增加 RESTful URL功能,構(gòu)造出類(lèi)似javaeye現(xiàn)在的URL。 閱讀全文
摘要: 趕在國(guó)慶之前發(fā)布一個(gè)版本,慶祝國(guó)慶,:)
更新內(nèi)容:
提升:
XsqlBuilder支持Object作為filters
PageRequest.filters使用范型
新特性:
支持Ibatis的分頁(yè)Dialect
新增其它數(shù)據(jù)庫(kù)的jdbc分頁(yè)Dialect 閱讀全文
摘要: 對(duì)于一個(gè)異步的方法調(diào)用,我們需要異步的得到調(diào)用結(jié)果,通常我們會(huì)使用Listener模式,用于監(jiān)聽(tīng)方法異步調(diào)用的結(jié)果.
但應(yīng)用該方法在實(shí)際使用中其實(shí)并不靈活.
閱讀全文
摘要: 在一些特殊的場(chǎng)合,我們可能需要使用異步的IO來(lái)大幅提高性能. 閱讀全文
摘要: 使用hadoop的shell命令進(jìn)行hdfs的操作十分不方便,最好的辦法當(dāng)然是將hdfs映射為本地文件系統(tǒng). 而通過(guò)實(shí)現(xiàn)WebDav Http協(xié)議, 結(jié)合WebDav的眾多客戶(hù)端,可以將hdfs映射為windows或是linux的本地文件系統(tǒng).而使用api存儲(chǔ)文件時(shí),也將對(duì)應(yīng)用透明,如使用本地文件系統(tǒng)一樣使用hdfs. 閱讀全文
摘要: 問(wèn)題:
1.Hibernate碰到延遲加載的屬性訪問(wèn)時(shí)如果session被關(guān)閉則拋出LazyInitializationException
2.Hibernate中的one-to-many等關(guān)聯(lián)關(guān)系在序列化時(shí)如果沒(méi)有控制,則將整個(gè)數(shù)據(jù)庫(kù)都有可能被全部序列化
3.過(guò)多的使用DTO/ValueObject解決這個(gè)問(wèn)題.
解決辦法:
對(duì)Entity對(duì)象生成一個(gè)動(dòng)態(tài)代理,攔截getXXXX()方法,如果訪問(wèn)的是延遲加載的屬性,則return null,而不拋出LazyInitializationException,遞歸生成屬性的代理,只要碰到未延遲加載的屬性,而序列化會(huì)自動(dòng)停止.避免將整個(gè)Entity序列化傳播,導(dǎo)致可能序列化整個(gè)數(shù)據(jù)庫(kù)的問(wèn)題.
閱讀全文
摘要: 簡(jiǎn)單介紹
基于Flex(Cairngorm MVC+BlazeDS) + Spring + Hibernate的Full Stack開(kāi)發(fā)框架
并提供基于契約的零配置編程
項(xiàng)目網(wǎng)站:http://www.pomer.org.cn 閱讀全文
摘要: 該版本主要增加的相關(guān)文檔導(dǎo)航,及一些模板及目錄的調(diào)整
項(xiàng)目Home: http://code.google.com/p/rapid-framework/ 閱讀全文
摘要: 特性列表:
動(dòng)態(tài)構(gòu)造sql條件語(yǔ)句,提供sql拼接與使用占位符兩種方式,
數(shù)據(jù)類(lèi)型的修飾,
對(duì)SQL注入攻擊的防范, 閱讀全文
摘要: 基于spring,struts(struts2),hibernate的web fullstack項(xiàng)目腳手架
一個(gè)類(lèi)似 ruby on rails 的java web快速開(kāi)發(fā)腳手架,本著不重復(fù)發(fā)明輪子的原則,框架只是將零散的struts(struts2)+spring+hibernate各個(gè)組件組裝好在一起,并對(duì)struts及struts2進(jìn)行改造,提供零配置編程,并內(nèi)置一個(gè)強(qiáng)大的代碼生成器及模板文件, 可以生成java的hibernat model,dao,manager,struts+struts2 action類(lèi),可以生成jsp的增刪改查及列表頁(yè)面
閱讀全文
摘要: 本代碼生成器的特性
1. 基于FreeMarker模板語(yǔ)言
2. 基于數(shù)據(jù)庫(kù),并支持多種數(shù)據(jù)庫(kù)(mysql,sql server,oracle測(cè)試通過(guò))
3. 半手工方式,生成的代碼放在某個(gè)目錄,再手工拷貝回來(lái)工作區(qū)
4. 易于做二次開(kāi)發(fā),整個(gè)生成器本身就是java源代碼,源代碼核心十分精簡(jiǎn),并且鼓勵(lì)你做修改代碼,也可以作為任何語(yǔ)言的代碼生成器
5. 配置簡(jiǎn)單,只有一個(gè)配置文件generator.properties
6. 以application方式運(yùn)行生成器,生成不同的table直接修改相關(guān)java代碼即可
7. 將文件系統(tǒng)的目錄名稱(chēng)及文件名稱(chēng)作為生成器的一部分,模板文件的的名稱(chēng)與目錄名稱(chēng)可以直接引用相關(guān)變量,如 ${basepackage}/${className}.java (${className}=Blog,則會(huì)生成Blog.java)
閱讀全文
摘要: javaeye現(xiàn)在使用的表單驗(yàn)證框架就是這個(gè),現(xiàn)正式更名并發(fā)布新版本為rapid-validation-v1.0.0
特性簡(jiǎn)介:
簡(jiǎn)潔,快速的驗(yàn)證語(yǔ)法
無(wú)需編寫(xiě)驗(yàn)證提示信息(當(dāng)然也支持自定義提示信息)
錯(cuò)誤消息在指定地方顯示
支持組合驗(yàn)證
Ajax支持
基于prototype.js
支持國(guó)際化
易于擴(kuò)展
基于標(biāo)準(zhǔn)的Html屬性(class)添加驗(yàn)證,易于其它標(biāo)準(zhǔn)的jsp taglib集成
特殊應(yīng)用場(chǎng)景支持,如:密碼確認(rèn),結(jié)束日期必須大于開(kāi)始日期
完整詳細(xì)的單元測(cè)試,保證框架質(zhì)量 閱讀全文
摘要: 傳統(tǒng)的JS壓縮(刪除注釋,刪除多余空格等)提供的壓縮率有時(shí)還是不盡不意,
幸虧現(xiàn)在的瀏覽器都支持壓縮傳輸(通過(guò)設(shè)置http header的Content-Encoding=gzip),
可以通過(guò)服務(wù)器的配置(如apache)為你的js提供壓縮傳輸,
或是appfuse中使用的GZipFilter使tomcat也提供這種能力
現(xiàn)在的問(wèn)題是這種動(dòng)態(tài)的壓縮會(huì)導(dǎo)致CPU占用率過(guò)高,
現(xiàn)在我想到的解決辨法是通過(guò)提供靜態(tài)壓縮(就是將js預(yù)先通過(guò)gzip.exe壓縮好)
閱讀全文
摘要: 演示地址: http://cleanmine.cosoft.org.cn/validation/example/valid.html
使用validation.js的好處: 避免編寫(xiě)提示信息,避免編寫(xiě)javascript,快速
增加validate-ajax以支持ajax驗(yàn)證,
增加validate-pattern直接通過(guò)正則表達(dá)式的認(rèn)證,
修改validate-equlas以驗(yàn)證密碼與確認(rèn)密碼的問(wèn)題,
增加less-than與great-than的驗(yàn)證以支持開(kāi)始日期與結(jié)束日期相比較的問(wèn)題,
增加validation之間內(nèi)部依賴(lài)的支持,
閱讀全文
摘要:
增加min-value-number驗(yàn)證,例: 最小值為10.1 = min-value-10.1
增加max-value-number驗(yàn)證,例: 最大值為-100.1 = min-value--100.1
增加長(zhǎng)度范圍validate-length-range-minLength-maxLength驗(yàn)證,例: 最小長(zhǎng)度為1,最大長(zhǎng)度為10:validate-length-range-1-10
增加整型數(shù)字范圍validate-int-range-minValue-maxValue驗(yàn)證,例: 5至20 : validate-int-range-5-20
增加浮點(diǎn)數(shù)字范圍validate-float-range-minValue-maxValue驗(yàn)證,例: 1.1至10 : validate-float-range-1.1-10
增加min-length-number驗(yàn)證,例: 最小長(zhǎng)度為10 = min-length-10
增加max-length-number驗(yàn)證,例: 最大長(zhǎng)度為10 = max-length-1 閱讀全文
竟然將Google Toolbar放到Google主頁(yè)上 真是丑不堪言
崇尚簡(jiǎn)潔的Google被人糟踏成這樣`````````
這是我上次提的問(wèn)題,沒(méi)人解決只好自己解決了 http://www.hibernate.org.cn/viewtopic.php?t=18254&highlight=
使用Hibenate的Inteceptor,監(jiān)聽(tīng)對(duì)象變化發(fā)送郵件通知,也是Hibernate Inteceptor的一個(gè)應(yīng)用 提供對(duì)"Task","UserStory","Iteration","Project","Integration"的郵件通知,測(cè)試通過(guò)版本xplanner-0.7b4
以下是對(duì)xplanner的更改: xplanner更改: com.technoetic.xplanner.mail.EmailMessageFactory: 增加默認(rèn)構(gòu)造函數(shù) com.technoetic.xplanner.mail.EmailMessageImpl: 將發(fā)送郵件的contentType改為 text/html; gb2312 com.technoetic.xplanner.db.hibernate.XPlannerSessionFactory: 將openSession(XPlannerInteceptor)改成openSession(HibernateInterceptorImpl) 補(bǔ)丁: patch.HibernateInterceptorImpl: 監(jiān)聽(tīng)Entity的變化,對(duì)UserStory與Task等的變化進(jìn)行郵件通知 需要設(shè)置屬性: xplanner.application.url=http://testmachine:7070/xplanner :郵件通知的鏈接地址 xplanner.mail.smtp.host=mainserver.listener.com.cn 郵件服務(wù)器主機(jī)地址
xplanner項(xiàng)目主頁(yè): http://www.xplanner.org 源碼下載: http://fisheye.codehaus.org/viewrep/xplanner 補(bǔ)丁下載: http://www.hibernate.org.cn/download.php?id=1642
|