Google AdSense (text)

hidden logo stop

Moving

거지 같은 이글루스 광고노출 정책이 싫어서,
새 보금자리(http://blog.leocat.kr/)로 이사감.

[WebLogic, Axis] WebLogic 8.1 SP3(8.1.3)에서 Axis2 디플로이 오류 Computer & Program

얼마전부터 Apache Axis2를 사용해서 웹서비스를 테스트하고 있었다. 내 개발 환경인 Tomcat 6에서도 잘 동작하고, 사내 테스트 서버인 WebLogic 8.1 SP6에서도 잘 동작했다. 헌데.. 이 녀석이 다른 테스트 서버로 옮겨가면 다음과 같은 오류 로그를 내뱉으며 디플로이가 되지 않는 것이다.

####<2010. 2. 25. 오후 5시 1분 7초 KST> <Info> <Deployer> <WAS_002> <soapserver> <ExecuteThread: '3' for queue: 'weblogic.kernel.Sys
tem'> <<WLS Kernel>> <> <BEA-149059> <Module test-0.0.0-SNAPSHOT of application test-0.0.0-SNAPSHOT is transitio
ning from unprepared to prepared on server soapserver.>
####<2010. 2. 25. 오후 5시 1분 8초 KST> <Debug> <HTTP> <WAS_002> <soapserver> <ExecuteThread: '3' for queue: 'weblogic.kernel.System
'> <<WLS Kernel>> <> <BEA-101158> <Exception thrown while loading test-0.0.0-SNAPSHOT: java.lang.StringIndexOutOfBoundsExc
eption: String index out of range: -1
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(String.java:1685)
    at weblogic.utils.jars.ManifestEntry.stream(ManifestEntry.java:171)
    at weblogic.utils.jars.Manifest.stream(Manifest.java:78)
    at weblogic.utils.classloaders.ExtractionHelper.resolveManifestName(ExtractionHelper.java:410)
    at weblogic.utils.classloaders.ExtractionHelper.extractClassFiles(ExtractionHelper.java:238)
    at weblogic.servlet.internal.WebAppServletContext.extractClassFiles(WebAppServletContext.java:5202)
    at weblogic.servlet.internal.WebAppServletContext.setDocroot(WebAppServletContext.java:5074)
    at weblogic.servlet.internal.WebAppServletContext.init(WebAppServletContext.java:538)
    at weblogic.servlet.internal.WebAppServletContext.<init>(WebAppServletContext.java:489)
    at weblogic.servlet.internal.HttpServer.loadWebApp(HttpServer.java:634)
    at weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:632)
    at weblogic.j2ee.J2EEApplicationContainer.prepareWebModule(J2EEApplicationContainer.java:3150)
    at weblogic.j2ee.J2EEApplicationContainer.prepareModules(J2EEApplicationContainer.java:1558)
    at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:1208)
    at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:1051)
    at weblogic.management.deploy.slave.SlaveDeployer$ComponentActivateTask.prepareContainer(SlaveDeployer.java:2444)
    at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.createContainer(SlaveDeployer.java:2394)
    at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.prepare(SlaveDeployer.java:2310)
    at weblogic.management.deploy.slave.SlaveDeployer.processPrepareTask(SlaveDeployer.java:866)
    at weblogic.management.deploy.slave.SlaveDeployer.prepareDelta(SlaveDeployer.java:594)
    at weblogic.management.deploy.slave.SlaveDeployer.prepareUpdate(SlaveDeployer.java:508)
    at weblogic.drs.internal.SlaveCallbackHandler$1.execute(SlaveCallbackHandler.java:25)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
>
####<2010. 2. 25. 오후 5시 1분 8초 KST> <Info> <Deployer> <WAS_002> <soapserver> <ExecuteThread: '3' for queue: 'weblogic.kernel.Sys
tem'> <<WLS Kernel>> <> <BEA-149061> <Module test-0.0.0-SNAPSHOT of application test-0.0.0-SNAPSHOT failed to tr
ansition from unprepared to prepared on server soapserver.>
####<2010. 2. 25. 오후 5시 1분 8초 KST> <Error> <Deployer> <WAS_002> <soapserver> <ExecuteThread: '3' for queue: 'weblogic.kernel.Sy
stem'> <<WLS Kernel>> <> <BEA-149201> <Failed to complete the deployment task with ID 93 for the application test-0.0.0-SN
APSHOT.
weblogic.management.ApplicationException:
Exception:weblogic.management.ApplicationException: prepare failed for test-0.0.0-SNAPSHOT
    Module: test-0.0.0-SNAPSHOT   Error: Could not load test-0.0.0-SNAPSHOT: java.lang.StringIndexOutOfBoundsExc
