锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲AV无码一区二区三区网址 ,国产亚洲综合视频,中文字幕亚洲精品http://www.tkk7.com/terryxue/archive/2012/11/07/390930.htmlterryxueterryxueWed, 07 Nov 2012 08:32:00 GMThttp://www.tkk7.com/terryxue/archive/2012/11/07/390930.htmlhttp://www.tkk7.com/terryxue/comments/390930.htmlhttp://www.tkk7.com/terryxue/archive/2012/11/07/390930.html#Feedback0http://www.tkk7.com/terryxue/comments/commentRss/390930.htmlhttp://www.tkk7.com/terryxue/services/trackbacks/390930.html鏁版嵁搴撹繛鎺ユ硠婕忔槸浠跺彲鎬曠殑浜嬫儏錛屽彲鑳界洿鎺ュ鑷寸郴緇熷仠姝㈠搷搴旓紝鍙﹀鍥犱簨鍔$鐞嗛敊璇屽鑷存暟鎹嚭鐜頒笉涓鑷翠篃鏄歡鍙曠殑浜嬫儏錛屽湪鍚庡彴緋葷粺涓紝榪欎袱涓棶棰樼粡甯鎬細緇撲即鍑虹幇錛屾湰鏂囧皢閫氳繃妗堜緥璇﹁В浣跨敤Spring+Hibernate鏃跺彲鑳藉鑷撮棶棰樼殑鍑犵鎯呭喌錛屽笇鏈涘澶у鏈夋墍甯姪銆?br />
鏂囩珷姣旇緝闀匡紝濡傛灉浣犳槸閬囧埌浜嗛棶棰樻鎬ユ眰瑙e喅鏂規鐨勮瘽錛屽彲浠ュ厛鍙榪欎竴鏉★細媯鏌ヤ綘鐨刣ao鏄惁鏈夌洿鎺ヤ嬌鐢╯ession錛屼慨鏀逛負浣跨敤hibernateTemplate銆?/em>
濡傛灉浣犲笇鏈涙洿澶氱殑浜嗚Вsession, hibernateTemplate, transaction錛岃緇х畫銆?br />
浠ヤ笅妗堜緥鍩轟簬Struts2.3.1+Spring3.1.1+hibernate3.5.4瀹屾垚錛屾渚嬪満鏅負瀵圭郴緇熷弬鏁拌繘琛岀鐞嗭紝娑夊強濡備笅鍥涗釜綾伙細
Action PropertyAction
Service PropertyService/PropertyServiceImpl
DAO PropertyDAO錛堢戶鎵縃ibernateDaoSupport錛?/td>
Entity SysProperty

1. Action涓洿鎺ヨ皟鐢╠ao錛屾湭浣跨敤getHibernateTemplate
鍦ㄤ竴涓鏉傜殑澶氬眰鏋舵瀯緋葷粺涓紝浜嬪姟鎺у埗鍦╯ervice涓畬鎴愭槸鏇村悎鐞嗙殑錛屼笉搴斾氦鐢眝iew灞傛潵鎺у埗錛屾湰鏂囧亣瀹氫綘鏄繖涔堝仛鐨勩備竴鑸垜浠唬鐮佺殑澶勭悊欏哄簭涓篴ction->service->dao錛岀劧鑰屾諱細鏈変漢浼氭墦鐮磋繖縐嶉昏緫錛屾墦鐮村彲浠ワ紝浣嗚娉ㄦ剰濡備笅闂銆?br /> 鍋囧畾Action涓湁濡備笅浠g爜錛?br />
1 @Autowired
2 private PropertyDAO propertyDAO;
3 @Override
4 public String execute() throws Exception {
5      model = propertyDAO.get(1L);
6      return null;
7 }

 榪欓噷action鐩存帴璁塊棶浜哾ao涓殑get鏂規硶錛屽洜浜嬪姟閰嶇疆鍦╯ervice灞傦紝鍥犳榪欓噷鏄病鏈変簨鍔℃帶鍒剁殑銆?br /> 鎺ヤ笅鏉ユ垜浠湅dao涓殑get鏂規硶錛屽亣瀹氫綘鐨勫畾涔夊涓嬶細
1 public SysProperty get(Long id) {
2     return (SysProperty) getSession().get(SysProperty.class, id);
3 }

浠g爜寰堢畝鍗曪紝getSession鏄埗綾籋ibernateDaoSupport涓彁渚涚殑鏂規硶錛岃繖閲岀洿鎺ラ氳繃瀹炰綋Id get寰楀埌緇撴灉銆?br /> 鎺ヤ笅鏉ュ彂甯冧竴涓嬬郴緇燂紝璁塊棶欏甸潰錛屽ソ鍍忎竴鍒嘜K錛屼絾鏄紝鍐嶅埛鏂板嚑涓嬬湅鐪嬶紝鍙兘浣犵殑榪炴帴姹犻厤緗殑姣旇緝澶э紝瑕佸埛鏂板嬈★紝鏈鍚庝綘鍙戜細鐜頒綘鐨勭郴緇熷仠姝簡鍝嶅簲銆傛洿鐩存帴鐐癸紝璋冪敤浣犻噰鐢ㄧ殑榪炴帴姹犱腑鐨勭浉鍏矨PI媯嫻嬩笅褰撳墠榪炴帴鍗犵敤鎯呭喌錛屼綘浼氬彂鐜板埛鏂頒竴嬈★紝琚崰鐢ㄨ繛鎺ュ鍔犱竴涓紝鍙曠殑浜嬫儏鍙戠敓浜嗐?br /> 灝忕粨錛氬湪鏃犱簨鍔$鐞嗗櫒鎺у埗鐨勬儏鍐典笅錛岄氳繃getSession()鎵撳紑鐨剆ession涓嶄細琚叧闂紝榪欎釜session鎵鍗犵敤鐨勬暟鎹簱榪炴帴涔熶笉浼氳閲婃斁銆?/strong>

