Hi,
We would like to integrate a TCP based transport protocol with CXF. One of the 
requirements is to use a connection pool in the transport layer so that it can 
reuse TCP connections. We found the following points where we could integrate 
with the CXF runtime:

1) by implementing the Conduit interface
2) by implementing ConduitSelector
3) by implementing ConduitInitiator

These were our considerations so far:
Implementing 1) has the disadvantage that we do not fully understand the 
semantics of the close() methods and the Conduit interface does not have a way 
of specifying the endpoint address (we would like both the option of getting 
the address from a wsdl file (setting it programmatically) and specifying it in 
config). Conduit seems to represent more like one connection in the transport 
layer.

By doing 2), we can set the endpoint address using setEndpoint() and we have 
complete() where we can put the connection back to the pool, but if we share it 
between multiple clients we can end up in a situation where setAddress(...) is 
called multiple times, which can potentially lead to threading issues, because 
selectConduit() and setAddress() are two separate methods. Is setAddress() 
meant for configuration time only?

As far as 3) is concerned, ConduitInitiator seems to be a singleton for a 
transport type in CXF, so we cannot inject different instances of 
ConduitInitiator into different clients.

Could you please advise on the right level to interact with CXF and the right 
place to put such a transport level connection pool?
Thanks,
Gyorgy
--------------------------------------------------------

NOTICE: If received in error, please destroy and notify sender. Sender does not 
intend to waive confidentiality or privilege. Use of this email is prohibited 
when received in error.

Reply via email to