[
https://issues.apache.org/jira/browse/CXF-1893?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12781630#action_12781630
]
Andreas Benneke commented on CXF-1893:
--------------------------------------
I just double checked that with version 2.2.2 the above workaround is still
working.
Starting from version 2.2.4 we however get the following exception:
Caused by: java.lang.IllegalStateException: Could not register object
[org.apache.cxf.bus.cxfbusi...@1aedfde] under bean name 'cxf': there is already
object [org.apache.cxf.bus.cxfbusi...@1aedfde] bound
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.registerSingleton(DefaultSingletonBeanRegistry.java:124)
at
org.apache.cxf.bus.spring.BusDefinitionParser$BusConfig.setApplicationContext(BusDefinitionParser.java:100)
at
org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:70)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:350)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1331)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
... 150 more
This happens with and without the above workaround.
> Endpoints end up at the wrong bus when initializing multiple busses in one
> thread
> ---------------------------------------------------------------------------------
>
> Key: CXF-1893
> URL: https://issues.apache.org/jira/browse/CXF-1893
> Project: CXF
> Issue Type: Bug
> Components: Bus, Core, JAX-WS Runtime
> Affects Versions: 2.1.3
> Reporter: Andreas Benneke
>
> We are using CXF on JBoss 4.2.3 and have an EAR with multiple WARs, each WAR
> having it's own cxf-bus and endpoint definition(s):
> <jaxws:endpoint
> id="endpointId"
> implementorClass="some.package.SomeClass"
> implementor="#theImplementorBean"
> wsdlLocation="service.wsdl"
> address="/service">
> <!-- NOTE: no bus="..." specified here! -->
> </jaxws:endpoint>
> Deploying this EAR in JBoss all endpoints end up on one single bus (the first
> one created) and all other busses are "empty".
> Looking into the code we found that the
> org.apache.cxf.jaxws.spring.EndpointDefinitionParser$SpringEndpointImpl
> resolves the bus (if none is injected so far) using
> BusFactory.getThreadDefaultBus(). This method however returns the first bus
> created on the current thread.
> As JBoss initializes the whole EAR in one thread the above situation occures.
> As a workaround/solution we added a bus="cxf" to all endpoints which avoids
> the resolution of the bus using the thread:
> <jaxws:endpoint
> bus="cxf" <!-- workaround -->
> id="endpointId"
> implementorClass="some.package.SomeClass"
> implementor="#TheImplementorBean"
> wsdlLocation="service.wsdl"
> address="/service">
> </jaxws:endpoint>
> We however think, that EndpointDefinitionParser$SpringEndpointImpl should try
> to resolve the bus using the current application context (by default name,
> type, whatever) and as a last fallback use the getThreadDefaultBus().
> Thanks!
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.