cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Fagerstrom <dani...@nada.kth.se>
Subject Re: Problem with Cocoon Spring Configurator 1.0.0 and Weblogic 9.2
Date Sun, 30 Sep 2007 19:28:39 GMT
Juanjo Vázquez skrev:
> Hi all,
> 
> I´m working in an Cocoon 2.2-RC1 web application with one block. 
> Everything is ok when i deploy to Tomcat but i´m getting errors when i 
> deploy to Weblogic 9.2. I have been looking for a workaround  or a 
> solution and it seems the problem is the blocks are not deployed to the 
> public web directory in the weblogic domain.
> 
> Everything points to the method "deployBlockResources" in 
> "DeploymentUtil" class (cocoon-spring-configuratior-1.0.0.jar) is not 
> working properly in this environment. I have been debugging the 
> application deployed to weblogic with these discoveries:
> 
> 1. Spring loads the jar configurations with zip protocol instead jar 
> protocol, i.e.
> zip:C:/bea/user_projects/domains/cm_domain/servers/AdminServer/tmp/_WL_user/proxy-ear/53xotj/war/WEB-INF/lib/cocoon-servlet-service-impl-1.0.0-M2.jar!/META-INF/cocoon/spring/cocoon-callstack-environment.xml

> 
> 
> 2. In Runtime, the "URLConnection" class is a 
> "weblogic.utils.ZipUrlConnection" not a "JarURLConnection"
> 
> Can anybody help me with this problem?

Some background:

Blocks can contain resources that are intended to be available in e.g. 
sitemaps. These resources are put in a directory called COB-INF at the 
root of the directory structure of a block. The blocks are ordinary jars 
that are put in WEB-INF/lib (during development the blocks can expanded 
also).

The task of DeploymentUtil.deployBlockResources is to search the class 
path for all urls to COB-INF resources. If the url is of the type file: 
the url and the block name is registred. Then the resources in the 
COB-INF directory of the block is available through the blockcontext: 
source. If the url is a jar, the resources in the COB-INF directory are 
extracted to a temp directory in the file system and the url of the 
extracted resources is registred together with the clock name.

For Weblogic it seem like the classloader contains zip: urls for 
resources. A solution would be to extend the 
DeploymentUtil.deployBlockResources method with a case for the zip: 
protocol, it would be similar to the jar: case but a little bit more 
compliacted as the zip protocol doesn't know about mainfest attributes. 
A problem with this is that the ZipUrlConnection is Weblogic specific, 
so the protocol handling code in deployBlockResources would need to be 
extracted to some components.

Another, and much simpler solution if it works, would be to just replace 
"zip:" with "jar:" in the url string, create a new url object from the 
patched url string, and use the existing jar handling code.

/Daniel


Mime
View raw message