Tomcat으로 웹서비스를 제공하는 웹서버를 돌리고 있는데 몇일전 갑자기 이런 에러 메시지를 몇시간 계속 로그파일에 뿌리더니 어느순간인가 부터는 톰캣을 살아 있는데 웹서버에 연결이 되지 않는 현상이 발생되었네요.
로그는 아래와 같습니다.
<<=============================================================
[2008-06-27 10:30:05] ERROR [com.samsung.ws.framework.queue.WaitingRequestQueue.getRequestTable(WaitingRequestQueue.java:322)] -
javax.naming.CommunicationException [Root exception is java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.net.MalformedURLException: no protocol: 5.5/common/classes/]
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:722)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
at javax.naming.InitialContext.lookup(Unknown Source)
...
Caused by: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.net.MalformedURLException: no protocol: 5.5/common/classes/
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:325)
at sun.rmi.transport.Transport$1.run(Transport.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707)
at java.lang.Thread.run(Thread.java:595)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625)
... 27 more
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.net.MalformedURLException: no protocol: 5.5/common/classes/
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:282)
at sun.rmi.transport.Transport$1.run(Transport.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.net.MalformedURLException: no protocol: 5.5/common/classes/
at java.net.URL.<init>(URL.java:567)
at java.net.URL.<init>(URL.java:464)
at java.net.URL.<init>(URL.java:413)
...
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
=============================================================>>
해결방법을 찾기 위해 여기저기 해결방안을 찾던 중 아래 사이트에서 다음과 같은 내용을 발견하였습니다.
tomcat에서 rmi client 돌리다 발생하는 에러 MalformedURLException
<<=============================================================
http://forum.java.sun.com/thread.jspa?threadID=367368&tstart=0
여기 보면 사람들이 달아 놓은 답변들이 있는데...
해결책
1. tomcat을 space를 포함하지 않는 경로에 설치한다.(JRE는 상관없을라나 --;;)
2. 문제가 되는 경로의 space를 %20으로 바꿔 아래와 같이 사용한다.
*
그러니까 위 해결책 2가지 중 현재 상황에서 쉽게 적용할 수 있는 방법을 택하면 될듯 하다.
그리고 아래 링크에 버그 리포팅이 되어 있다고 하네요.
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4496398
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4273532
=============================================================>>
아마도 제 경우에는 C:/tomcat 5.5 를 C:/tomcat 이런 식으로 바꾸던지 C:/tomcat5.5 로 바꾸던지 해야겠네요.
서버를 가동한지가 꽤 오래되었는데 위와 같은 에러가 생긴 경우는 이번이 처음이라 확실하게 어디서 문제가 야기되었는지는 알 수가 없어서 찝찝하네요.
시간날때마다 찾아봐야 할 듯 합니다.