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