鎺ヤ笅鏉ワ紝鏉ョ偣鏇村彲鎬曠殑錛屽亣璁句綘鐨刟ction涓槸榪欐牱鐨勶細
1 private List<Long> ids;
2 @Override
3 public String execute() throws Exception {
4   for(Long id: ids) {
5     results.add(propertyDAO.get(id));
6   }
7   return null;
8 }
9 
榪欐椂灝濊瘯涓嬈′紶鍏ュ涓猧d榪涜璇鋒眰錛岃姹傜粨鏉熷悗媯鏌ヤ笅榪炴帴鏁幫紝浣犲彂鐜頒紶鍏ュ灝慖D錛屽氨鏈夊灝戣繛鎺ヨ鍗犵敤錛屼篃灝辨槸璇存瘡涓嬈″dao鐨刧et璋冪敤閮戒細鍗犵敤涓涓笉鍙噴鏀劇殑榪炴帴銆?br /> 灝忕粨錛氬鏋滄病鏈夐厤緗簨鍔$鐞嗗櫒涓旂洿鎺ヤ嬌鐢╣etSession寰楀埌session錛屾瘡嬈etSession閮戒細鍒涘緩涓涓柊鐨剆ession錛屾瘡涓猻ession鍗犵敤涓涓柊鐨勬暟鎹簱榪炴帴錛宻ession鏃犵嚎紼嬬駭鍒殑鍏變韓銆?/strong>

2. Action涓洿鎺ヨ皟鐢╠ao錛屼嬌鐢╣etHibernateTemplate
褰撶劧錛屼綘鍙兘娌¢亣鍒拌繃鍓嶉潰鐨勬儏鍐碉紝鍥犱負浣犱細鍦―AO涓繖鏍峰啓浠g爜錛?br />
1 public SysProperty get(Long id) {
2     return getHibernateTemplate().get(getEntityClass(), id);
3 }
閭d箞鏄惁灝變竴鍒嘜K鍛紵濡傛灉鍙槸鎯寵В鍐寵繛鎺ユ硠婕忚繖涓棶棰樼殑璇濓紝絳旀鏄痀es錛屽皾璇曞嬈¤姹傦紝媯鏌ヤ笅浣犵殑榪炴帴姹犵姸鍐碉紝娌℃湁榪炴帴娉勬紡鐨勬儏鍐靛嚭鐜般傛墍浠ョ畝鍗曡屽彲闈犵殑鍔炴硶灝辨槸涓嶅啀鐩存帴浣跨敤getSession錛岃屾槸浣跨敤getHibernateTemplate榪涜鐩稿簲鎿嶄綔錛屽綋闇瑕佷嬌鐢╯ession鏃訛紝鍙互鐢ㄤ笅闈㈢殑鏂規硶錛?br />
getHibernateTemplate().execute(new HibernateCallback<T>() {
  
public T doInHibernate(Session session) throws HibernateException {
    Query queryObject 
= session.createQuery(hql);
    //....
  }
});
But...濡傛灉浣犵殑緋葷粺鐪熺殑鍑虹幇浜嗚繛鎺ユ硠婕忥紝鍙兘浣犻渶瑕佸叧娉ㄦ洿澶氥?br /> 榪樻槸鍓嶉潰Action涓牴鎹甀D寰幆鏌ヨ鐨勬搷浣滐紝鍦ㄨ繖涓渚嬩腑錛屾瘡涓嬈ao鐨刧et鏂規硶閮藉皢閲嶅榪欐牱鐨勯昏緫錛氬垱寤簊ession錛屽垎閰峴ession涓涓繛鎺ワ紝鍏抽棴session錛岄噴鏀緎ession鍗犵敤鐨勮繛鎺ワ紝涔熷氨鏄session涓嶄細鍦ㄧ嚎紼嬬駭鍒叡浜傝鎴戜滑緇х畫錛岃繘鍏ョ涓夌鎯呭喌鏉ヨ繘涓姝ヨ鏄庛?br />
3. Service鏈悎鐞嗛厤緗簨鍔$鐞嗗櫒
緇濆ぇ閮ㄥ垎鎯呭喌涓嬫垜浠細緇檚ervice閰嶇疆浜嬪姟綆$悊鍣紝鍙兘鏄氳繃xml鎴栨槸@Transactional娉ㄨВ錛屼絾騫墮潪閰嶇疆浜嗗氨OK浜嗐傜湅涓嬮潰鐨勪緥瀛愶細
@Transactional
public
 class PropertyServiceImpl implements PropertyService {
    @Autowired
    
private PropertyDAO propertyDAO;
    
    @PostConstruct
    
public void init(){
        propertyDAO.get(
1L);
    }
    
//
}
褰撶劧錛屽亣瀹氫綘鐨凞AO榪樻槸鍐欐垚浜嗚繖鏍鳳細
public SysProperty get(Long id) {
    
return (SysProperty) getSession().get(SysProperty.class, id);
}
浣犳湡鏈涘湪service鍒濆鍖栧ソ鍚庡仛涓浜涙暟鎹簱鎿嶄綔錛屼綘涔熺粰service閰嶇疆浜嗕簨鍔$鐞嗗櫒錛屾帴涓嬫潵浣犲惎鍔ㄥ簲鐢紝鐒跺悗媯鏌ヨ繛鎺ユ睜涓殑榪炴帴鏁幫紝浣犱細鍙戠幇鏈夎繛鎺ユ湭琚噴鏀撅紒鍙兘浣犱細鏋滄柇鐨勪慨鏀筪ao涓殑鏂規硶錛?br />
public SysProperty get(Long id) {
    
return getHibernateTemplate().get(getEntityClass(), id);
}
鐒跺悗浣犱細鐞嗘墍褰撶劧鐨勮涓猴紝鍗充嬌閰嶇疆浜嗕簨鍔$鐞嗗櫒錛屼緷鐒朵笉鑳戒嬌鐢╣etSession()錛屼簨瀹炲彲鑳藉茍闈炲姝ゃ?br />鎴戜滑璋冩暣涓涓嬩唬鐮侊紝涓嶅湪init涓皟鐢╠ao涓殑get鏂規硶錛屾敼涓哄涓嬶細
public SysProperty getProperty(Long id) {
    
return propertyDAO.get(id);
}
鐒跺悗DAO緇х畫浣跨敤(SysProperty) getSession().get(SysProperty.class, id)錛岃宎ction涓殑璋冪敤淇敼涓猴細
@Autowired
private PropertyService propertyService;
@Override
public String execute() throws Exception {
    model 
= propertyService.getProperty(1L);
    
return null;
}
閲嶆柊鍙戝竷錛岃皟鐢紝媯鏌ヨ繛鎺ユ暟錛屽彂鐜版棤琚崰鐢ㄨ繛鎺ュ瓨鍦ㄣ?br />灝忕粨錛氬鏋滄紜厤緗簡浜嬪姟綆$悊鍣紝getSession鏄畨鍏ㄧ殑銆?/strong>

