[ 
https://issues.apache.org/jira/browse/CXF-2558?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dennis Kieselhorst updated CXF-2558:
------------------------------------

    Priority: Critical  (was: Blocker)

Reduced priority.

> ClientProxyFactoryBeanDefinitionParser is called multiple times
> ---------------------------------------------------------------
>
>                 Key: CXF-2558
>                 URL: https://issues.apache.org/jira/browse/CXF-2558
>             Project: CXF
>          Issue Type: Bug
>          Components: Simple Frontend
>    Affects Versions: 2.2.5
>         Environment: Spring 2.5.6
>            Reporter: Dennis Kieselhorst
>            Priority: Critical
>
> In some cases we're using the ContextSingletonBeanFactoryLocator to obtain a 
> cxf client from a non spring bean (cp. Spring's section about "Glue code and 
> the evil singleton"). For example:
> BeanFactory bf = 
> ContextSingletonBeanFactoryLocator.getInstance().useBeanFactory("cssBeanFactory").getFactory();
> final AccountService accountService = (AccountService) 
> bf.getBean("accountService", AccountService.class);
> With 2.2.3 this was no problem...the proxies were only created once at 
> startup (no further call, when bf.getBean is called):
>       ReflectionServiceFactoryBean.buildServiceFromClass() line: 351  
>       ReflectionServiceFactoryBean.initializeServiceModel() line: 444 
>       ReflectionServiceFactoryBean.create() line: 195 
>       ClientFactoryBean(AbstractWSDLBasedEndpointFactory).createEndpoint() 
> line: 100  
>       ClientFactoryBean.create() line: 52     
>       
> ClientProxyFactoryBeanDefinitionParser$SpringClientProxyFactoryBean(ClientProxyFactoryBean).create()
>  line: 102  
>       NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not 
> available [native method]  
>       NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39      
>       DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25  
>       Method.invoke(Object, Object...) line: 597      
>       
> CglibSubclassingInstantiationStrategy(SimpleInstantiationStrategy).instantiate(RootBeanDefinition,
>  String, BeanFactory, Object, Method, Object[]) line: 115     
>       ConstructorResolver.instantiateUsingFactoryMethod(String, 
> RootBeanDefinition, Object[]) line: 435       
>       
> DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).instantiateUsingFactoryMethod(String,
>  RootBeanDefinition, Object[]) line: 903    
>       
> DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String,
>  RootBeanDefinition, Object[]) line: 817       
>       
> DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String,
>  RootBeanDefinition, Object[]) line: 440     
>       AbstractAutowireCapableBeanFactory$1.run() line: 409    
>       AccessController.doPrivileged(PrivilegedAction<T>, 
> AccessControlContext) line: not available [native method]    
>       
> DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String,
>  RootBeanDefinition, Object[]) line: 380       
>       AbstractBeanFactory$1.getObject() line: 264     
>       
> DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, 
> ObjectFactory) line: 222  
>       DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, 
> Class, Object[], boolean) line: 261   
>       DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, 
> Object[]) line: 185      
>       DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 
> 164       
>       DefaultListableBeanFactory.preInstantiateSingletons() line: 429 
>       
> ClassPathXmlApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory)
>  line: 728   
>       ClassPathXmlApplicationContext(AbstractApplicationContext).refresh() 
> line: 380  
>       ClassPathXmlApplicationContext.<init>(String[], boolean, 
> ApplicationContext) line: 139  
>       ClassPathXmlApplicationContext.<init>(String[]) line: 93        
>       NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: 
> not available [native method]   
>       NativeConstructorAccessorImpl.newInstance(Object[]) line: 39    
>       DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 27        
>       Constructor<T>.newInstance(Object...) line: 513 
>       BeanUtils.instantiateClass(Constructor, Object[]) line: 100     
>       
> CglibSubclassingInstantiationStrategy(SimpleInstantiationStrategy).instantiate(RootBeanDefinition,
>  String, BeanFactory, Constructor, Object[]) line: 87 
>       ConstructorResolver.autowireConstructor(String, RootBeanDefinition, 
> Constructor[], Object[]) line: 248  
>       
> DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).autowireConstructor(String,
>  RootBeanDefinition, Constructor[], Object[]) line: 925       
>       
> DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String,
>  RootBeanDefinition, Object[]) line: 835       
>       
> DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String,
>  RootBeanDefinition, Object[]) line: 440     
>       AbstractAutowireCapableBeanFactory$1.run() line: 409    
>       AccessController.doPrivileged(PrivilegedAction<T>, 
> AccessControlContext) line: not available [native method]    
>       
> DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String,
>  RootBeanDefinition, Object[]) line: 380       
>       AbstractBeanFactory$1.getObject() line: 264     
>       
> DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, 
> ObjectFactory) line: 222  
>       DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, 
> Class, Object[], boolean) line: 261   
>       DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, 
> Object[]) line: 185      
>       DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class) 
> line: 168        
>       
> ClassPathXmlApplicationContext(AbstractApplicationContext).getBean(String, 
> Class) line: 884     
>       
> ContextSingletonBeanFactoryLocator(SingletonBeanFactoryLocator).useBeanFactory(String)
>  line: 397        
>       ContextLoader.loadParentContext(ServletContext) line: 341       
>       ContextLoader.initWebApplicationContext(ServletContext) line: 195       
>       ContextLoaderListener.contextInitialized(ServletContextEvent) line: 45  
> With 2.2.5 there is no call at startup time, but each time bf.getBean is 
> called 
>       ReflectionServiceFactoryBean.buildServiceFromClass() line: 432  
>       ReflectionServiceFactoryBean.initializeServiceModel() line: 523 
>       ReflectionServiceFactoryBean.create() line: 271 
>       ClientFactoryBean(AbstractWSDLBasedEndpointFactory).createEndpoint() 
> line: 100  
>       ClientFactoryBean.create() line: 51     
>       
> ClientProxyFactoryBeanDefinitionParser$SpringClientProxyFactoryBean(ClientProxyFactoryBean).create()
>  line: 102  
>       
> ClientProxyFactoryBeanDefinitionParser$SpringClientProxyFactoryBean.getObject()
>  line: 111       
>       FactoryBeanRegistrySupport$1.run() line: 121    
>       AccessController.doPrivileged(PrivilegedAction<T>, 
> AccessControlContext) line: not available [native method]    
>       
> DefaultListableBeanFactory(FactoryBeanRegistrySupport).doGetObjectFromFactoryBean(FactoryBean,
>  String, boolean) line: 116       
>       
> DefaultListableBeanFactory(FactoryBeanRegistrySupport).getObjectFromFactoryBean(FactoryBean,
>  String, boolean) line: 98  
>       
> DefaultListableBeanFactory(AbstractBeanFactory).getObjectForBeanInstance(Object,
>  String, String, RootBeanDefinition) line: 1288 
>       DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, 
> Class, Object[], boolean) line: 217   
>       DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, 
> Object[]) line: 185      
>       DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class) 
> line: 168        
>       
> ClassPathXmlApplicationContext(AbstractApplicationContext).getBean(String, 
> Class) line: 884     
> After some time this leads to a OutOfMemoryError:
> org.springframework.beans.factory.BeanCreationException: Error creating bean 
> with name 'accountService': FactoryBean threw exception on
>  object creation; nested exception is java.lang.OutOfMemoryError: Java heap 
> space

-- 
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