꽤나 바쁜 요즘이다.

 

회사일도 정신이 없고 해야할게 너무 많다..

 

최근에 JPA를 공부해보고싶어서

 

spring boot + thymeleaf + jpa 등등을 사용한 게시판 토이프로젝트를 시작했는데

 

최근 릴리즈된 spring boot 2.2.0을 사용했다.

 

boot 2.x를 사용해본적이 없어서 그런지 초반 설정에 난감한부분이 몇개 있었는데

 

바로 JUnit 버전이다.

 

아직 자세하기 볼일이 크게 없지만 

 

spring boot release note https://spring.io/blog/2019/10/16/spring-boot-2-2-0 를 확인하면

 

이미 JUnit version이 5.x대로 올라와있었다.

 

JUnit 4에서 5로 넘어갈때 변경되는 부분이 몇개 있는건 알았는데

 

확실히 사용하기전에 사용법을 익혀야 하나보다 ...

 

나같은 경우는 @Before로 지정한 메서드가 동작이 안되었는데

 

stackoverflow에서 쉽게 찾을 수 있었다.

 


'@Before' with '@BeforeEach'
'@AfterEach' with '@AfterEach'
'@BeforeAll' with '@BeforeAll'
'@AfterAll' with '@AfterAll'


만약 JUnit 5.x를 사용하고 있다면

 

@Before는 @BeforeEach로 바꿔주고

 

package 역시 

org.junit 이 아니라

org.junit.jupiter.api 로 변경해주어야 한다.

 

 

아래는 junit 5 doc이다.

https://junit.org/junit5/docs/current/user-guide/#overview

 

출처 : https://stackoverflow.com/questions/50119187/eclipse-keep-saying-no-tests-found-with-test-runner-junit-5

 

java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.isBlank(Ljava/lang/String;)Z Error 

 

어쩌구 저쩌구 ...

 

나는 이 에러가

 

org.apache.commons.lang.StringJoin(Collection col , String split)

 

여기서 발생했다.

 

거의 하루를 날렸다.

 

왜냐면 정말 의심가던곳을 제거한 뒤에도 계속해서 라이브러리 충돌이 났기 때문이다.

 

나는 정말 maven쪽 라이브러리들이 정리가 안되어서 계속 나는줄 알았다.. =_=...

 

자료를 찾기가 조금 어려웠는데 아래에서 찾았다

 

https://m.blog.naver.com/PostView.nhn?blogId=ggangpark&logNo=60197948450&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

 

결론적으로 weblogic이 갖고 있는 commons-* 라이브러리들과

 

현재 내 프로젝트에 commons-* 라이브러리들이 충돌이 나는건데

 

weblogic의 기본설정은 자신의 commons-* 라이브러리를 우선순위로 잡고 프로젝트를 로딩한다.

 

이 우선순위를 바꿀 수 있는 weblogic.xml 설정이 바로 prefer-web-inf-classes 이다.

 

근데 prefer-web-inf-classes 을 true로 주었지만 나같은경우는 xml-apis랑 다시 충돌이 나는 현상이 있었다

 

그러다가 또 개삽질하고

 

아래와 같이 prefer-application-packages를 사용하여 특정 패키지만 우선순위로 두는것으로 해결했다.

<container-descriptor>
		<prefer-application-packages>
			<package-name>org.apache.commons.*</package-name>
		</prefer-application-packages>
</container-descriptor>	

 

아래는 oracle weblogic doc에 있는 내용이니 참고해도 좋을듯 하다

https://docs.oracle.com/cd/E13222_01/wls/docs90/programming/classloading.html#1082452

 

 

web.xml은 많이 안쓰지만 ..그래도 누군가에게는 필요할수도 ..

 

 

<context-param>
  <param-name>foo</param-name>
  <param-value>bar</param-value>
</context-param>

 

다음과 같이 web.xml에 전역으로 등록한 파라미터는 

 

jsp에서

 

${initParam['foo']}

 

이렇게 꺼내서 쓰면 된다 

 

 

https://stackoverflow.com/questions/14039220/how-can-i-get-context-parameter-value-in-jsp

 

 

 

나같은 jenkins 초허접은 이 에러를 보면 당황할만하다 ..

 

jenkins에서는 disk full 나는걸 모니터링? 해서 어느정도 용량이 보장되지 않는다면

 

build 스케쥴을 무시하거나 build가 되지 않는다

 

 

 

이미 수정됐을때 찍은 이미지이지만

 

저부분이 나같은경우는 1GB로 잡혀있었다

 

1GB에서 500GB로 변경하는순간 build 스케쥴이 돌았다

 

나는 정말 war build까지만 필요한 job이여서 build이후 workspace를 제거해서 디스크용량을 확보하기로 했는데 

 

다른분들은 아래의 링크를확인해서 어떤 전략을 세워야할지 고민해보는것도 좋을 듯 하다!

 

 

 

 

 

 

