Jump to content
Sign in to follow this  
stpeln

Several Instances Of The Same Application On A Terminal Server - Localhost Problem

Recommended Posts

Hi! Background:I am maintaining a Java application where I create a http server (using the class org.apache.http.protocol.HttpService). The http server creates a socket on port 6060. From an Ajax script executed in a browser on the same machine, a xmlhttp request is sent to localthost port 6060. The request is transmitted to the Java application and and response is sent, works fine. As long as the solution is executed on a client machine (desktop computer). The Java application executes in ONE instance since it is ONE machine with ONE user. The application is designed to handle requests from one user only. Problem:When the solution is executed on a terminal server (through Windows Remote Desktop Connection), each user will start a new instance of the Java application, that is if there are five users logged in the the terminal server, there will be five running instances of the Java application. The first started instance allocates port 6060 on localhost. But when the following instances tries to allocate port 6060 on localhost, it fails since it is already allocated by the first instance. I expected this to work, since I thought that each user on a terminal server executed in a own session with a memory and ports of its own, but obviously this is not the case. I have however heard that it should be possible to allocate a "virtual" port (i.e. unique for my session) instead of a machine physical port. Does anyone have a clue about how to solve this, I am in urgent need of advises... I insert parts of my Java code where I create the http server:

 ServerSocket mSocket = new ServerSocket( 6060);HttpParams mHttpParams = new SyncBasicHttpParams();mHttpParams        .setIntParameter(CoreConnectionPNames.SO_TIMEOUT, DEFAULT_TIMOUT )        .setIntParameter(CoreConnectionPNames.SOCKET_BUFFER_SIZE, DEFAULT_BUFFER_SIZE )        .setBooleanParameter(CoreConnectionPNames.STALE_CONNECTION_CHECK, false )        .setBooleanParameter(CoreConnectionPNames.TCP_NODELAY, true )        .setParameter(CoreProtocolPNames.ORIGIN_SERVER, "HttpComponents/1.1")        .setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, "UTF-8"); // Set up the HTTP protocol processorHttpProcessor httpproc = new ImmutableHttpProcessor(new HttpResponseInterceptor[] {                new ResponseDate(),                new ResponseServer(),                new ResponseContent(),                new ResponseConnControl()        }); // Set up request handlersHttpRequestHandlerRegistry reqistry = new HttpRequestHandlerRegistry();reqistry.register("*", new GadgetRequestHandler( mGadgetIntegrator ));        // Set up the HTTP HttpService mService = new HttpService(httpproc, new DefaultConnectionReuseStrategy(), new DefaultHttpResponseFactory(),reqistry,mHttpParams);

Thanks!

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...