榪欐椂瑕佹竻妤歴pring鏄氳繃AOP鏉ュ疄鐜頒簨鍔℃帶鍒剁殑錛岃?span style="color: #000000; ">@PostConstruct鏂規硶涓嶄細鍙桝OP鎺у埗錛屽洜姝や笂闈㈢殑init鏂規硶絳変簬鏃犱簨鍔$鐞嗗櫒銆?br />閭d箞鍐嶅洖澶存潵璇達紝鏄惁鍙dao涓嬌鐢╣etHibernateTemplate灝變笉浼氭湁闂鍛紵
鍋囧畾service涓殑@PostConstruct鏂規硶濡備笅錛?br />
@PostConstruct
public void init(){
    SysProperty p 
= new SysProperty();
    p.setName(
"test_property_1");
    propertyDAO.save(p);
}
寮鴻皟涓涓嬶紝鍓嶉潰宸茬粡鎻愬埌榪欎釜鏂規硶涓嶅彈spring鐨勪簨鍔$鐞嗗櫒鎺у埗銆?br />鍋囧畾DAO涓殑save鏂規硶濡備笅錛?br />
public void save(SysProperty o){
    getSession().save(o);
}
鍚姩涓涓嬪簲鐢紝媯鏌ヤ竴涓嬭繛鎺ユ暟錛屽啀媯鏌ヤ竴涓嬫暟鎹槸鍚︽湁瀛樺偍鍒版暟鎹簱涓傚洜涓烘垜浠洿鎺ヤ嬌鐢ㄤ簡getSession錛屽洜姝よ繛鎺ヤ笉浼氶噴鏀撅紝榪欑偣鍓嶉潰宸茬粡鎻愬埌錛屼絾鍚屾椂鎴戜滑榪樺皢鍙戠幇鏁版嵁娌℃湁琚瓨鍌紝褰撶劧榪欎釜涔熷ソ鐞嗚В錛屽洜涓轟笂闈㈠凡緇忔彁鍒拌繖涓柟娉曟湭閰嶇疆浜嬪姟綆$悊鍣ㄣ?br />灝忕粨錛氶氳繃getSession().save()淇濆瓨鏁版嵁鏃訛紝浜嬪姟涓嶄細鑷姩鎻愪氦銆?/strong>

鐜板湪鍐嶄慨鏀逛笅DAO涓殑save鏂規硶錛?br />
public void save(SysProperty o){
    getHibernateTemplate().save(o);
}
鍚姩涓涓嬪簲鐢紝媯鏌ヤ竴涓嬭繛鎺ユ暟錛屽啀媯鏌ヤ竴涓嬫暟鎹槸鍚︽湁瀛樺偍鍒版暟鎹簱涓傚洜涓烘垜浠嬌鐢╤ibernateTemplate錛屽洜姝よ繛鎺ユ湁閲婃斁錛岃繖鐐瑰墠闈㈠凡緇忔彁鍒幫紝浣嗗悓鏃舵垜浠繕鍙戠幇鏁版嵁涔熷凡瀛樺偍鍒版暟鎹簱涓紝璇存槑hibernateTemplate浼氳嚜鍔ㄦ彁浜や簨鍔°?br />灝忕粨錛氬鏋滄湭閰嶇疆浜嬪姟綆$悊鍣紝閫氳繃hibernateTemplate鎿嶄綔鏃訛紝浼氳嚜鍔ㄥ垱寤哄茍鎻愪氦浜嬪姟銆?/strong>

