[ 
https://issues.apache.org/jira/browse/CXF-2075?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12678047#action_12678047
 ] 

Sergey Beryozkin commented on CXF-2075:
---------------------------------------

> Do you know if it couldn't find a resource? Couldn't find a config file? 
> Couldn't find a class? etc....? 

It was probably 5/6 months ago when I applied this now infamous :-) retry. I 
belive it was about either classes or class resources being not found when run 
in OSGI. I honestly don't remember.

But I'd personally would not remove the second try before a Progress project 
which depends on CXF would run all the OSGI tests without it. Dan - perhaps 
creating a tailored ClassLoader would be a neat idea indeed - but it can also 
cause some OSGI issues as well as we might end up with some resources/classes 
being loaded by different loaders.

> This has a side affect of possibly causing objects to be instantiated twice

This is something we obviously do not want - but so far we haven't had any 
sideeffects - may be because it's now a dead code altogether which just kick in 
by swallowing an exception.

IMHO it would be good if a quick Progress-internal build could be setup without 
this second retry. If it works then this code can be just removed, If it does 
not then I'd start with what Seumas suggested - logging the original exception 
and opened a JIRA for exploring the possibility of creating a new class loader 
- the idea behind it does sound good - but it can be difficult to implement 
while working at the CXF/Fuse level only

> Error in spring config file reported as a missing config file during 
> initialization of BusApplicationContext
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: CXF-2075
>                 URL: https://issues.apache.org/jira/browse/CXF-2075
>             Project: CXF
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.1.4
>            Reporter: Seumas Soltysik
>
> The current code to create a Bus in SpringBusFactory masks any problem in 
> processing the spring config file passed in to SpringBusFactory. Currently if 
> a config file is corrupt, the exception thrown trying to process this file is 
> eaten and an attempt to create a Bus is tried again with a different thread 
> context classloader. This completely hides the source of the error and 
> results in a message which indicates that the config file could not be found 
> which is completely misleading for the user.
> The solution is to not perform the 2nd attempt to create a 
> BusApplicationContext and let the original exception propagate upwards.
>      private BusApplicationContext createApplicationContext(String 
> cfgFiles[], boolean includeDefaults) {
>         try {      
>             return new BusApplicationContext(cfgFiles, includeDefaults, 
> context);
>         } catch (BeansException ex) {
>             ClassLoader contextLoader = 
> Thread.currentThread().getContextClassLoader();
>             if (contextLoader != 
> BusApplicationContext.class.getClassLoader()) {
>                 Thread.currentThread().setContextClassLoader(
>                     BusApplicationContext.class.getClassLoader());
>                 try {
>                     return new BusApplicationContext(cfgFiles, 
> includeDefaults, context);        
>                 } finally {
>                     
> Thread.currentThread().setContextClassLoader(contextLoader);
>                 }
>             } else {
>                 throw ex;
>             }
>         }
>      }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to