Hi all,

I am working on COCOON3-105 whenever I find a sec, but I am thinking about the underlying problem for a while now.

To resume, the blockcontext:/ is being registered as an extension to java.net.URLConnection. In case of a not-known protocol we will create the StreamHandler (who is responsible to open the urlConnection) once - for the whole container!

This happens in the BlockContextURLStreamHandlerFactory in the method createURLStreamHandler(String protocol). Like said: only once (!) we call this method even if we have two different servlets using different blockcontext. This finally leads to that the BlockContextURLConnection only knows the blockcontext of the first requested blockcontext and ignores any others.

Some possible solution I see:
- move the resolving of the blockcontext into the BlockContextURLConnection. I tried that in the patch I attached to the issue but the problem is that the second request has no ServletContext associated to it so we cannot get the blocks. -> since we cannot resolve here the blockcontext this solution does not work - use a global blockcontext map. A reference to a global blockcontext map will be kept and this map needs to be merged when a new app is deployed (if needed). However that leads to many open issue like security, version, etc.

Further how do you undeploy the protocol since undeploying the underlying servlet would need to undeploy only a part of the blockcontext protocol.

I am not sure how to overcome above obstacles and would love any thoughts from the community.

salu2

--
Thorsten Scherler <scherler.at.gmail.com>
codeBusters S.L. - web based systems
<consulting, training and solutions>

http://www.codebusters.es/

Reply via email to