鎵浠ュ鏋滀綘瑙夊緱浣跨敤hibernateTemplate灝監K浜嗭紝閭e氨瑕佸皬蹇冧笅闈㈢殑浠g爜浜嗭細
@PostConstruct
public void init(){
  
//1. 浠庝綘鐨勮處鍙稟涓墸闄や竴涓囧潡
  
//2. 榪欓噷鐨勪唬鐮佹姏鍑轟簡寮傚父
  
//3. 灝嗕綘鐨勮處鍙稡涓鍔犱竴涓囧潡 
}
濡傛灉涓婇潰鐨勭2姝ュ嚭鐜頒簡寮傚父錛岄偅涔堝洜涓?鐨勪簨鍔″凡緇忔彁浜わ紝鑰?鍗存病鏈夋墽琛岋紝鏈緇堝鑷翠簡鏁版嵁鐨勪笉涓鑷達紝鍚庢灉鍜岃繛鎺ユ硠婕忎竴鏍蜂弗閲嶏紒
闄や簡@PostConstruct錛岃繕鏈夊叾瀹冨師鍥犱細瀵艱嚧@Transactional鏃犳晥錛屽亣瀹氭垜浠殑service閰嶇疆浜嗕簨鍔$鐞嗗櫒錛屼絾瀛樺湪濡備笅浠g爜錛?br />
pubic void someServiceMethod(){
  
new Thread(){
    
public void run(){
        doSomethingLater();
    }
  }
}

public void doSomethingLater(){
  
//鍋氫竴緋誨垪鏁版嵁搴撴搷浣?/span>
}
閭d箞浣犲彲浠ュ幓楠岃瘉涓媎oSomethingLater鏄惁鍙椾簨鍔$鐞嗗櫒鎺у埗錛屼簨瀹炰笂騫朵笉浼氾紝鎵浠ヤ綘闇瑕佺悊瑙pring AOP鐨勬満鍒訛紝鍚﹀垯涓涓皬鍧戜細閰挎垚鐏鵑毦銆?br />榪欓噷榪樻湁涓縐嶆儏鍐碉紝浣犱笉鏄湪綾諱笂闈㈤厤緗?span style="color: #0000ff;">@Transactional錛岃屾槸鍦ㄦ柟娉曚笂闈㈤厤緗紝鍋囧畾瀛樺湪濡備笅鐨勪唬鐮侊細
//璇ユ柟娉曚笉闇瑕佷簨鍔℃帶鍒?/span>
public void method1(){
    method2();
}

//涓嬮潰鐨勬柟娉曢渶瑕佷簨鍔℃帶鍒?/span>
@Transactional
public void method2(){
    
//do something
}
鍥犱負浣犻渶瑕佺粰涓嶅悓鐨勬柟娉曢厤緗笉鍚岀殑浜嬪姟鏈哄埗錛屽洜姝や綘娌℃湁鍦ㄧ被涓婇潰榪涜閰嶇疆錛岀劧鍚庝綘鍦ㄥ鎴風榪涜浜嗗涓嬭皟鐢細service.method1(); method2涓殑鏂規硶浼氬彈浜嬪姟綆$悊鍚楋紵鍙偛鐨勬槸騫朵笉浼氥?br />涓婇潰璁插埌鐨勭嚎紼嬭皟鐢ㄥ拰鍐呴儴鏂規硶璋冪敤鍙互榪欐牱鏉ュ鐞嗭細
@Autowired
private ApplicationContext context;  
public void method1(){
    PropertyService service 
= context.getBean(PropertyService.class);
    service.method2();
}
灝忕粨錛氭敞鎰弒pring鐨凙OP鏈哄埗

4. Service鍚堢悊閰嶇疆浜嬪姟綆$悊鍣?/div>鏈鍚庤ˉ鍏呬竴涓嬶紝濡傛灉浜嬪姟綆$悊鍣ㄩ厤緗紜殑璇濅細鍙戠敓浠涔堛傝繖鏃朵笉綆′綘鏄敤getSession榪樻槸getHibernateTemplate錛岀粨鏋滈兘鏄竴鏍鳳紝session灝嗗湪thread綰у埆鍏變韓錛宻ession鍙湁涓涓?br />
鎬葷粨錛氶毦寰楄繖鍛ㄥ紑濮嬪伐浣滃彉寰楁竻闂詫紝涓婄彮鏃墮棿榪樿兘鍐欏啓鍗氬錛屾兂鎯沖墠孌墊棩瀛愮湡鏄嚜宸變綍鑻︿負闅捐嚜宸便傚洖鍒拌瘽棰橈紝浣跨敤getSession娌′粈涔堝ぇ閿欙紝鍥犱負浣犳湰搴旀紜厤緗簨鍔$鐞嗗櫒銆備嬌鐢╤ibernateTemplate鑳借В鍐蟲墍鏈夎繛鎺ユ硠婕忕殑闂錛屼絾瑕佸皬蹇冧粬鍙兘闅愯棌鐨勪簨鍔¢棶棰樸傚彟澶栧氨鏄痵pring涓唴閮ㄦ柟娉曡皟鐢ㄦ椂AOP鐨勯棶棰橈紝鍒涘緩鏂扮嚎紼嬫椂鐨勪簨鍔¢棶棰樸傛渶鍚庡笇鏈涜繖綃囨湁鐐圭粫鐨勬枃绔犺兘緇欎綘甯︽潵甯姪銆?/div>

