뭔가 아주 단순한 실수를 하고 있는 것 같은데, 도무지 모르겠어요.

전자정부프레임워크로 프로젝트를 하고 있는데, 대량의 Text 파일을 라인단위로 파싱해서 DB에 집어넣는 작업을 해야합니다. 기존의 service - DAO로 이어지는 구조하에서는 잘 작동이 되긴 하는데, 화면단에서 500에러가 떨어지더군요. 아마도 트랜잭션 기간때문에 그런듯 합니다. 파일 라인을 줄이면 에러가 안나니까요.

그래서 해당 모듈을 Thread로 구성하려고 했어요. 쓰레드 잘 타고, 파일 잘 읽고, 계산로직 잘 돌아가고..다 잘됩니다. 그런데.. DAO가 SqlMapClient를 못 읽어요. 설정상의 문제는 아닙니다. DAO에서 상위 DAO를 extends하고 Runnable인터페이스를 implement 하는 로직입니다. 누가 좀 알려주세요 제발...-_ㅠ

-- ServiceImpl.java --
@Resource(name = "SoftMngUploadDAO")
private SoftMngUploadDAO uploadDAO;

public void rawDataUpload(StatsVO statsVO, MultipartHttpServletRequest request, HttpServletResponse response) throws Exception {
uploadDAO.rawDataUpload(statsVO, request, response);
}

-- UploadDAO.java --
@Repository("UploadDAO")
public class UploadDAO extends AbstractDAO implements Runnable { 
        public static StatsVO statsVO;
public static MultipartHttpServletRequest request;
public static HttpServletResponse response;

        @Override
public void run() {
Iterator fileIter = request.getFileNames(); 
                MultipartFile mFile = request.getFile((String)fileIter.next());
                fileName = mFile.getOriginalFilename();

                year = fileName.substring(3,7);
month = fileName.substring(7,9);

                .
                .
                .

                Map<String, String> oMap = new HashMap<String, String>();
oMap.put("tradeYr", year);
oMap.put("tradeMonth", month);
getSqlMapClientTemplate().delete("DAO.deleteTradeDataMon", oMap); 
                 // 요기서 에러!!!
                .
                .
                . 
         }

         public synchronized void rawDataUpload(StatsVO vo, MultipartHttpServletRequest req,                                        HttpServletResponse res) throws Exception {
statsVO = vo;
request = req;
response = res;
Thread th = new Thread(new UploadDAO());
th.start();


-- Stat_Sql.xml --
<delete id="DAO.deleteTradeDataMon" parameterClass="java.util.Map">
DELETE FROM STATS 
                         WHERE TRADE_YR = #tradeYr#
                             AND TRADE_MONTH = #tradeMonth#
</delete>

//--> AbstractDAO 에서는 DB컨넥션 정보 갖고 있구요. 아무튼..쓰레드 추가하기 전엔 잘 돌아갔는데;;
         이런 식으로 작업해본 적이 없어서, 아무래도 뭔가 간단한 걸 빼먹거나 간과하고 있는 거 같은데..- _-;; 
Posted by 좀모씨

댓글을 달아 주세요


블로그 이미지
Under Construction
좀모씨
Yesterday15
Today2
Total240,604

달력

 « |  » 2019.3
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

최근에 달린 댓글

최근에 받은 트랙백

글 보관함