[jbossseam-issues] [JBoss JIRA] Commented: (JBSEAM-4316) Classloader cannot find XML files in multiple WARs

Reind D (JIRA) jira-events at lists.jboss.org
Tue Jul 21 12:38:29 EDT 2009


    [ https://jira.jboss.org/jira/browse/JBSEAM-4316?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12477044#action_12477044 ] 

Reind D commented on JBSEAM-4316:
---------------------------------

Above that should say the *1st* webapp to be initialized will have a reference to the *second webapp's* webapp's ServletContext.

After trying Stuarts patch to JBSEAM-3849, FileDescriptor's constructor now calls into:

ServletLifecycle:

   public static ServletContext getCurrentServletContext()
   {
      if (!Contexts.isApplicationContextActive())
      {
         return servletContext;
      }
      return (ServletContext) Contexts.getApplicationContext().get(SERVLET_CONTEXT_KEY);
   }

But the following conditional evaluates to true and the static servletContext is still returned.
      if (!Contexts.isApplicationContextActive())


In fact, Contexts.isApplicationContextActive() only returns true while the server is booting. At any other point, during every web request, it always returns false, and the getCurrentServletContext() ends up returning the static servletContext reference.

The 2nd webapp works fine, the first is obviously broken.

> Classloader cannot find XML files in multiple WARs
> --------------------------------------------------
>
>                 Key: JBSEAM-4316
>                 URL: https://jira.jboss.org/jira/browse/JBSEAM-4316
>             Project: Seam
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.2.0.CR1
>         Environment: JBoss AS 5.0.0.GA. Seam 2.2 r11299
>            Reporter: Reind D
>
> I have an EAR that contains multiple WAR files. The first webapp to be accessed works fine. Any web request to the 2nd WAR to be accessed causes the following error:
> WARN [VFSScanner] Error handling item 'login/index.page.xml': java.lang.NullPointerException: Cannot find URL from classLoader for login/index.page.xml, loading from org.jboss.web.tomcat.service.WebCtxLoader$ENCLoader at 1ed964f 
> FileDescriptor.java calls:
>    Resources.getResource(name, ServletLifecycle.getServletContext());
> Which returns a static reference to the ServletContext which is overwritten by the last webapp to be initialized.
>    private static ServletContext servletContext;
>    public static ServletContext getServletContext()
>    {
>       //don't throw an exception if null, because of unit tests
>       return servletContext;
>    }
> The 2nd webapp to be initialized will have a reference to the first webapp's ServletContext.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the seam-issues mailing list