terryxue 2012-11-07 16:32 鍙戣〃璇勮
]]>eclipse+JUnit嫻嬭瘯Seamhttp://www.tkk7.com/terryxue/archive/2011/04/29/349283.htmlterryxueterryxueFri, 29 Apr 2011 09:04:00 GMThttp://www.tkk7.com/terryxue/archive/2011/04/29/349283.htmlhttp://www.tkk7.com/terryxue/comments/349283.htmlhttp://www.tkk7.com/terryxue/archive/2011/04/29/349283.html#Feedback0http://www.tkk7.com/terryxue/comments/commentRss/349283.htmlhttp://www.tkk7.com/terryxue/services/trackbacks/349283.html 欏圭洰鍩轟簬Maven鎼緩錛圡aven紜疄鏄釜濂戒笢瑗匡級銆備嬌鐢ㄧ殑鎶鏈湁jsf + richfaces3.3 + seam2.2 + hibernate3.3 + jasperreport3.7銆傛劅瑙塻eam寰堝己澶э紝浣嗘病鏈塻pring鏂逛究錛岃嚦灝戝湪嫻嬭瘯鏂歸潰瑕佽姳璐逛竴緲誨姛澶?br /> 鎴戞病鏈夊皢嫻嬭瘯浠g爜鏀懼埌欏圭洰鐨勬祴璇曠洰褰曚笅錛岃屾槸鍙﹁搗浜嗕竴涓伐紼嬶紝涓撶敤浜庢祴璇曪紝浠ヤ笅灝卞畬鏁寸殑浠嬬粛涓涓嬭繖涓繃紼嬨傛洿澶氭槸姝ラ鎻忚堪浜嗭紝涓轟粈涔堣榪欐牱鍋氬氨涓嶅瑙i噴浜嗭紝涔熸病鑳藉姏瑙i噴娓呮銆?br /> 1. 寤虹珛嫻嬭瘯宸ョ▼錛歴eamtest銆傛渶綆鍗曠殑maven宸ョ▼鍗沖彲銆傝繖閲屼笉浠嬬粛濡備綍鍦╡clipse涓泦鎴恗aven錛岃鑰呭彲浠ユ悳鎼渕2eclipse錛岃繖鏄竴涓猠clipse鎻掍歡銆?br />
2. 閰嶇疆seamtest鐨刾om.xml錛屽鍔犲涓嬩笁涓緷璧栵細
<dependency>
    
<groupId>org.jboss.seam.embedded</groupId>
    
<artifactId>hibernate-all</artifactId>
    
<version>beta3.SP10</version>
</dependency>
<dependency>
  
<groupId>org.jboss.seam.embedded</groupId>
  
<artifactId>jboss-embedded-all</artifactId>
  
<version>beta3.SP10</version>
</dependency>
<dependency>   
  <
groupId>org.jboss.seam.embedded</groupId>
  
<artifactId>thirdparty-all</artifactId>
  
<version>beta3.SP10</version>
</dependency>

3. 榪欎笁涓緷璧栭渶瑕佷粠jboss浠撳簱涓嬭澆錛屽彲浠ヨ闂繖涓珯鐐癸細https://repository.jboss.org/nexus/index.html錛岀劧鍚庢牴鎹笂闈㈡彁渚涚殑鏋勪歡Id榪涜鎼滅儲錛屾垨鑰呯洿鎺ュ皢浠撳簱鎸囧悜錛歨ttps://repository.jboss.org/nexus/content/repositories/releases/銆傚浣曞湪settings.xml鏂囦歡涓厤緗粨搴撳湴鍧涓嶉毦錛実oogle涓嬪惂銆?br />
4. 灝嗛渶瑕佹祴璇曠殑欏圭洰鍙妀unit鍔犲埌maven渚濊禆涓紝鎴戠殑閰嶇疆涓猴細
<dependency>
  
<groupId>cn.terry</groupId>
  
<artifactId>target-web</artifactId>
  
<version>0.0.1-SNAPSHOT</version>
  
<type>war</type>
</dependency>
<dependency>
  
<groupId>junit</groupId>
  
<artifactId>junit</artifactId>
  
<version>4.8.2</version>
  
<type>jar</type>
</dependency>
涓婇潰鐨?#8220;target-web”灝辨槸鎴戣嫻嬭瘯鐨勫熀浜巑aven鏋勫緩鐨勯」鐩?br />
5. 淇濆瓨閰嶇疆鍚庣瓑寰卐clipse涓嬭澆瀹屾墍鏈変緷璧栫殑jar鍖呫?br />
6. 灝嗙洰鏍囧伐紼嬪姞鍒版祴璇曞伐紼嬬殑渚濊禆宸ョ▼涓傚弬鑰冧笅鍥撅細


7. 涓嬭澆Embedded JBoss錛屼笅杞藉湴鍧錛?a target="_blank" >http://sourceforge.net/projects/jboss/files/Embedded%20JBoss/Embedded%20JBoss%20Beta%203/銆?br />
8. 瑙e帇緙╀笅杞界殑鍘嬬緝鍚庯紝鎵懼埌鏂囦歡澶癸細bootstrap錛岄櫎榪欎釜鏂囦歡澶瑰錛屽叾瀹冧笅杞芥枃浠跺湪鎴戜滑榪欎釜妗堜緥閲岄潰閮戒笉闇瑕佺敤鍒般?br />
9. 灝哹ootstrap鏂囦歡澶歸摼鎺ュ埌嫻嬭瘯宸ョ▼鐨剆ource涓嬮潰錛屽弬鑰冨涓嬫搷浣滅晫闈細


