[
https://issues.apache.org/jira/browse/COCOON-2172?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12578685#action_12578685
]
Juan Jose Vazquez Delgado commented on COCOON-2172:
---------------------------------------------------
I added this code in DeploymentUtil class to solve the issue:
protected static void deployBlockResources(String relativeDirectory,
String destinationDirectory,
Map blockContexts)
throws IOException {
final Enumeration jarUrls =
DeploymentUtil.class.getClassLoader().getResources(BLOCK_RESOURCES_PATH);
while ( jarUrls.hasMoreElements() ) {
final URL resourceUrl = (URL)jarUrls.nextElement();
String url = resourceUrl.toExternalForm();
if ( "file".equals(resourceUrl.getProtocol()) ) {
// FIXME: This only covers the siuation when the project is
Maven generated
// if this is a file url generated by the Maven,
// it has this form "file:{url}/{block
name}/target/classes/COB-INF
int pos = url.indexOf("/target/classes/COB-INF");
// extract block name (if any)
if (pos >= 0) {
String blockName = url.substring(0, pos);
blockName = blockName.substring(blockName.lastIndexOf('/')
+ 1);
// register the root URL for the block resources
blockContexts.put(blockName, url);
}
} else if ( "jar".equals(resourceUrl.getProtocol()) ||
"zip".equals(resourceUrl.getProtocol()) ) {
// if this is a jar url, it has this form:
"jar:{url-to-jar}!/{resource-path}"
// to open the jar, we can simply remove everything after "!/"
int pos = url.indexOf('!');
url = url.substring(0, pos+2); // +2 as we include "!/"
/**
* Included because of Weblogic 9.2 classloader behaviour
*/
if ("zip".equals(resourceUrl.getProtocol()))
url = url.replace("zip:", "jar:file:");
final URL jarUrl = new URL(url);
final JarURLConnection connection =
(JarURLConnection)jarUrl.openConnection();
final JarFile jarFile = connection.getJarFile();
String blockName =
jarFile.getManifest().getMainAttributes().getValue("Cocoon-Block-Name");
if ( blockName == null ) {
String jarPath = jarFile.getName();
// extract jar name
String jarName =
jarPath.substring(jarPath.lastIndexOf(File.separatorChar) + 1);
// drop file extension
blockName = jarName.substring(0, jarName.lastIndexOf('.'));
// TODO how do we strip version from blockName?
}
final StringBuffer buffer = new
StringBuffer(destinationDirectory);
buffer.append(File.separatorChar);
buffer.append(relativeDirectory);
buffer.append(File.separatorChar);
buffer.append(blockName);
String destination = buffer.toString();
deploy(jarFile, BLOCK_RESOURCES_PATH, destination);
// register the root URL for the block resources
blockContexts.put(blockName, new
File(destination).toURL().toExternalForm());
}
// we only handle jar files and ordinary files
// TODO - Should we throw an exception if it's some other protocol
type? (or log?)
}
}
> Cocoon Spring Configurator 1.0.1 doesn´t work properly with Weblogic 9.2
> ------------------------------------------------------------------------
>
> Key: COCOON-2172
> URL: https://issues.apache.org/jira/browse/COCOON-2172
> Project: Cocoon
> Issue Type: Bug
> Components: * Cocoon Core
> Affects Versions: 2.2-dev (Current SVN)
> Reporter: Juan Jose Vazquez Delgado
>
> Deploying to Weblogic 9.2 happens this:
> 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"
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.