https://stackoverflow.com/questions/10325982/how-to-solve-jenkins-disk-space-is-too-low-issue

 

 

대체 왜 .. 이런 라이브러리를 썼는지는 잘 모르겠지만 ...

 

maven 으로 패킹하는데 이 라이브러리가 아무곳에도 없었다

 

이클립스로 봤을때 이 라이브러리는 jdk(1.7)에 의존하고 있었다.

 

서버에서 돌아가는 jdk랑 버전이 다르긴했는데 어쨌던간에

 

서버의 jdk는 해당 라이브러리를 갖고 있지 않아서 문제가 났다.

 

 

이걸 어떻게 할까 하다가 구글신에서 jar파일을 찾고 직접 넣어주니까 동작이 잘 됐다.

 

https://mvnrepository.com/artifact/com.sun.xml.security/xml-security-impl/1.0

 

Maven Repository: com.sun.xml.security » xml-security-impl » 1.0

XML Security with Extensions com.sun.xml.security xml-security-impl 1.0 // https://mvnrepository.com/artifact/com.sun.xml.security/xml-security-impl compile group: 'com.sun.xml.security', name: 'xml-security-impl', version: '1.0' // https://mvnrepository.c

mvnrepository.com

 

 

com.sun.org.apache.xml.internal.security.* 를 포함하는 라이브러리이다

 

 

 

https://stackoverflow.com/questions/30909847/how-to-solve-com-sun-org-apache-xml-internal-security-package-does-not-exist-in/32316288

 

만약 저와 똑같이 젠킨스 허접이라면

 

'왜 내가 jenkins로 올린 톰캣(startup.sh)이 쉘로 잘 작동했는데 jenkins job이 끝나면 왜 서버가 안올라가있을까?' 

 

라는 의구심을 품게됩니다...

 

저도 그랬거든요

 

너무 슬픈 이야기 ..

 

 

https://wiki.jenkins.io/display/JENKINS/ProcessTreeKiller

 

ProcessTreeKiller - Jenkins - Jenkins Wiki

This feature is available since 1.260 To reliably kill processes spawned by a job during a build, Jenkins contains a bit of native code to list up such processes and kill them. This is tested on several platforms and architectures, but if you find a show-s

wiki.jenkins.io

 

 

jenkins 공홈에서 위와같은 내용을 볼 수 있습니다.

 

ProcessTreeKiller라는 놈인거같은데 내용 역시 jenkins 공홈을 보시길 추천합니다.

 

간략하게 설명하면 jenkins job이 돌때 jenkins가 올린 프로세서들은

 

job이 끝나는 지점에서 전부 종료?시키는거 같은데

 

저희의 was서버는 job이 끝나도 백그라운드로 계속 돌아야하죠 ..

 

 

방법은 아래!! 

 

 

 

Jenkins의 'Freestyle project' 에서 '이 빌드는 매개변수가 있습니다' 를 클릭하고

 

'String Parameter'를 선택해서 위와같이 'donKillMe'를 사용해서

 

job이 끝나도 쉘에서 작동시킨 process를 종료시키지 않게하는 파라미터를 던질 수 있습니다.

 

 

만약 pipeline으로 작성하시느분들은

 

In case of Jenkins Pipeline use JENKINS_NODE_COOKIE instead of BUILD_ID

 

참고!

 

 

 

https://wiki.jenkins.io/display/JENKINS/ProcessTreeKiller

 

 

 

 

 

 

 

pom.xml에 

	<!-- oracle -->
		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc14</artifactId>
			<version>10.2.0.4.0</version>
		</dependency>

다음과 같이 입력해도 maven이 해당 라이브러리를 다운받지 못한다.

 

오라클 라이센스와 관련이 있는듯하다

 

따라서 직접 ojdbc 라이브러리를 구한다음에 local maven repository에 등록시켜야

 

아마 해당 프로젝트가 원활하게 돌아갈 것이다

 

나는 쫄보여서 라이센스 관련된건 못올리겠지만

 

사실 구하는건 어렵지 않으니 직접 jar파일을 구해서 아래의 명령어를 참고하여 local maven repository에 등록시키자~!

 

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.x.x.x -Dpackaging=jar -Dfile=ojdbc14.jar -DgeneratePom=true

 

 

 

 

 

https://stackoverflow.com/questions/9007009/is-there-an-issue-with-the-oracle-dependency

https://stackoverflow.com/questions/28787495/missing-artifact-com-oracleojdbc14jar10-2-0-1-0

 

weblogic으로 올라가는 프로젝트에서

 

자꾸 maven update 할때마다

 

context-root가 이상하게 변경되어서 찾아봤다

 

아래의 프로퍼티를 추가하면 된당

 

 

<properties>
  <m2eclipse.wtp.contextRoot>my_context_root !</m2eclipse.wtp.contextRoot>
</properties>

 

 

https://stackoverflow.com/questions/16617595/weblogic-application-context-root-is-war-file-name-instead-of-name-specified-in

 

 

 

 

+ Recent posts