10. 灝唗arget-web鐨剋ebapp鐩綍閾炬帴鍒版祴璇曞伐紼嬬殑source涓嬮潰錛岃繖涓姝ユ瘮杈冨鎬紝涓嶅瑙i噴浜嗭紝鐓х潃鍋氬氨琛屼簡銆?br />
11. 閰嶇疆DataSource銆傚湪bootstrap/deploy涓嬮潰鏈夋枃浠秇sqldb-ds.xml錛屾敞鎰忔枃浠跺悕鐨勭粨灝鵑儴鍒嗘槸“-ds.xml”錛屼綘鍙互鎸夎繖涓懡鍚嶈鍒欏緩绔嬭嚜宸遍渶瑕佺殑datasource鏂囦歡錛屽oracle-ds.xml銆俤atasource鏂囦歡鍏蜂綋鎬庝箞鍐欙紝灝辮鍙傝僪sqldb-ds.xml浜嗭紝榪欎釜榪樻槸姣旇緝瀹規槗鐨勩傚鏋滀綘鐨勯」鐩笉闇瑕乨ataSource鐨勮瘽灝辮煩榪囪繖涓姝ュ惂銆?br />
12. 鎺ヤ笅鏉ュ紑濮嬪啓嫻嬭瘯浠g爜浜嗭紝濡備笅浜屼釜綾葷洿鎺ュ鍒惰繃鍘葷敤錛?br /> MySeamTestBase: 鍏跺畠嫻嬭瘯綾誨彲浠ョ洿鎺ョ戶鎵胯綾?br />
package cn.terry.test;

import java.util.Properties;

import org.jboss.seam.mock.AbstractSeamTest;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class MySeamTestBase extends AbstractSeamTest {
    
// static helper instance to call non static methods in
    
// a static method
    private static MySeamTestBase seamTest = new MySeamTestBase();
    
private static boolean batch = false;

    
/*
     * JUnit test life cycle methods.
     
*/

    @BeforeClass
    
public static void setUpBeforeClass() throws Exception {
        
if (!batch) {
            seamTest.startContainer();
        }
    }

    @AfterClass
    
public static void tearDownAfterClass() throws Exception {
        
if (!batch)
            seamTest.stopContainer();
    }

    @Before
    
public void setUp() throws Exception {
        setupClass();
        begin();
    }

    @After
    
public void tearDown() throws Exception {
        end();
        cleanupClass();
    }

    
/*
     * Helper methods
     
*/

    
// starts the JBoss embedded ejb container
    public void startContainer() throws Exception {
        
super.startSeam();        
    }

    
// stops the JBoss embedded ejb container
    public void stopContainer() throws Exception {
        
super.stopSeam();
    }
    
    
public boolean isBatch() {
        
return batch;
    }

    
// used by a JUnit.Suite runner to set the batch flag
    public void setBatch(boolean fBatch) {
        batch 
= fBatch;
    }
}


MySuiteRunner, 鎵歸噺鎵ц澶氫釜嫻嬭瘯綾伙細
package cn.terry.test;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;

import cn.terry.test.testcase.HelloTest;

 
@Suite.SuiteClasses({ 
    HelloTest.
class
})
@RunWith(Suite.
class)
public class MySuiteRunner {
    
private static MySeamTestBase seamTest = new MySeamTestBase();
 
    @BeforeClass
    
public static  void setUpBeforeClass() throws Exception {    
        
// set the flag to signal batch mode
        seamTest.setBatch(true);
        seamTest.startContainer();
    }
 
    @AfterClass
    
public static void tearDownAfterClass() throws Exception {        
        seamTest.stopContainer();
        seamTest.setBatch(
false);
    }
}

涓嬮潰鐨凥elloTest鏄竴涓叿浣撶殑嫻嬭瘯綾伙紝妯′豢鐫鍐欏氨琛屼簡錛?br />
package cn.terry.test.testcase;

import org.junit.Test;

import cn.terry.test.MySeamTestBase;

public class HelloTest extends MySeamTestBase {
    @Test
    
public void testRollback() throws Exception{
        
new FacesRequest() {
            
protected void invokeApplication() throws Exception {
                Object seamInstance 
= getInstance("instanceName");
            }
        }.run();
    }

}
FacesRequest閲岄潰榪樻湁璁稿鏂規硶鍙互閲嶅啓錛岃嚜宸辯炕緲繪墜鍐屽惂銆?br />

13. 鍒版墽琛岃繖涓姝ヤ簡錛屼篃涓嶅鏄擄紝濡傛灉鏄痡dk6鐨勮瘽錛岃鍦ㄨ繍琛屾椂鍔犱笂榪愯鍙傛暟錛?Dsun.lang.ClassLoader.allowArraySyntax=true銆俥clipse涓浣曢厤緗鍙傝冨涓嬬晫闈細

鐐瑰嚮run錛屼韓鍙楁垚鏋滃惂銆?br />
14錛屽彲鑳芥病鏈夎繖涔堝垢榪愶紝鏁版嵁搴撹繛鎺ユ睜鍙兘娌℃湁鍒濆鍖栥傚湪鎴戜滑鐨勯」鐩腑錛岃繛鎺ユ睜鏄湪涓涓猻ervlet listener涓垵濮嬪寲鐨勶紝閫氳繃濡備笂鏂瑰紡榪愯灝辨病娉曡嚜鍔ㄥ垵濮嬪寲錛屽鑷存祴璇曟椂鍑虹幇鏁版嵁搴撹繛鎺ュけ璐ョ殑鎯呭喌錛岃繖鏃跺欓渶瑕佽嚜宸卞啓浜涗唬鐮佸幓鍒濆鍖栬繛鎺ヤ簡銆?br />
鎬葷粨錛氭暣涓繃紼嬪彲鑳戒細鍑虹幇娌″畬娌′簡鐨勫紓甯革紝鍒斁寮冿紝澶歡oogle錛屾諱細鎴愬姛鐨勩?br />

