Cannot communicate with the broker 오류

by 미스터투 posted Apr 16, 2013

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Window7 32bit, Linux 64bit 등
CUBRID Ver.
CUBRID 2008 R4.0 (8.4.0.0243) (32bit release build for Windows_NT) (Jun 27 2011
19:47:59)
CUBRID TOOL Ver.
버전:2008 R4.0
빌드 번호:8.4.0.0241 (2011-06-24 16:22)
응용 환경(API)
java

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------

일반 조회시에는 문제가 없는데,

Transaction 작업을 하는 경우에만 가끔씩

Cannot communicate with the broker 오류가 발생합니다.

한번 발생하면, 강제로 commit를 날리거나, 조회를 한후 시도하면 문제가 한동안 나타나지 않습니다.

그런데, 아무런 작업을 하지 않다가 일정시간 경과후 다시 Transaction 작업을 하면

Cannot communicate with the broker 오류가 발생합니다.

 

 

[Spring을 이용한 Java 비지니스 소스 파일]

public class BO1100M00Mg implements BO1100M00MgIf {
 private PlatformTransactionManager transactionManager;
 BO1100M00DaIf BO1100M00Dao;

 public List<BO1100M00Vo> ret;

 public void setBO1100M00Dao(BO1100M00DaIf BO1100M00Dao) {
  System.out.println("setBO1100M00Dao:setBO1100M00Dao~~~~");
  this.BO1100M00Dao = BO1100M00Dao;
 }

 // Transaction Manager Setting
 public void setTransactionManager(
   PlatformTransactionManager transactionManager) {
      System.out.println("PU1200M00Mg:setTransactionManager~~~~");
       this.transactionManager = transactionManager;
 }

 private TransactionDefinition getDefinition(int isolationLevel,
   boolean isReadOnly) {
      DefaultTransactionDefinition def = new DefaultTransactionDefinition(
                                                                           TransactionDefinition.PROPAGATION_REQUIRED);
      def.setTimeout(5000);
      def.setReadOnly(isReadOnly);
      def.setIsolationLevel(isolationLevel);
      return def;
 } 
 // 중간생략........

 

 public String setBookStatus(String strLib_cd, String strUser_id, String inputXml) throws Exception 
 {
     int bRtn = 0;
     String bRtnStr = "";
     String errMsg = "";
     
     BO1100M00Vo voBook = new BO1100M00Vo();
      

    //  Cannot communicate with the broker 오류가 발생하면서, 이곳에서 transaction객체를 얻지 못합니다. 
    TransactionStatus trStatus = transactionManager.getTransaction(getDefinition(
                                                                                     TransactionDefinition.ISOLATION_READ_COMMITTED, false));

     try 
    {
              //............ 중간생략

     }
     catch (Exception e) {
         transactionManager.rollback(trStatus);
         return e.getMessage();
    }

    transactionManager.commit(trStatus);

   

    return errMsg;

}



Articles