Hi Scott, Jira ticket raised at:
https://issues.apache.org/jira/browse/WOOKIE-424 And the patch file is there too. Thanks, Darren. On 6 January 2014 14:29, Scott Wilson <[email protected]>wrote: > Hi Darren, > > On 6 Jan 2014, at 14:10, Darren Jones wrote: > > > Hello, > > > > I've been trying to get Apache Wookie working on WildFly. After raising a > > few defects against WildFly's new web server component called UnderTow > > (which are now fixed), I think there may be a remaining issue in Wookie: > > > > In LocalizedResourceFilter, there is code that looks for a localized copy > > of a resource. Here is an example snippet (around line 185): > > > > String filePath = > filterConfig.getServletContext().getRealPath(path); > > if (new File(filePath).exists()) > > return context + path; > > > > According to the javadoc for ServletContext.getRealPath(), it is allowed > to > > return null if the file does not exist. As my widgets are not localized, > > this is the case, and a NullPointerException occurs because null is then > > passed to new File(filePath). > > > > I'm not sure why this has not been found before - perhaps other web > servers > > have not been returning null if a resource does not exist. > > You're right, it is odd. Most of the test widgets aren't localized either, > so if it was purely an issue with that then we should have seen the error > before. I wonder if its something to do with WildFly's implementation of > Filter and/or ServletContext? Whatever the cause, we need to make sure we > catch this case and handle it properly. > > > > > I've fixed it temporarily with a local patch that does an extra null > check > > before calling new File(): > > > > String filePath = > filterConfig.getServletContext().getRealPath(path); > > if (filePath != null && new File(filePath).exists()) > > return context + path; > > > > There are 3 places in LocalizedResourceFilter that needed this fix - and > > may there be more in other Wookie classes? > > > > Should I raise a Jira ticket for this? > > Yes please. Can you attach your patch to the ticket as well? If it fixes > the problem I'd be happy to review and apply it. > > Cheers, > > S > > > > > Thanks, > > > > Darren. > > > > (Full exception from WildFly log is given below) > > > > [exec] 13:58:02,558 ERROR [io.undertow.request] (default task-2) > > UT005023: Exception handling request to /wookie/wservices/ > > abc.com/widgets/abc-tag-cloud/index.html: java.lang.RuntimeException: > > Exception caught for transaction: java.lang.NullPointerException > > [exec] at > > org.apache.wookie.server.MainFilter.doFilter(MainFilter.java:85) > [classes:] > > [exec] at > > io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56) > > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30] > > [exec] at > > > io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) > > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30] > > [exec] at > > > io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85) > > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30] > > [exec] at > > > io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) > > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30] > > [exec] at > > > io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) > > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30] > > [exec] at > > > org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:70) > > [exec] at > > > io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) > > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT] > > [exec] at > > > io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113) > > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30] > > [exec] at > > > io.undertow.security.handlers.AuthenticationCallHandler.handleRequest(AuthenticationCallHandler.java:52) > > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT] > > [exec] at > > > io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:51) > > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT] > > [exec] at > > > io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) > > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT] > > [exec] at > > > io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61) > > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30] > > [exec] at > > > io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:56) > > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30] > > [exec] at > > > io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) > > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT] > > [exec] at > > > io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:67) > > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30] > > [exec] at > > > io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:70) > > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT] > > [exec] at > > > io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) > > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT] > > [exec] at > > > org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) > > [exec] at > > > io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) > > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT] > > [exec] at > > > io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) > > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT] > > [exec] at > > > io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240) > > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30] > > [exec] at > > > io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227) > > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30] > > [exec] at > > > io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73) > > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30] > > [exec] at > > > io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146) > > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30] > > [exec] at > > io.undertow.server.Connectors.executeRootHandler(Connectors.java:164) > > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT] > > [exec] at > > io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:654) > > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT] > > [exec] at > > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > > [rt.jar:1.7.0_21] > > [exec] at > > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > > [rt.jar:1.7.0_21] > > [exec] at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21] > > [exec] Caused by: java.lang.NullPointerException > > [exec] at java.io.File.<init>(File.java:251) [rt.jar:1.7.0_21] > > [exec] at > > > org.apache.wookie.server.LocalizedResourceFilter.getLocalizedResource(LocalizedResourceFilter.java:186) > > [classes:] > > [exec] at > > > org.apache.wookie.server.LocalizedResourceFilter.doFilter(LocalizedResourceFilter.java:92) > > [classes:] > > [exec] at > > io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56) > > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30] > > [exec] at > > > io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) > > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30] > > [exec] at > > org.apache.wookie.server.MainFilter.doFilter(MainFilter.java:63) > [classes:] > > [exec] ... 29 more > >
