Hi
I've looked at a CXF JAX-RS Failover test - all the tests use GET, hmm...
Are you saying that when the initial call is made, doChainedInvocation
contains Content-Type but when doChainedInvocation is called by
retryInvoke, Content-Type is no longer in the request headers ?
Cheers, Sergey
On 23/10/15 17:28, sreeharsha wrote:
hi Sergey,
I am trying to implement the failover to our rest services which take
the
header content-type Multipart/formdata.
I have noticed that when I call *Invoke *in ClientProxyImpl.java , the
headers are set from the OperationResourceInfo . After I implement the
failover retry strategy then when the method *retryInvoke * is called
then
the previous headers which has Content-type and Accept is now changed to
have just Accept and omitting the Content-Type and hence throwing a
null
pointer at
org.apache.cxf.jaxrs.client.ClientProxyImpl$BodyWriter.doWriteBody(ClientProxyImpl.java:801).
CODE SNIPPET.
InputStream excelInputStream =
TestUploadFileService.class.getResourceAsStream(TEST_FILE);
// File spreadsheetURI = new File(url.toURI());
// excelInputStream = new FileInputStream(spreadsheetURI);
final ContentDisposition cd = new
ContentDisposition("attachment;filename=spreadsheet.xls");
final Attachment att = new Attachment("file",
excelInputStream,
cd);
final Attachment spreadsheetType = new
Attachment("spreadsheetType", "text/plain", "SpreadJS");
final List<Attachment> attachments = new
ArrayList<Attachment>();
attachments.add(att);
attachments.add(spreadsheetType);
final MultipartBody multipartBody = new
MultipartBody(attachments);
FailoverFeature feature = new FailoverFeature();
List<String> alternateAddresses = new ArrayList<String>();
alternateAddresses.add("
http://localhost:8084/SpreadsheetTransformationService");
alternateAddresses.add("
http://icdwdpvueweb-5:8080/SpreadsheetTransformationService");
RetryStrategy strategy = new RetryStrategy();
strategy.setMaxNumberOfRetries(4);
strategy.setAlternateAddresses(alternateAddresses);
strategy.setDelayBetweenRetries(5000);
feature.setStrategy(strategy);
List<Feature> features = new ArrayList<Feature>();
features.add(feature);
List<String> prov = new ArrayList<String>();
String spreadsheetTransformServiceUrl =
"http://localhost:8085/SpreadsheetTransformationService";
JAXRSClientFactoryBean bean = new JAXRSClientFactoryBean();
bean.setAddress(spreadsheetTransformServiceUrl);
bean.setFeatures(features);
bean.setResourceClass(SpreadSheetTransformService.class);
WebClient client1 = bean.createWebClient();
client1.back(true).path("
http://localhost:8084/SpreadsheetTransformationService/import");
final SpreadSheetTransformService service1 =
bean.create(SpreadSheetTransformService.class);
final Response response =
service1.transformToJSON(multipartBody);
final InputStream jsonResponse = (InputStream)
response.getEntity();
setRequestHeaders is the method being called in invoke to set the
content
type.
Idea regarding the retry is right but i think there is bug in forwarding
the
headers from the first call to the retry alternate address on failure.
Appreciate your help.
Thanks,
Sree
--
View this message in context:
http://cxf.547215.n5.nabble.com/Failover-for-JAX-RS-clients-tp4494783p5762219.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/Failover-for-JAX-RS-clients-tp4494783p5762318.html
To unsubscribe from Failover for JAX-RS clients, click here
<http://cxf.547215.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4494783&code=c3JlZWhhcnNoYS5wYW5ndWx1cmlAcGVhcnNvbi5jb218NDQ5NDc4M3wxODk3NDIyNzAy>
.
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>