`
zhangljerry
  • 浏览: 140757 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

CompassUitls参照hibernate

阅读更多
/**
*
*/
package com.tnc.lucene.util;

import org.apache.log4j.Logger;
import org.compass.core.Compass;
import org.compass.core.CompassSession;
import org.compass.core.CompassTransaction;
import org.compass.core.CompassTransaction.TransactionIsolation;
import org.compass.core.config.CompassConfiguration;

/**
* @author zhangleming_2007-9-30
*
*/
public class CompassUtils {

final static Logger logger=Logger.getLogger(CompassUtils.class);

private static CompassConfiguration config = null;

private static Compass compass = null;

private static final ThreadLocal<CompassSession> threadSession = new ThreadLocal<CompassSession>();

private static final ThreadLocal<CompassTransaction> threadTransaction = new ThreadLocal<CompassTransaction>();

/**
* zhangleming_2007-9-30
*/
public CompassUtils() {
}
  
static{
config = new CompassConfiguration()
.configure("/com/tnc/compass/tindex/tnc.cfg.xml");
compass = config.buildCompass();
}

public static Compass getCompass() {
return compass;
}

public static void setCompass(Compass compass) {
CompassUtils.compass = compass;
}
/**
* 重建compass
* @param config
*/
public static void rebuildCompass( CompassConfiguration config){
synchronized(compass){
compass=config.buildCompass();
CompassUtils.config=config;

}
}
/**
* 打开Session
* @return
*/
public static CompassSession openSession(){
CompassSession s=(CompassSession)threadSession.get();
      if(s==null){
      logger.debug("Open new CompassSession for thread");
      s=getCompass().openSession();
      threadSession.set(s);
      }

return s;
}
/**
* 关闭CompassSesion
*
*/
public static void closeSession(){
CompassSession s=(CompassSession)threadSession.get();
threadSession.set(null);
if(s!=null){
logger.debug("Colse CompassSession of the thread");
s.close();
}
}
/**
* 事务启动
*
*/
public static void beginTransaction(){
CompassTransaction transaction=(CompassTransaction)threadTransaction.get();
if(transaction==null){
logger.debug("Open new CompassTransaction for thread");
transaction=CompassUtils.openSession().beginTransaction();
threadTransaction.set(transaction);
}
}

public static void beginTransaction(TransactionIsolation ti){
CompassTransaction transaction=(CompassTransaction)threadTransaction.get();
if(transaction==null){
logger.debug("Open new CompassTransaction for thread");
transaction=CompassUtils.openSession().beginTransaction(ti);
threadTransaction.set(transaction);
}
}
/**
* 事务提交
*
*/
public static void commitTransaction(){
CompassTransaction transaction=(CompassTransaction)threadTransaction.get();
if(transaction!=null&&!transaction.wasCommitted()&&!transaction.wasRolledBack()){
logger.debug("CompassTransaction is committing in the thread");
transaction.commit();
}
threadTransaction.set(null);
}
/**
* 回滚事务
*
*/
public static void rollbackTransaction(){
CompassTransaction transaction=(CompassTransaction)threadTransaction.get();
if(transaction!=null&&!transaction.wasCommitted()&&!transaction.wasRolledBack()){
logger.debug("try to rollback CompassTransaction in the Thread");
transaction.rollback();
}
threadTransaction.set(null);
}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics