Hi,

I got a stackoverflow exception during instantiation of 
org.restlet.engine.Engine:
(stacktrace from Restlet 2.0M6)
...
org.restlet.engine.Engine.(Engine.java:325)
org.restlet.engine.Engine.register(Engine.java:246)
org.restlet.engine.Engine.register(Engine.java:235)
org.restlet.engine.Engine.getInstance(Engine.java:148)
org.restlet.engine.Engine.getLogger(Engine.java:203)
org.restlet.Context.getCurrentLogger(Context.java:87)
org.restlet.engine.Engine.registerHelper(Engine.java:659)  -> in Catch block, 
calling Context.getCurrentLogger()
org.restlet.engine.Engine.registerHelpers(Engine.java:688)
org.restlet.engine.Engine.registerHelpers(Engine.java:730)
org.restlet.engine.Engine.discoverConnectors(Engine.java:475)
org.restlet.engine.Engine.(Engine.java:325)
org.restlet.engine.Engine.register(Engine.java:246)
org.restlet.engine.Engine.register(Engine.java:235)
org.restlet.engine.Engine.getInstance(Engine.java:148)
org.restlet.engine.Engine.getLogger(Engine.java:203)
org.restlet.Context.getCurrentLogger(Context.java:87)
org.restlet.engine.Engine.registerHelper(Engine.java:659)  -> in Catch block, 
calling Context.getCurrentLogger()
org.restlet.engine.Engine.registerHelpers(Engine.java:688)
org.restlet.engine.Engine.registerHelpers(Engine.java:730)
org.restlet.engine.Engine.discoverConnectors(Engine.java:475)
...

It turned out that I was missing some restlet ext jars and so the 
registerHelper() method failed.
The problem is, that in the block that catches such exceptions, 
Context.getCurrentLogger()
is called, which in turn resulted in the Engine constructor to be called again.

In order to avert that, I'd propose introducing some kind of "safelog()" method 
in which the Engine constructor is not called.
This method could be used in all places within the chain of methods called by 
the engine constructor.

Cheers,
Carsten

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2447429

Reply via email to