external jar (외부 jar 파일)의 class 실행 중 씹히는 현상

449 views
Skip to first unread message

Km J

unread,
Feb 15, 2017, 5:12:21 AM2/15/17
to Korea Spring User Group Q&A

spring mvc+maven+tomcat 구성에서 서버는 jenkins로 빌드 후 배포하는 환경이고요.


결론부터 말하자면, 로컬에선 빌드 및 실행이 정상적으로 되는데


서버에 배포하면 빌드는 잘 되지만


실행시 외부에서 받은 jar파일 안에 있는 특정 class의 생성자 메소드 "new ClassName(request)"를 실행할 때 말그대로 씹힙니다...


에러도 안뱉고 로그를 찍어봐도 앞에 까진 정상적으로 찍히지만 실행 뒤의 로그는 찍히지 않습니다.


더 웃낀건 같은 jar안에 있는 다른 클래스는 위에서 잘 실행되다가 아래에서 실행이 안되네요.


예를들면, test.jar 안에있는 A.class와 B.class 가 있으면

try{
	A a = new A(); 
	a.method();   // 는 잘되고

	B b = new b();  // 를 실행하면 이하 코드는 전혀 실행되지않습니다.
} catch(Exception e){
	e.printStackTrace();  // exception 도 안타고
} finally{
	logger.debug("finally");  // finally 만 타네요
}
logger.debug("이부분도 안탐...");


빌드가 안되는것도 아니고, 라이브러리가 잡혀있는 상태에서 이런현상이 있으니 원인이 짐작이 되질 않습니다.ㅜㅜ


pom.xml 에 로컬 repo를 추가로 잡고 거기에 외부 jar파일들을 놓고 dependency에 설정 후 경로에 맞게 넣어 빌드는 잘 되는 상태입니다.

<repositories>
        <repository>
            <id>in-project</id>
            <name>In Project Repo</name>
            <url>file://${project.basedir}/lib</url>
        </repository>
</repositories>

젠킨스에서 빌드 할 때는

        <repository>
            <id>in-project-jenkins</id>
            <name>custom jars-jenkins</name>
            <url>file://${JENKINS_HOME}/workspace/${JOB_NAME}/lib</url>
        </repository>

  를 추가해서 라이브러리들이 정상적으로 빌드됩니다.


Sanghyuk Jung

unread,
Feb 15, 2017, 7:22:56 AM2/15/17
to ks...@googlegroups.com
생성자 안에서 서버에서는 연결이 안 되는 네트워크로 호출을 하고 있지 않은지 의심이 됩니다.
스레드를 떠 보시면 어디에서 막혀있는지 추적을 하시는데 도움이 될 것 같습니다. jstack 혹은 kill -3으로 덤프를 뜨실 수 있습니다.
(http://d2.naver.com/helloworld/10963 기사 참고 )



2017년 2월 15일 오후 7:12, Km J <prove...@gmail.com>님이 작성:

--
이 메일은 Google 그룹스 'Korea Spring User Group Q&A' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 ksug+unsubscribe@googlegroups.com에 이메일을 보내세요.
https://groups.google.com/group/ksug에서 이 그룹을 방문하세요.
웹에서 이 토론을 보려면 https://groups.google.com/d/msgid/ksug/a1d76330-e955-4569-b6ee-9c4ab284c50a%40googlegroups.com을(를) 방문하세요.
더 많은 옵션을 보려면 https://groups.google.com/d/optout을(를) 방문하세요.

[인석] Chris Cho

unread,
Feb 15, 2017, 7:43:52 PM2/15/17
to ks...@googlegroups.com
음..

일단 B 클래스 생성자에서 무슨 코드가 있는지 궁금하구요.
B 클래스와 같은 이름의 클래스가 다른 jar파일에 있을 가능성도 있을듯하구요.

Catch 하실때 Exception 대신 Throwable로도 한번 바꿔보시면 어떨까 싶네요..

그리고 로컬환경에서 재현이 가능해보입니다. 메이븐 레파지토리를 다른 빈 디렉토리로 변경해서도 해보시죠..

해결하시길 바래요!


2017. 2. 15. 오후 9:22에 "Sanghyuk Jung" <ben...@gmail.com>님이 작성:
Reply all
Reply to author
Forward
0 new messages