3년차개발자입니다!
43
2021-01-08 19:14:55
2
177

[질문]JAVA 하드웨어 연결 및 쓰레드


안녕하세요 매번 눈팅만하다가 


질문드리고 싶어서 새로 가입하고 로그인했습니다.


저는 MES 관련해서 개발하는 개발자입니다.


이번에 CAS사에 인디케이터(모델명 CI-501A)에 입력된 값을 저희 데이터베이스에 쏘아 주어야하는데


자꾸 오류가 생겨서 질문드립니다.


현재 개발하는 환경은 전자정부 프레임3.7 , Ext.js, Ibatis, Oracle를 사용하고있습니다.


구글링 뒤져보며 RSTX라는 라이브러리를 이용해서 인디케이터를 JAVA와 연동하는데는 성공했습니다.

값도 성공적으로 넘어오는것도 확인했습니다.


그런데 이제 DB에 넣어주는 작업을 할때 DAO객체가 NULL포인트 에러가 떠서 질문남깁니다.


혹시 어떤게 문제인지 알수있을까요...



0
  • 답변 2

  • 3년차개발자입니다!
    43
    2021-01-08 19:17:18

    제가 글을 처음써봐서 이상하게 올라갔는데... 죄송합니다...


    첫번쨰 사진이 해당 시리얼 포트를 연결하는 부분+ 이벤트 리스너 등록하는 화면이고

    두번쨰 사진이 해당 이벤트에서 실행되는 코드입니다.

    세번째 사진이 이제 디비에 넣으려고 DAO객체에 접근시 발생하는 에러입니다.


    또 본문에 쓰레드 글이 안들어갔는데..


    저렇게 사용하는게 맞는지... 


    제가 혹시 놓친부분이 있다면 관련링크나 답변 달아주시면 감사합니다.

  • yeori
    2k
    2021-01-08 22:07:01

    이렇게 쪼개서 코드 파편을 올리면 어느 스레드에서 dao에 접근하는지 모르기때문에 새로운 스레드가 갱신된 변수를 바라보지 못하는건지, 애초에 dao 변수에 @AutoWired 가 없어서 원래 null인건지 모릅니다.

    아래와 같이 @PostConstruct 어노테이션으로 dao가 올바로 바인딩 되어있는지부터 확인을 해봐야 합니다.

    public class XXX {
     @AutoWrited
      XXXDao dao;
    
      @PostConstruct
      public void afterInit() {
        sysout(dao == null);
      }
    
    }
    
    

    @PostConstruct 를 붙인 메소드는 스프링프레임워크 초기화 작업이 끝난후 사용자가 필요한 초기화 코드를 넣을때 사용하는데 설정이 제대로 되었는지 확인할때도 가끔 사용합니다.

    위처럼 dao가 null인지부터 확인을 해봐야 할거 같습니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.