JAX-RS 2.0 API does not work with a CXF specific failover feature,
definitely not something I've had a chance to look into.
We'd need to create a JAX-RS 2.0 Feature wrapper but what is the point
of such a JAX-RS Feature can not be portable.
Consider using WebClient with FailoverFeature.
Sergey
On 10/02/16 21:57, [hidden email]
<http:///user/SendEmail.jtp?type=node&node=5765816&i=0> wrote:
I had tried some heavy exploration on enabling Failover feature, as per
documentation provided by Apache CXF. While the one for SOAP client
works
like a charm, the other one for REST client is not so with the way I am
trying to instantiate the client. My requirement of instantiating the
REST
client is via JAXRS 2.0.1 API, as shown in following sample code.NOTE :
The
following endpoint URL is a valid one, except that the port number has
been
switched from 8080 (working one) to 8081 (non-working one), since I need
to
simulate the invocation failure retry behavior.Client client =
ClientBuilder.newClient(); WebTarget target =
client.target("http://localhost:8081/my-app/ws/ers/customers");
Invocation.Builder builder =
target.request(MediaType.APPLICATION_JSON_TYPE); Response response =
builder.get();I have found that the Failover feature is not working when
the
above last line of code is invoked.Now, here comes the interesting part.
I
have found only 2 classes in cxf-rt-rs-client-3.1.0-sources.jar where
the
initialization of Failover feature in a
org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean instance happens. And
my
requirement is to have one of these methods (or, a similar one where
bean.setFeatures(features) is invoked ) being called.Method in
org.apache.cxf.jaxrs.client.JAXRSClientFactory class.public static T
create(String baseAddress, Class cls, List<?>
providers, List features,
String configLocation) { JAXRSClientFactoryBean bean =
getBean(baseAddress, cls, configLocation);
bean.setProviders(providers);
bean.setFeatures(features); return bean.create(cls);}Method in
org.apache.cxf.jaxrs.client.WebClient class.public static WebClient
create(String baseAddress, List<?> providers,
List<? extends Feature> features, String
configLocation) { JAXRSClientFactoryBean bean = getBean(baseAddress,
configLocation); bean.setProviders(providers);
bean.setFeatures(features); return bean.createWebClient();}However,
when
my custom client code above is executed, neither of the above 2 methods
have
been invoked. Instead, the following method in
org.apache.cxf.jaxrs.client.spec.ClientImpl is invoked.private void
initTargetClientIfNeeded() { URI uri = this.uriBuilder.build(new
Object[0]); if(this.targetClient == null) {
JAXRSClientFactoryBean
bean = new JAXRSClientFactoryBean();
bean.setAddress(uri.toString());
this.targetClient = bean.createWebClient();
ClientImpl.this.baseClients.add(this.targetClient); } else
if(!this.targetClient.getCurrentURI().equals(uri)) {
this.targetClient.to(uri.toString(), false); } }Does this imply that
Failover Feature is NOT supported for CXF version 3.1.0 ?If so, which
upcoming version of CXF will support my above requirement ?
--
View this message in context:
http://cxf.547215.n5.nabble.com/No-support-for-FailoverFeature-in-CXF-Rest-Client-implementation-version-3-1-0-tp5765813.html
Sent from the cxf-user mailing list archive at Nabble.com.
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/
------------------------------
If you reply to this email, your message will be added to the discussion
below:
http://cxf.547215.n5.nabble.com/No-support-for-FailoverFeature-in-CXF-Rest-Client-implementation-version-3-1-0-tp5765813p5765816.html
To unsubscribe from No support for FailoverFeature in CXF Rest Client
implementation (version 3.1.0), click here
<http://cxf.547215.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=5765813&code=cmFuYWRlZXAuc2hhcm1hQGdtYWlsLmNvbXw1NzY1ODEzfC0xOTAyNzcwMDYz>
.
NAML
<http://cxf.547215.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>