質問

ive got the following code as kind of a hello world test for restlet

public static void main(String[] args) throws Exception {
    //Find a way to get these from the ARGS...
    Settings.setCurrent(new Settings());

    // Create a new Restlet component and add a HTTP server connector to it  

component.getServers().add(Protocol.HTTP, 8182);

    component.getContext().getParameters().add("maxThreads", "512");
component.getContext().getParameters().add("minThreads", "100");

component.getDefaultHost().attach("/findMissingPackages", Jeblet.class);

    // Now, let's start the component!  
// Note that the HTTP server connector is also automatically started.  
component.start();
}

@Get
public String toString() {
  try {
  Thread.sleep(10000);
  }
  catch(Exception ex) { }
  String settingString = "stuff";
  return settingString;
}

The problem I'm having is if I open two tabs in chrome and access the server twice in a row it takes 20 seconds to get a response on the second tab. This should take 10 seconds for both tabs.

when I debug I only have one dispatcher. how do I tell restlet that I would like more than one thread?

役に立ちましたか?

解決

Opening a new browser tab (or window) is not the same as opening a new connection. Browsers are really good at re-using already open connections and the 20 seconds delay is evidence of that. You can verify this by printing out the remote IP + port in your server, it will be the same for both requests.

In Firefox you can force a new connection by pressing ctrl+F5, Chrome probably has a similar feature. But you could also write a little (multi-threaded) client program that does the get-request: it is not that difficult to write and will come in handy when you need to test/debug other features of your server.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top