이 카테고리에는 더 이상 글이 올라오지 않습니다.


별도의 개발 블로그를 열어 개발에 관련된 이야기는 블로그를 분리하였습니다.

만약 더 많은 개발 이야기가 보고 싶으시다면 아래 링크로 이동해 주세요.


link : Digital Blue Eye's dev-ops

#######################################################################################################



이번 고객사에서 데이터를 SAP에서 jco3 연동으로 끌고 오는 과제가 있었습니다.


로컬 테스트 완료 후 실서버에서 실행 시 


no sapjco3 in java.libaray.path


위와 같은 exception이 발생했습니다.




우선 로컬에서 jco3를 연동하기 위해서 아래와 같은 작업이 수행되었습니다.


     - sapjco3.jar 라이브러리 연동

     - 윈도우 설치 위치/system32에 sapjco3.dll 설치


실서버에서 다른 점은 sapjco3.dll이 없다는 것이죠. 이는 미리 실서버에 sapjco3.so라는 형태로 설치 및 설정이 되어 있는 상태입니다.


위의 exception이 발생되는 이유는 java vm이 올라오는 상태에서 sapjco3.so 라이브러리를 읽어들이지 못하는, 혹은 정상적인 sapjco3.so 라이브러리가 아닌 경우입니다.




제 경우에는 application을 실행하고자 하는 사용자에게 해당 설정이 되지 않은 것이 문제였습니다.


하지만 실서버의 사용자에게 해당 설정을 주는 것은 월권이라서, 실행 스크립트에서 설정하는 것으로 하였습니다.


초기 실행 스크립트에서의 명령은 아래와 같습니다.


$JAVA_PATH/bin/java -Xms256m -Xmx1024m com.prompt.srm2.batch.BatchName $1 $2


위의 실행 스크립트는 아래와 같이 변경되면 됩니다.


$JAVA_PATH/bin/java -Djava.library.path=sapjco3.so설치위치/sapjco3.so -Xms256m -Xmx1024m com.prompt.srm2.batch.BatchName $1 $2



이렇게 해서 실행이 되었을까요??


그랬다면 삽질기가 아니죠... ㅜㅜ


역시나 마찬가지의 exception이 떨어집니다.




java.library.path를 지정하는 방법은 두가지 정도로 나뉠 수가 있습니다. 위와 같이 실행 시 지정해주는 방법과 shell에 등록하는 방법입니다.


shell에서 지정할 때는 LD_LIBRARY_PATH 를 지정하여 사용할 수 있습니다.


set LD_LIBRARY_PATH=$LD_LIBRARY_PATH:sapjco3설치위치 (솔라리스 계열)


set SHLIB_PATH=$SHLIB_PATH:sapjco3설치위치 (HP-UX 계열)


위와 같이 스크립트가 실행될 때 path를 지정했습니다.


역시나 exception이 떨어집니다.... oTL




이걸로 이미 삽질은 4시간을 넘어가고.....


그러다 간과한 사실 한가지가 번뜩 생각이 났습니다.


서버니까 64bit 아닌가??


OS 정보를 다시 확인해 보니.... 64bit 이군요.... 아후......


실행 스크립트를 다시 수정합니다.



$JAVA_PATH/bin/java -d64 -Djava.library.path=sapjco3.so설치위치/sapjco3.so -Xms256m -Xmx1024m com.prompt.srm2.batch.BatchName $1 $2



 넵. 64bit로 실행되도록 옵션을 줍니다.


이제 정상으로 실행됩니다... oTL




인터넷 상에도 여러가지 방법으로 path를 지정해 주었음에도 실행에 실패하신 분들이 많으신 것 같은데 관련 내용은 정리되어 있는 것이 없네요.


제 삽질을 참고로 다른 많은 개발자 분들이 삽질없이 시간을 벌으셨길 기대하면서 삽질기를 마무리 합니다.... ㅜㅜ

  1. 강진일 2016.02.04 14:15 신고

    우왕 정말 감사합니다
    덕분에 이틀동안 헤매던거 해결 했습니다ㅠㅠ

    • Favicon of http://blog.sz21c.com BlogIcon 제피르 2016.02.11 21:24 신고

      오래전 포스팅인데 도움이 되셨다니 다행입니다... ^^

  2. 조영준 2017.02.28 10:59 신고

    혹시나 보실까 싶어.. 지푸라기라도 잡는 심정으로 글 작성해보네요..
    HP/UX 서버에서 JCO 커넥터를 사용한 SAP RFC를 콜하려고 하는데,
    실서버에는 sapjco3.so라는 형태로 설치 및 설정이 되어 있지 않은 상태입니다.

    어플리케이션이 구동되는 WAS는 웹로직인데..
    저 so파일의 설치 및 설정은 어떻게 하는것일까요?;;

    • Favicon of http://blog.sz21c.com BlogIcon 제피르 2017.03.03 12:27 신고

      안녕하세요~

      티스토리 댓글 알림이 비정상인지 잘 안오네요...ㅜㅜ

      우선 sapjco3.so는 SAP에 연결하기 위한 Java Connector입니다. (DB를 Java에서 연결하기 위한 JDBC와 비슷한 것이라고 보심 되요.)

      그런데 SAP이라는 녀석이 좀 비싼 녀석이다보니 Connector를 아무에게나 제공하지 않습니다. ㅜㅜ

      제가 아는 한도에서는 SAP 계약 시 등록되는 계정이 필요하구요.

      만약 SAP을 회사 내부에서 운영 중이시라면 SAP의 시스템을 관리하시는 분께, 고객사쪽의 SAP에 연동하시려고 하시는 거라면 고객사쪽 SAP 시스템 관리자에게 요청하셔야 합니다.

      위 포스트에서는 시스템 관리자가 이미 SAP Connector를 서버에 셋팅해 놓은 상황이어서 제가 별로 Connector를 설정하지는 않았었네요.

      참고로 SAP에서 제공하는 MartketPlace가 있구요. 이쪽의 Tool 관련된 카테고리에서 sapjco3.so (버전에 따라 이름은 다를 수 있습니다.)를 다운로드 받을 수 있는 것으로 알고 있습니다. MarketPlace에 접근하기 위해서는 위에 말씀드린 계정이 필요하구요.

      크게 도움이 되지 못한 것 같아 죄송하네요... ㅜㅜ

+ Recent posts