terryxue 2011-04-29 17:04 鍙戣〃璇勮
]]>
glassfishv2涓璭jb鐨勫畾涔変笌璋冪敤http://www.tkk7.com/terryxue/archive/2010/03/06/314695.htmlterryxueterryxueSat, 06 Mar 2010 13:08:00 GMThttp://www.tkk7.com/terryxue/archive/2010/03/06/314695.htmlhttp://www.tkk7.com/terryxue/comments/314695.htmlhttp://www.tkk7.com/terryxue/archive/2010/03/06/314695.html#Feedback2http://www.tkk7.com/terryxue/comments/commentRss/314695.htmlhttp://www.tkk7.com/terryxue/services/trackbacks/314695.html闃呰鍏ㄦ枃

terryxue 2010-03-06 21:08 鍙戣〃璇勮
]]>
js鍘嬬緝宸ュ叿http://www.tkk7.com/terryxue/archive/2009/12/18/306486.htmlterryxueterryxueFri, 18 Dec 2009 02:19:00 GMThttp://www.tkk7.com/terryxue/archive/2009/12/18/306486.htmlhttp://www.tkk7.com/terryxue/comments/306486.htmlhttp://www.tkk7.com/terryxue/archive/2009/12/18/306486.html#Feedback9http://www.tkk7.com/terryxue/comments/commentRss/306486.htmlhttp://www.tkk7.com/terryxue/services/trackbacks/306486.html闃呰鍏ㄦ枃

