[
https://issues.apache.org/jira/browse/CXF-2558?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Kulp reassigned CXF-2558:
--------------------------------
Assignee: Daniel Kulp
> 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
> Assignee: Daniel Kulp
> 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.