You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2018/02/16 10:47:00 UTC

[jira] [Commented] (WW-4920) Could not create JarEntryRevision for [zip:C:/.... unknown protocol c

    [ https://issues.apache.org/jira/browse/WW-4920?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16366833#comment-16366833 ] 

ASF GitHub Bot commented on WW-4920:
------------------------------------

yasserzamani opened a new pull request #209: WW-4920 fix java.net.JarURLConnection#parseSpecs
URL: https://github.com/apache/struts/pull/209
 
 
   I inspired such fix from Spring Framework when I found it during my research at [here](https://github.com/spring-projects/spring-framework/blob/8d3264f680018ccbec6a40253b477283aa3a7e6e/spring-core/src/main/java/org/springframework/util/ResourceUtils.java#L316).
   
   Oracle WebLogic may report jar urls like "zip:C:/web-app-lib-path/some-jar.jar" but JDK's JarURLConnection#parseSpecs breaks on such urls.
   
   While JDK's JarURLConnection#parseSpecs is private then I had to extend URLConnection instead.
   
   @apache/struts-committers , I hope we can deliver this fix in Struts 2.5.15 instead of 2.6, please (?)

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


> Could not create JarEntryRevision for [zip:C:/.... unknown protocol c
> ---------------------------------------------------------------------
>
>                 Key: WW-4920
>                 URL: https://issues.apache.org/jira/browse/WW-4920
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.5.15
>         Environment: Weblogic server (Weblogic server version 12.2.1.2.0, JDK v 1.8.0_101)
>            Reporter: Yasser Zamani
>            Assignee: Yasser Zamani
>            Priority: Major
>              Labels: weblogic
>
> This is a follow up forĀ [BUG in struts-2.5.15|http://mail-archives.apache.org/mod_mbox/struts-user/201802.mbox/browser].
> copy of report from user mail list:
> Hi all,
> Testing your upcoming struts-2.5.15, when starting Weblogic server (Weblogic server version
> 12.2.1.2.0, JDK v 1.8.0_101), we see exception below.
> Thanks,
> Liem.
> --------------------------------------------
> {code:java}
> 2018-02-14 10:28:37.194 WARN  - Could not create JarEntryRevision for [zip:C:/Oracle/Middleware/Oracle_Home12.2.1.0.0/user_projects/domains/iwa_local_domain/servers/AdminServer/tmp/_WL_user/IWA/zfd81u/war/WEB-INF/lib/struts2-core.jar!/struts-default.xml]!
> java.net.MalformedURLException: unknown protocol: c
>                 at java.net.URL.<init>(URL.java:600) ~[?:1.8.0_101]
>                 at java.net.URL.<init>(URL.java:490) ~[?:1.8.0_101]
>                 at java.net.URL.<init>(URL.java:439) ~[?:1.8.0_101]
>                 at java.net.JarURLConnection.parseSpecs(JarURLConnection.java:175) ~[?:1.8.0_101]
>                 at java.net.JarURLConnection.<init>(JarURLConnection.java:158) ~[?:1.8.0_101]
>                 at com.opensymphony.xwork2.util.fs.StrutsJarURLConnection.<init>(StrutsJarURLConnection.java:44)
> ~[struts2-core.jar:2.5.15]
>                 at com.opensymphony.xwork2.util.fs.StrutsJarURLConnection.openConnection(StrutsJarURLConnection.java:99)
> ~[struts2-core.jar:2.5.15]
>                 at com.opensymphony.xwork2.util.fs.JarEntryRevision.build(JarEntryRevision.java:42)
> [struts2-core.jar:2.5.15]
>                 at com.opensymphony.xwork2.util.fs.DefaultFileManager.monitorFile(DefaultFileManager.java:94)
> [struts2-core.jar:2.5.15]
>                 at com.opensymphony.xwork2.util.fs.DefaultFileManager.loadFile(DefaultFileManager.java:73)
> [struts2-core.jar:2.5.15]
>                 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:1054)
> [struts2-core.jar:2.5.15]
>                 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:198)
> [struts2-core.jar:2.5.15]
>                 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:165)
> [struts2-core.jar:2.5.15]
>                 at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:166)
> [struts2-core.jar:2.5.15]
>                 at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)
> [struts2-core.jar:2.5.15]
>                 at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:957)
> [struts2-core.jar:2.5.15]
>                 at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:463)
> [struts2-core.jar:2.5.15]
>                 at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:496) [struts2-core.jar:2.5.15]
>                 at org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOperations.java:73)
> [struts2-core.jar:2.5.15]
>                 at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:61)
> [struts2-core.jar:2.5.15]
>                 at weblogic.servlet.internal.FilterManager$FilterInitAction.run(FilterManager.java:400)
> [com.oracle.weblogic.servlet.jar:12.2.1.0]
>                 at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:326)
> [com.oracle.weblogic.security.subject.jar:12.2.1.0]
>                 at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:196)
> [com.oracle.weblogic.security.subject.jar:12.2.1.0]
>                 at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)
> [com.oracle.weblogic.servlet.jar:12.2.1.0]
>                 at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71)
> [com.oracle.weblogic.servlet.jar:12.2.1.0]
>                 at weblogic.servlet.internal.FilterManager.initFilter(FilterManager.java:130)
> [com.oracle.weblogic.servlet.jar:12.2.1.0]
>                 at weblogic.servlet.internal.FilterManager.loadFilter(FilterManager.java:92)
> [com.oracle.weblogic.servlet.jar:12.2.1.0]
>                 at weblogic.servlet.internal.FilterManager.preloadFilters(FilterManager.java:72)
> [com.oracle.weblogic.servlet.jar:12.2.1.0]
>                 at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1917)
> [com.oracle.weblogic.servlet.jar:12.2.1.0]
>                 at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3063)
> [com.oracle.weblogic.servlet.jar:12.2.1.0]
>                 at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1830)
> [com.oracle.weblogic.servlet.jar:12.2.1.0]
>                 at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:875) [com.oracle.weblogic.servlet.jar:12.2.1.0]
>                 at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:360)
> [com.oracle.weblogic.application.jar:12.2.1.0]
>                 at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:356)
> [com.oracle.weblogic.application.jar:12.2.1.0]
>                 at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
> [com.oracle.weblogic.application.jar:12.2.1.0]
>                 at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:138)
> [com.oracle.weblogic.application.jar:12.2.1.0]
>                 at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
> [com.oracle.weblogic.application.jar:12.2.1.0]
>                 at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:237)
> [com.oracle.weblogic.application.jar:12.2.1.0]
>                 at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:232)
> [com.oracle.weblogic.application.jar:12.2.1.0]
>                 at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
> [com.oracle.weblogic.application.jar:12.2.1.0]
>                 at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:82)
> [com.oracle.weblogic.application.jar:12.2.1.0]
>                 at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:52)
> [com.oracle.weblogic.application.jar:12.2.1.0]
>                 at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:753)
> [com.oracle.weblogic.application.jar:12.2.1.0]
>                 at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
> [com.oracle.weblogic.application.jar:12.2.1.0]
>                 at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:263)
> [com.oracle.weblogic.application.jar:12.2.1.0]
>                 at weblogic.application.internal.EarDeployment.activate(EarDeployment.java:67)
> [com.oracle.weblogic.application.jar:12.2.1.0]
>                 at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165)
> [com.oracle.weblogic.application.jar:12.2.1.0]
>                 at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80)
> [com.oracle.weblogic.deploy.jar:12.2.1.0]
>                 at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:265)
> [com.oracle.weblogic.deploy.jar:12.2.1.0]
>                 at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:481)
> [com.oracle.weblogic.deploy.jar:12.2.1.0]
>                 at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:53)
> [com.oracle.weblogic.deploy.jar:12.2.1.0]
>                 at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:202)
> [com.oracle.weblogic.deploy.jar:12.2.1.0]
>                 at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:52)
> [com.oracle.weblogic.deploy.jar:12.2.1.0]
>                 at weblogic.management.deploy.internal.ConfiguredDeployments$2.doItem(ConfiguredDeployments.java:592)
> [com.oracle.weblogic.deploy.jar:12.2.1.0]
>                 at weblogic.management.deploy.internal.parallel.BucketInvoker.invoke(BucketInvoker.java:138)
> [com.oracle.weblogic.deploy.jar:12.2.1.0]
>                 at weblogic.management.deploy.internal.ConfiguredDeployments.transitionAppsParallel(ConfiguredDeployments.java:600)
> [com.oracle.weblogic.deploy.jar:12.2.1.0]
>                 at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:259)
> [com.oracle.weblogic.deploy.jar:12.2.1.0]
>                 at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:155)
> [com.oracle.weblogic.deploy.jar:12.2.1.0]
>                 at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:221)
> [com.oracle.weblogic.deploy.jar:12.2.1.0]
>                 at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:130)
> [com.oracle.weblogic.deploy.jar:12.2.1.0]
>                 at weblogic.server.AbstractServerService.postConstruct(AbstractServerService.java:76)
> [com.bea.core.weblogic.lifecycle.jar:12.2.1.0]
>                 at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source) ~[?:?]
>                 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[?:1.8.0_101]
>                 at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_101]
>                 at org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1262)
> [org.glassfish.hk2.hk2-utils.jar:?]
>                 at org.jvnet.hk2.internal.ClazzCreator.postConstructMe(ClazzCreator.java:332)
> [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:374) [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:471)
> [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:228)
> [org.glassfish.hk2.hk2-runlevel.jar:?]
>                 at org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:85)
> [org.glassfish.hk2.hk2-runlevel.jar:?]
>                 at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2072) [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:114)
> [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:698)
> [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:78)
> [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.jvnet.hk2.internal.ClazzCreator.resolve(ClazzCreator.java:211) [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.jvnet.hk2.internal.ClazzCreator.resolveAllDependencies(ClazzCreator.java:234)
> [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:357) [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:471)
> [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:228)
> [org.glassfish.hk2.hk2-runlevel.jar:?]
>                 at org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:85)
> [org.glassfish.hk2.hk2-runlevel.jar:?]
>                 at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2072) [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:114)
> [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:698)
> [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:78)
> [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.jvnet.hk2.internal.ClazzCreator.resolve(ClazzCreator.java:211) [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.jvnet.hk2.internal.ClazzCreator.resolveAllDependencies(ClazzCreator.java:234)
> [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:357) [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:471)
> [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:228)
> [org.glassfish.hk2.hk2-runlevel.jar:?]
>                 at org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:85)
> [org.glassfish.hk2.hk2-runlevel.jar:?]
>                 at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2072) [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:114)
> [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:88)
> [org.glassfish.hk2.hk2-locator.jar:?]
>                 at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.oneJob(CurrentTaskFuture.java:1213)
> [org.glassfish.hk2.hk2-runlevel.jar:?]
>                 at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.run(CurrentTaskFuture.java:1144)
> [org.glassfish.hk2.hk2-runlevel.jar:?]
>                 at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:643)
> [com.bea.core.weblogic.workmanager.jar:12.2.1.0]
>                 at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)
> [com.bea.core.utils.full.jar:12.2.1.0]
>                 at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)
> [com.bea.core.utils.full.jar:12.2.1.0]
>                 at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)
> [com.oracle.weblogic.work.jar:12.2.1.0]
>                 at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
> [com.bea.core.weblogic.workmanager.jar:12.2.1.0]
>                 at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:617)
> [com.bea.core.weblogic.workmanager.jar:12.2.1.0]
>                 at weblogic.work.ExecuteThread.execute(ExecuteThread.java:397) [com.bea.core.weblogic.workmanager.jar:12.2.1.0]
>                 at weblogic.work.ExecuteThread.run(ExecuteThread.java:346) [com.bea.core.weblogic.workmanager.jar:12.2.1.0]
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)