윈도우즈의 서비스로 등록한 톰캣을 시작한 후 "catalina.시작일자.log"를 살펴보면 다음과 같은 오류가 발생할 때가 있다.
월 11, 2022 5:24:49 오후 org.apache.catalina.session.StandardManager doLoad 심각: IOException while loading persisted sessions: java.io.StreamCorruptedException: invalid type code: 00 java.io.StreamCorruptedException: invalid type code: 00 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1677) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2365) at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:612) at java.lang.Throwable.readObject(Throwable.java:915) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1185) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2256) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2147) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1646) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:482) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:440) at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1587) at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1075) at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:259) at org.apache.catalina.session.StandardManager.load(StandardManager.java:176) at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:465) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5714) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1018) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:994) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1296) at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:2039) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)
7월 11, 2022 5:24:49 오후 org.apache.catalina.session.StandardManager startInternal 심각: Exception loading sessions from persistent storage java.io.StreamCorruptedException: invalid type code: 00 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1677) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2365) at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:612) at java.lang.Throwable.readObject(Throwable.java:915) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1185) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2256) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2147) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1646) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:482) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:440) at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1587) at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1075) at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:259) at org.apache.catalina.session.StandardManager.load(StandardManager.java:176) at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:465) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5714) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1018) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:994) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1296) at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:2039) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)
이때는 설정값을 변경하는 것도 있지만, ~CATALINA/work/Catalina/localhost 디렉토리에 위치한 모든 정보들을 삭제하고, 서비스를 재시작 또는 중지한 후에 시작을 하면 위와 같은 에러 로그는 출력되지 않는다.
이번에 특정 사이트가 윈도우 서버이기에 연구소 설치 담당자가 작성한 윈도우 서비스 설치 가이드대로 설치가 되었으나, 데이터를 받으면 이상하게 한글이 깨지는 현상이 발생하였다.
이미 다른 사이트를 통해서 윈도우 서버에 윈도우 서비스로 등록을 하여 데이터에 대한 한글이 깨지지 않음을 확인이 되었기에 살짝 황당하였다.
그래서 기존의 내가 알고 있는 방식으로 톰캣의 인코딩 설정 정보를 확인 및 추가해 보았으나 해결 방안이 되지 못한 상태로 지난 주를 마무리를 지었다.
그래서 한번 더 확인을 해 본 결과 JvmOptions에 -Dfile.encoding=UTF-8 옵션을 추가하는 방법이 있어서 service.bat의 JvmOptions의 맨 마지막에 위와 같은 옵션을 추가를 하였으나, 여전히 데이터의 한글은 깨져서 도출이 되었다. (-Dfile.encoding=UTF-8 옵션은 알고는 있었으나 무작적 옵션의 맨 마지막에 추가를 했던 거이였다. 하기와 같이)
한글로 검색되는 Jenkins Plugin의 결과들은 maven으로 작업을 한 뒤에 eclipse에서 import 하는 식으로 나와 있다.
아직 영문을 검색해 보진 못하였지만,
그래서 많이 나오는 것 위주로 진행해 보았으나 BUILD FAILED 결과를 맞고 말았다.
일단 최초 시도한 것부터 열거해 보면 다음과 같다.
그전에 테스트 환경부터 정리해 본다.
OS
windows 10, amd64
java version
1.8.0_191,
JAVA_HOME
C:\Program Files (x86)\Java\jre1.8.0_91
maven
3.2.5
1. Jenkins repository용도의 settings.xml 파일 설정
maven repository에 settings.xml을 설정하는 내용이 최초로 소개가 된다. (여기서 settings.xml의 정보는 %MAVEN_HOME%conf 디렉토리에 있는 settings.xml과는 다른 것이다.)
그러나, 본인의 컴은 집에서 개인용이 아닌 사무실 작업용 컴퓨터여서 선듯, settings.xml 정보를 기 사용중인 reposigitory에 설정하기가 두려웠다. (repository가 한번 꼬이면 이전에 작업했던 거, 작업 중인 것들이 다 초기화를 해야하는 두려움 때문에)
그래서 찾아보니 Jenkins용 workspace 아래에 해당 settings.xml을 놔두면 꼬이는 현상이 없을 거이라는 글을 확인하고 바로 진행하였다.
<profiles> <!-- Give access to Jenkins plugins --> <profile> <id>jenkins</id> <activation> <activeByDefault>true</activeByDefault> <!-- change this to false, if you don't like to have it on per default --> </activation> <repositories> <repository> <id>repo.jenkins-ci.org</id> <url>http://repo.jenkins-ci.org/public/ </repository> </repositories> <pluginRepositories> <pluginRepository> <id>repo.jenkins-ci.org</id> <url>http://repo.jenkins-ci.org/public/ </pluginRepository> </pluginRepositories> </profile> </profiles> <mirrors> <mirror> <id>repo.jenkins-ci.org</id> <url>http://repo.jenkins-ci.org/public/ <mirrorOf>m.g.o-public</mirrorOf> </mirror> </mirrors> </settings>