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.
