티스토리 뷰

Jeus 기동시에 다음과 같은 오류가 발생하였다. 

<< Exception >> 
jeus.servlet.deployment.StartingException: A web module deployment error occurred. 
	at jeus.servlet.engine.Context.distributeInternal(Context.java:1589) 
    at jeus.servlet.engine.Context.postDistribute2(Context.java:1402) 
    at jeus.servlet.deployment.WebModuleDeployer.postDistribute2(WebModuleDeployer.java:216) 
    at jeus.deploy.deployer.AbstractDeployer.distribute2(AbstractDeployer.java:301) 
    at jeus.deploy.deployer.AbstractDeployer.distribute(AbstractDeployer.java:244) 
    at jeus.deploy.deployer.DeploymentAdministrator.distribute(DeploymentAdministrator.java:244) 
    at jeus.server.Server.innerSingleDistribute(Server.java:2907) 
    at jeus.server.Server.access$1700(Server.java:161) 
    at jeus.server.Server$InnerDistributeAppTask.run(Server.java:2758) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at jeus.util.pool.ManagedThreadPoolImpl$1.run(ManagedThreadPoolImpl.java:81) 
    at jeus.util.pool.ManagedThreadPoolImpl$WorkWrapper.run(ManagedThreadPoolImpl.java:279) 
    at jeus.util.pool.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:1301) 
    at jeus.util.pool.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:1345) 
    at java.lang.Thread.run(Thread.java:748) 
Caused by: java.lang.LinkageError: loader constraint violation: when resolving interface method m
javax.servlet.ServletContext.getServletRegistration(Ljava/lang/String0Ljavax/servlet/Servle tRegistration;" 
the class loader (instance of jeus/servlet/loader/ContextLoader) of the current class, 
jeus/webservices/jaxrs/servlet/init/JaxiisServletContainerInitializer, and the class loader (instance of jeus/server/classloader/RootClassLoader) 
for the method's defining class, javax/servlet/ServletContext, have different Class objects for the type javax/servlet/ServletRegistration used in the signature 
    at jeus.webservices.jaxrs.servlet.init.JaxAsServletContainerInitializer.addServletWithDefaultConfiguration(JaxAsServletContainerInitializer.java:251) 
    at jeus.webservices.jaxrs.servlet.init.JaxAsServletContainerInitializer.onStartupImpl(JaxAsServletContainerInitializer.java:193) 
    at jeus.webservices.jaxrs.servlet.init.JaxAsServletContainerInitializer.onStartup(JaxAsServletContainerInitializer.java:154) 
    at jeus.webservices.jaxrs.servlet.JAMSProxyServletContainerInitializer.doCnStartup(JAMSProxyServletContainerInitializer.java:74) 
    at jeus.webservices.jaxrs.servlet.JAMSProxyServletContainerInitializer.onStartup(JAMSProxyServletContainerInitializer.java:63) 
    at jeus.servlet.listener.ListenerManager.fireServletContainerInitializers(ListenerManager.java:645) 
    at jeus.servlet.listener.ListenerManager.start(ListenerManager.java:249) at jeus.servlet.engine.Context.distributeInternal(Context.java:1563) 
    ...

여기서 핵심은 23번째줄에 있는 have different Class objects for the type javax/servlet/ServletRegistration used in the signature 인듯 싶다. "javax/servlet/servletRegistration 유형에 대해 다른 클래스 개체가 있습니다."

 

기동을 하는데 있어서 중복되는 무언가가 있어서 오류가 난다는 메세지이다. 그래서 Jeus system library 와 application에서 사용하는 library를 비교를 해봤는데 중복되는 무언가를 발견하지는 못했다.

 

그래서 Jeus가 기동을 하는 시점에 class loader의 우선순위를 생각해보기로 했다. 그러던중 Jeus에는 jeus-dd-web.xml에 class loader와 관련있는 설정이 있다는것을 알게 되었다. 바로 webinf-first라는 설정이다. 

 

jeus-dd-web.xml

<?xml version="1.0" encoding="UTF-8"?>
<jeus-web-dd xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
	<context-path>/</context-path>
	<webinf-first>
		<enabled>false</enabled>
	</webinf-first>
</jeus-web-dd>

문제가 발생했을때는 webinf-first 설정이 true로 되어 있었다. 즉 기동의 우선 순위를 WEB-INF를 우선시하고 그다음에 Jeus 관련 파일을 loading한다는건데 이게 문제였다. 설정을 false로 변경(or default=false라 기재하지 않아도 됨)해주니 그다음부터는 기동이 잘 되었다. 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31