You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2014/12/10 15:22:23 UTC
svn commit: r1644422 -
/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/DuccHttpClient.java
Author: cwiklik
Date: Wed Dec 10 14:22:22 2014
New Revision: 1644422
URL: http://svn.apache.org/r1644422
Log:
UIMA-4057 Added retry when send fails
Modified:
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/DuccHttpClient.java
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/DuccHttpClient.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/DuccHttpClient.java?rev=1644422&r1=1644421&r2=1644422&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/DuccHttpClient.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/DuccHttpClient.java Wed Dec 10 14:22:22 2014
@@ -90,7 +90,6 @@ public class DuccHttpClient {
host = new HttpHost(url, port);
coreContext.setTargetHost(host);
connPool = new BasicConnPool();
-
connStrategy = new DefaultConnectionReuseStrategy();//DefaultConnectionReuseStrategy.INSTANCE;
pid = getProcessIP("N/A");
nodeIdentity = new NodeIdentity();
@@ -166,48 +165,67 @@ public class DuccHttpClient {
}
private IMetaCasTransaction execute( BasicHttpEntityEnclosingRequest request, IMetaCasTransaction transaction ) throws Exception {
BasicPoolEntry poolEntry=null;
- try {
- // Get the connection from the pool
- Future<BasicPoolEntry> future = connPool.lease(host, null);
- poolEntry = future.get();
-
- HttpClientConnection conn = poolEntry.getConnection();
- coreContext.setAttribute(HttpCoreContext.HTTP_CONNECTION, conn);
- coreContext.setAttribute(HttpCoreContext.HTTP_TARGET_HOST, host);
-
- conn.setSocketTimeout(10000);
- System.out.println(">> Request URI: " + request.getRequestLine().getUri());
- // request.
-
- request.setHeader("content-type", "text/xml");
- String body = XStreamUtils.marshall(transaction);
- HttpEntity entity = new StringEntity(body);
-
- request.setEntity(entity);
-
- httpexecutor.preProcess(request, httpproc, coreContext);
- HttpResponse response = httpexecutor.execute(request, conn, coreContext);
- httpexecutor.postProcess(response, httpproc, coreContext);
-
- if ( response.getStatusLine().getStatusCode() != 200) {
- System.out.println("Unable to Communicate with JD - Error:"+response.getStatusLine());
- throw new RuntimeException("JP Http Client Unable to Communicate with JD - Error:"+response.getStatusLine());
+ int retry = 2;
+ Exception lastError = null;
+ IMetaCasTransaction reply=null;
+ while( retry-- > 0 ) {
+ try {
+ // Get the connection from the pool
+ Future<BasicPoolEntry> future = connPool.lease(host, null);
+ poolEntry = future.get();
+
+ HttpClientConnection conn = poolEntry.getConnection();
+ coreContext.setAttribute(HttpCoreContext.HTTP_CONNECTION, conn);
+ coreContext.setAttribute(HttpCoreContext.HTTP_TARGET_HOST, host);
+
+ conn.setSocketTimeout(10000);
+ System.out.println(">> Request URI: " + request.getRequestLine().getUri());
+ // request.
+
+ request.setHeader("content-type", "text/xml");
+ String body = XStreamUtils.marshall(transaction);
+ HttpEntity entity = new StringEntity(body);
+
+ request.setEntity(entity);
+
+ httpexecutor.preProcess(request, httpproc, coreContext);
+ HttpResponse response = httpexecutor.execute(request, conn, coreContext);
+ httpexecutor.postProcess(response, httpproc, coreContext);
+
+ if ( response.getStatusLine().getStatusCode() != 200) {
+ System.out.println("Unable to Communicate with JD - Error:"+response.getStatusLine());
+ throw new RuntimeException("JP Http Client Unable to Communicate with JD - Error:"+response.getStatusLine());
+ }
+ System.out.println("<< Response: "
+ + response.getStatusLine());
+ String responseData = EntityUtils.toString(response.getEntity());
+ System.out.println(responseData);
+ Object o = XStreamUtils.unmarshall(responseData);
+ if ( o instanceof IMetaCasTransaction) {
+ reply = (MetaCasTransaction)o;
+ break;
+ } else {
+ throw new InvalidClassException("Expected IMetaCasTransaction - Instead Received "+o.getClass().getName());
+ }
+ } catch( Exception t) {
+ lastError = t;
}
- System.out.println("<< Response: "
- + response.getStatusLine());
- String responseData = EntityUtils.toString(response.getEntity());
- System.out.println(responseData);
- Object o = XStreamUtils.unmarshall(responseData);
- if ( o instanceof IMetaCasTransaction) {
- return (MetaCasTransaction)o;
- } else {
- throw new InvalidClassException("Expected IMetaCasTransaction - Instead Received "+o.getClass().getName());
+ finally {
+ System.out.println("==============");
+ connPool.release(poolEntry, true);
}
- } finally {
- System.out.println("==============");
- connPool.release(poolEntry, true);
+
}
+ if ( reply != null ) {
+ return reply;
+ } else {
+ if ( lastError != null ){
+ throw lastError;
+ } else {
+ throw new RuntimeException("Shouldn't happen ");
+ }
+ }
}
}
\ No newline at end of file