[jboss-user] [Installation, Configuration & DEPLOYMENT] - Re: ClassCastException due to Xerces conflict during app dep

rodos77 do-not-reply at jboss.com
Wed Aug 19 12:43:05 EDT 2009


Ok, I've created 2 patches for swapping out the context classloader. One for a class in the jbossweb project and one for a class in the JBossXB project. Either patch, when applied to the corresponding project, resolves the issue. You can now decide in which project it is more appropriate to fix this issue and apply the patch to the corresponding source repository to resolve this once and for all.

JBossXB patch:

  | *** orig\org\jboss\xb\binding\UnmarshallerFactory.java	2009-04-19 20:18:06.000000000 -0400
  | --- new\org\jboss\xb\binding\UnmarshallerFactory.java	2009-08-19 12:13:34.345631600 -0400
  | ***************
  | *** 90,95 ****
  | --- 90,98 ----
  |      {
  |         public Unmarshaller newUnmarshaller()
  |         {
  | +          ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
  | +          Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
  | +          
  |            UnmarshallerImpl unmarshaller;
  |            try
  |            {
  | ***************
  | *** 99,104 ****
  | --- 102,111 ----
  |            {
  |               throw new JBossXBRuntimeException(e.getMessage(), e);
  |            }
  | +          finally
  | +          {
  | +             Thread.currentThread().setContextClassLoader(oldCl);
  | +          }
  |   
  |            JBossXBParser parser = unmarshaller.getParser();
  |            if(validation != null)
  | 

jbossweb patch:

  | *** orig\org\jboss\web\tomcat\service\deployers\JBossContextConfig.java	2009-05-22 09:10:46.00000000
  | 0 -0400
  | --- new\org\jboss\web\tomcat\service\deployers\JBossContextConfig.java	2009-08-19 12:32:46.517506600
  |  -0400
  | ***************
  | *** 542,547 ****
  | --- 542,550 ----
  |   
  |      protected void processContextConfig(String resourceName, boolean local)
  |      {
  | +       ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
  | +       Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
  | +       
  |         ContextMetaData contextMetaData = null;
  |         try
  |         {
  | ***************
  | *** 593,598 ****
  | --- 596,605 ----
  |            ok = false;
  |            return;
  |         }
  | +       finally
  | +       {
  | +          Thread.currentThread().setContextClassLoader(oldCl);
  | +       }
  |   
  |         if (contextMetaData != null)
  |         {
  | 

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4250448#4250448

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4250448



More information about the jboss-user mailing list