[ https://issues.apache.org/jira/browse/WW-4901?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16365466#comment-16365466 ]
Liem commented on WW-4901: -------------------------- Hi, It seems this BUG is still with your latest Struts v2.5.15 when deploying on Weblogic server. Please see my exception below when testing Struts v2.5.15 with Weblogic server (Weblogic server version 12.2.1.2.0, JDK v 1.8.0_101). Struts v2.5.13 does not have this bug. Thanks, Liem. ----------------------------------- 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] > ClassCastException in JarEntryRevision > -------------------------------------- > > Key: WW-4901 > URL: https://issues.apache.org/jira/browse/WW-4901 > Project: Struts 2 > Issue Type: Bug > Affects Versions: 2.5.14.1 > Environment: Websphere 8.5.5.12 > Reporter: Michael Hum > Assignee: Yasser Zamani > Priority: Critical > Fix For: 2.5.15 > > > After upgrading to struts 2.5.14.1 we are unable to startup the application > on websphere. The logs show class cast exceptions in the JarEntryRevision > class: > {code} > [12/7/17 16:50:18:323 EST] 00000502 JarEntryRevis W > com.opensymphony.xwork2.util.fs.JarEntryRevision build Could not create > JarEntryRevision for > [wsjar:file:/icosdata/IBM/WebSphere/AppServer/profiles/CmpAppSrv01/installedApps/CMPDMDEVCell01/icos-dev.ear/icos-web.war/WEB-INF/lib/struts2-core-2.5.14.1.jar!/struts-default.xml]! > java.lang.ClassCastException: > com.ibm.ws.classloader.Handler$ClassLoaderURLConnection incompatible with > java.net.JarURLConnection > at > com.opensymphony.xwork2.util.fs.JarEntryRevision.build(JarEntryRevision.java:44) > at > com.opensymphony.xwork2.util.fs.DefaultFileManager.monitorFile(DefaultFileManager.java:94) > at > com.opensymphony.xwork2.util.fs.DefaultFileManager.loadFile(DefaultFileManager.java:73) > at > com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:1054) > at > com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:198) > at > com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:165) > at > com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:166) > at > com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66) > at > org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:957) > at > org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:463) > at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:496) > at > org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOperations.java:73) > at > org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:61) > at > com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.init(FilterInstanceWrapper.java:145) > at > com.ibm.ws.webcontainer.filter.WebAppFilterManager._loadFilter(WebAppFilterManager.java:607) > at > com.ibm.ws.webcontainer.filter.WebAppFilterManager.loadFilter(WebAppFilterManager.java:514) > at > com.ibm.ws.webcontainer.filter.WebAppFilterManager.getFilterInstanceWrapper(WebAppFilterManager.java:319) > at > com.ibm.ws.webcontainer.filter.WebAppFilterManager.getFilterChain(WebAppFilterManager.java:392) > at > com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:931) > at > com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1107) > at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3980) > at > com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304) > at > com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1016) > at > com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817) > at > com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200) > at > com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463) > at > com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530) > at > com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316) > at > com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:287) > at > com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) > at > com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) > at > com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175) > at > com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) > at com.ibm.io.async.AsyncChannelFuture$1.run(AsyncChannelFuture.java:205) > at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892) > {code} > We took a look at tracked it down to WW-4869 which modified the code to cast > to JarURLConnection: > {code:java} > JarURLConnection conn = null; > try { > conn = (JarURLConnection) fileUrl.openConnection(); > ... > {code} > Unfortunately the URLConnection in websphere doesn't inherit from > JarURLConnection: > {code:java} > static class ClassLoaderURLConnection extends URLConnection { ... } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)