terryxue 2009-12-18 10:19 鍙戣〃璇勮
]]>
嫻忚緗戦〉鏃跺浣曟崟鑾風綉欏靛唴琛ㄥ崟鎻愪氦緇欐湇鍔″櫒鐨勫唴瀹?/title><link>http://www.tkk7.com/terryxue/archive/2009/12/17/306396.html</link><dc:creator>terryxue</dc:creator><author>terryxue</author><pubDate>Thu, 17 Dec 2009 09:40:00 GMT</pubDate><guid>http://www.tkk7.com/terryxue/archive/2009/12/17/306396.html</guid><wfw:comment>http://www.tkk7.com/terryxue/comments/306396.html</wfw:comment><comments>http://www.tkk7.com/terryxue/archive/2009/12/17/306396.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/terryxue/comments/commentRss/306396.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/terryxue/services/trackbacks/306396.html</trackback:ping><description><![CDATA[     鎽樿: 鍒╃敤js緇撳悎firebug寰楀埌姝e湪嫻忚鐨勭綉欏典腑鐨勮〃鍗曟彁浜ゆ暟鎹椂瀹為檯灝嗗悜鏈嶅姟鍣ㄥ彂閫佽繃鍘葷殑鏁版嵁銆傛垜浠埄鐢ㄦ姄鍙栧埌鐨勮繖浜涙暟鎹紝鍙互浼犺姹傜粰鏈嶅姟鍣ㄦ垨杈懼埌鍏跺畠鐩殑銆?nbsp; <a href='http://www.tkk7.com/terryxue/archive/2009/12/17/306396.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/terryxue/aggbug/306396.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/terryxue/" target="_blank">terryxue</a> 2009-12-17 17:40 <a href="http://www.tkk7.com/terryxue/archive/2009/12/17/306396.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>閫氳繃java鎶撳彇浠諱綍鎸囧畾緗戦〉鐨勬暟鎹?/title><link>http://www.tkk7.com/terryxue/archive/2009/12/17/306329.html</link><dc:creator>terryxue</dc:creator><author>terryxue</author><pubDate>Thu, 17 Dec 2009 09:31:00 GMT</pubDate><guid>http://www.tkk7.com/terryxue/archive/2009/12/17/306329.html</guid><wfw:comment>http://www.tkk7.com/terryxue/comments/306329.html</wfw:comment><comments>http://www.tkk7.com/terryxue/archive/2009/12/17/306329.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.tkk7.com/terryxue/comments/commentRss/306329.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/terryxue/services/trackbacks/306329.html</trackback:ping><description><![CDATA[     鎽樿: 浣跨敤java鎶撳彇緗戦〉鍐呭銆備綘鍙互鍒╃敤榪欑鎶鏈疄鐜扮綉绔欓潤鎬佸寲錛屽嵆鐢熸垚html欏甸潰錛屼綘鍙互浼犺〃鍗曟彁浜わ紝榪樺彲浠ユ姄鍙栦簰鑱旂綉涓婁換浣曠綉欏靛唴鐨勯儴鍒嗘暟鎹?nbsp; <a href='http://www.tkk7.com/terryxue/archive/2009/12/17/306329.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/terryxue/aggbug/306329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/terryxue/" target="_blank">terryxue</a> 2009-12-17 17:31 <a href="http://www.tkk7.com/terryxue/archive/2009/12/17/306329.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍒╃敤java鏋勫緩http鏈嶅姟鍣?/title><link>http://www.tkk7.com/terryxue/archive/2009/12/17/306328.html</link><dc:creator>terryxue</dc:creator><author>terryxue</author><pubDate>Thu, 17 Dec 2009 09:26:00 GMT</pubDate><guid>http://www.tkk7.com/terryxue/archive/2009/12/17/306328.html</guid><wfw:comment>http://www.tkk7.com/terryxue/comments/306328.html</wfw:comment><comments>http://www.tkk7.com/terryxue/archive/2009/12/17/306328.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.tkk7.com/terryxue/comments/commentRss/306328.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/terryxue/services/trackbacks/306328.html</trackback:ping><description><![CDATA[     鎽樿: web鏈嶅姟鍣ㄥぇ瀹墮兘浼氱敤錛屽彲鏄畠鐨勫疄鐜板師鐞嗘槸鍒板簳濡備綍鍛紝鍏跺疄鍙璇諱竴涓媓ttp鍗忚錛屽ぇ瀹跺熀鏈篃鑳藉紑鍙戝嚭涓涓畝鍗曠殑web鏈嶅姟鍣ㄥ嚭鏉ヤ簡銆傛湰鏂囧皢浠嬬粛http鍗忚錛屽茍甯﹀ぇ瀹朵竴鍧楁潵寮鍙戜竴涓畝鍗曠殑鏈嶅姟鍣ㄣ?nbsp; <a href='http://www.tkk7.com/terryxue/archive/2009/12/17/306328.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/terryxue/aggbug/306328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/terryxue/" target="_blank">terryxue</a> 2009-12-17 17:26 <a href="http://www.tkk7.com/terryxue/archive/2009/12/17/306328.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>jsp涔辯爜闂鍓栨瀽涓庣粓鏋佽В鍐蟲柟妗?/title><link>http://www.tkk7.com/terryxue/archive/2009/12/17/306326.html</link><dc:creator>terryxue</dc:creator><author>terryxue</author><pubDate>Thu, 17 Dec 2009 09:20:00 GMT</pubDate><guid>http://www.tkk7.com/terryxue/archive/2009/12/17/306326.html</guid><wfw:comment>http://www.tkk7.com/terryxue/comments/306326.html</wfw:comment><comments>http://www.tkk7.com/terryxue/archive/2009/12/17/306326.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/terryxue/comments/commentRss/306326.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/terryxue/services/trackbacks/306326.html</trackback:ping><description><![CDATA[     鎽樿: 鏈嶅姟鍣ㄨ繑鍥炰貢鐮侀〉闈紝璇鋒眰鐨勬暟鎹彂閫佸埌鏈嶅姟鍣ㄥ悗鍙栧嚭鏉ユ槸涔辯爜錛屼互涓婁袱涓棶棰樻槸web寮鍙戜漢鍛樼粡甯擱亣鍒扮殑闂錛岃В鍐寵繖綾婚棶棰橀渶瑕佺悊瑙d貢鐮侀棶棰樼殑鏍規簮鎵鍦ㄣ?nbsp; <a href='http://www.tkk7.com/terryxue/archive/2009/12/17/306326.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/terryxue/aggbug/306326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/terryxue/" target="_blank">terryxue</a> 2009-12-17 17:20 <a href="http://www.tkk7.com/terryxue/archive/2009/12/17/306326.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍔熻兘寮哄ぇ浣跨敤鏂逛究鐣岄潰緹庤鐨刯s鏃ュ巻http://www.tkk7.com/terryxue/archive/2009/12/17/306323.htmlterryxueterryxueThu, 17 Dec 2009 09:16:00 GMThttp://www.tkk7.com/terryxue/archive/2009/12/17/306323.htmlhttp://www.tkk7.com/terryxue/comments/306323.htmlhttp://www.tkk7.com/terryxue/archive/2009/12/17/306323.html#Feedback4http://www.tkk7.com/terryxue/comments/commentRss/306323.htmlhttp://www.tkk7.com/terryxue/services/trackbacks/306323.html闃呰鍏ㄦ枃

terryxue 2009-12-17 17:16 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 久久精品国产亚洲AV高清热| 亚洲人色婷婷成人网站在线观看| 亚洲国产综合精品| 中文字幕在线免费观看| 亚洲综合国产精品| 在线观看免费中文视频| 亚洲欧洲精品在线| 性xxxxx免费视频播放| 亚洲91精品麻豆国产系列在线| 国产在线观看麻豆91精品免费| 亚洲中字慕日产2020| 成人免费a级毛片无码网站入口 | 久久久久亚洲av无码专区蜜芽 | 91精品免费观看| 亚洲最大免费视频网| 天天天欲色欲色WWW免费| 色噜噜噜噜亚洲第一| 亚洲一区二区精品视频| 国产精品99精品久久免费| 亚洲嫩草影院在线观看| 日韩特黄特色大片免费视频| 人成电影网在线观看免费| 亚洲精品乱码久久久久66| 中文字幕无码播放免费| 白白色免费在线视频| 亚洲韩国精品无码一区二区三区 | 亚洲国产精品一区二区九九| 亚洲五月午夜免费在线视频| 亚洲国产精品久久久久婷婷软件 | 一级做a毛片免费视频| 色播亚洲视频在线观看| 日韩免费视频一区| 9i9精品国产免费久久| 亚洲综合精品一二三区在线| 成年女人永久免费观看片| a级毛片免费观看视频| 亚洲xxxx视频| 亚洲女同成av人片在线观看| 天天干在线免费视频| 免费成人在线视频观看| 亚洲国产区男人本色|