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 2018/07/12 19:41:49 UTC

svn commit: r1835771 - /uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/sd/task/transport/HttpTaskTransportHandler.java

Author: cwiklik
Date: Thu Jul 12 19:41:49 2018
New Revision: 1835771

URL: http://svn.apache.org/viewvc?rev=1835771&view=rev
Log:
UIMA-5817 modified to use ephemeral port for jetty 

Modified:
    uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/sd/task/transport/HttpTaskTransportHandler.java

Modified: uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/sd/task/transport/HttpTaskTransportHandler.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/sd/task/transport/HttpTaskTransportHandler.java?rev=1835771&r1=1835770&r2=1835771&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/sd/task/transport/HttpTaskTransportHandler.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/sd/task/transport/HttpTaskTransportHandler.java Thu Jul 12 19:41:49 2018
@@ -21,6 +21,7 @@ package org.apache.uima.ducc.ps.sd.task.
 
 import java.io.BufferedReader;
 import java.io.IOException;
+import java.net.ServerSocket;
 import java.util.Properties;
 
 import javax.servlet.ServletException;
@@ -119,12 +120,33 @@ public class HttpTaskTransportHandler im
 		return server;
 	}
 
+	public int findFreePort() {
+	    ServerSocket socket = null;
+	    int port = 0;
+	    try {
+	      //  by passing 0 as an arg, let ServerSocket choose an arbitrary
+	      //  port that is available.
+	      socket = new ServerSocket(0);
+	      port = socket.getLocalPort();
+	    } catch (IOException e) {
+	    } finally { 
+	      try {
+	        // Clean up
+	        if (socket != null) {
+	          socket.close(); 
+	        } 
+	      } catch( Exception ex) {
+	    	  ex.printStackTrace();
+	      }
+	    }
+	    return port;
+	  }
 	@Override
 	public String initialize(Properties properties) throws TaskTransportException {
 		// TODO Auto-generated method stub
 		// Max cores
     int cores = Runtime.getRuntime().availableProcessors();
-    String portString = (String) properties.get(ServiceDriver.Port);
+//    String portString = (String) properties.get(ServiceDriver.Port);
     String maxThreadsString = (String) properties.get(ServiceDriver.MaxThreads);
     String appName = (String) properties.get(ServiceDriver.Application);
 
@@ -142,14 +164,16 @@ public class HttpTaskTransportHandler im
 			// "Invalid value for jetty MaxThreads("+threadPool.getMaxThreads()+") - it should be greater or equal to "+cores+". Defaulting to Number of CPU Cores="+cores);
 			maxThreads = cores;
 		}
-		if (portString != null) {
-			try {
-				httpPort = Integer.parseInt(portString.trim());
-			} catch (NumberFormatException e) {
-				logger.log(Level.WARNING,"Error",e);
-				throw new TaskTransportException("Unable to start Server using provided port:"+httpPort);
-			}
-		}
+//		if (portString != null) {
+//			try {
+//				httpPort = Integer.parseInt(portString.trim());
+//			} catch (NumberFormatException e) {
+//				logger.log(Level.WARNING,"Error",e);
+//				throw new TaskTransportException("Unable to start Server using provided port:"+httpPort);
+//			}
+//		}
+		// get ephemeral port for Jetty
+		httpPort = findFreePort();
 		if (appName == null) {
 		  appName = "test";
 		  logger.log(Level.WARNING, "The "+ServiceDriver.Application+" property is not specified - using "+appName);
@@ -167,7 +191,7 @@ public class HttpTaskTransportHandler im
       taskUrl = taskUrl.substring(0, taskUrl.length() - 1);
     }
     taskUrl += ":" + httpPort + "/" + appName;
-    logger.log(Level.INFO, "Service Driver URL: " + taskUrl); // e.g. http://localhost:8888/test");
+    logger.log(Level.INFO, "Service Driver URL: " + taskUrl); 
     
     return taskUrl;
 	}