eption: String index out of range: -1

    at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.createContainer(SlaveDeployer.java:2398)
    at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.prepare(SlaveDeployer.java:2310)
    at weblogic.management.deploy.slave.SlaveDeployer.processPrepareTask(SlaveDeployer.java:866)
    at weblogic.management.deploy.slave.SlaveDeployer.prepareDelta(SlaveDeployer.java:594)
    at weblogic.management.deploy.slave.SlaveDeployer.prepareUpdate(SlaveDeployer.java:508)
    at weblogic.drs.internal.SlaveCallbackHandler$1.execute(SlaveCallbackHandler.java:25)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
--------------- nested within: ------------------
weblogic.management.ManagementException:  - with nested exception:
[weblogic.management.ApplicationException:
Exception:weblogic.management.ApplicationException: prepare failed for test-0.0.0-SNAPSHOT
    Module: test-0.0.0-SNAPSHOT   Error: Could not load test-0.0.0-SNAPSHOT: java.lang.StringIndexOutOfBoundsExc
eption: String index out of range: -1
]
    at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.prepare(SlaveDeployer.java:2327)
    at weblogic.management.deploy.slave.SlaveDeployer.processPrepareTask(SlaveDeployer.java:866)
    at weblogic.management.deploy.slave.SlaveDeployer.prepareDelta(SlaveDeployer.java:594)
    at weblogic.management.deploy.slave.SlaveDeployer.prepareUpdate(SlaveDeployer.java:508)
    at weblogic.drs.internal.SlaveCallbackHandler$1.execute(SlaveCallbackHandler.java:25)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
>


아무리 찾아봐도 뭐가 문제인지 모르겠다. 두 서버의 차이라면 WebLogic 8.1 SP3과 8.1 SP6의 차이뿐이다. 오류 로그를 보니 Manifest 파일이 문제가 있는지 찾아봤는데 Manifest 파일을 WebLogic이 제대로 못 읽는 오류는 이미 WebLogic 6.1 SP3에서 해결됐다고 한다. 헌데 아직도 이 모냥이라니..

그래서 테스트를 좀 했다. war 파일에 들어있는 WEB-INF/lib의 모든 라이브러리 파일을 제거하고 디플로이를 했다. 오?? 성공이네?? 물론 라이브러리가 없으니 ClassNotFoundException 등 여러 오류는 있지만 적어도 위의 오류는 없었다. 오호라~~ 그래서 Eclipse WTP가 추가해준 Axis2 라이브러리를 하나씩 추가해 가며 디플로이를 해봤다. 위의 오류가 날 때 까지.. 그리고 발견한 라이브러리는.. Apache Woden 프로젝트였다. 뭐하는 녀석인지는 몰라도 문제가 있다고 생각하고.. 일단 프로젝트 홈페이지에서 다시 다운받아 디플로이 했더니.. 웅?? 된다~~ㄲ!ㄲ!ㄲ!

해결 방법은.. Apache Woden 프로젝트를 다시 다운받아 "WEB-INF/lib"에 교체해 넣거나 WebLogic을 업그레이드 하면 된다.
Solution: Download Apache Woden project and replace it at "WEB-INF/lib" OR Upgrade WebLogic to 8.1 SP6


한 3일 동안 이 문제로 매일 삽질을 했는데 정말 어처구니 없게 해결이 됐다. 차라리 WebLogic을 8.1.6으로 업그레이드 할 것을 권장한다. =ㅅ=;;; 나처럼 업그레이드가 안 되면 이렇게라도 해야겠지만.. TㅅT WebLogic은 한 번 구매하면 그 기간 내에는 무료로 업그레이드가 가능하다고 한다.

구할 수 있는 WebLogic 8.1.4에서 테스트해보니 잘 동작한다. 8.1.3 이하에서만 발생하는 문제인듯 싶다.

덧글

댓글 입력 영역

Google AdSense (text/image)