1

同時に 100 のスレッドを介して API からリソースを要求しようとすると (単純なパフォーマンス テストです)、次のサーバー エラー メッセージが表示されます。

Unable to run the following server-side task: Handle inbound messages

私はすでにインターネットを検索しましたが、それを取り除く方法のヒントを見つけることができませんでした.

そのエラーを処理する方法はありますか?

ごあいさつ、料理人

編集

クライアント:

public class PerformanceTest  extends Thread {
static ClientResource client;
static int recCounter = 0;
public PerformanceTest(){
    super();
}
public static void main(String[] args){
    client = new ClientResource("http://localhost:8082/api/module/news/1");
    ChallengeScheme scheme = ChallengeScheme.HTTP_BASIC;
    ChallengeResponse authentication = new ChallengeResponse(scheme, "app+postapp", "");
    client.setChallengeResponse(authentication);    
    for(int i = 0; i < 100; i++){
        System.out.println("Starting test: " + i);
         new PerformanceTest().start();
    }
}

@Override
public void run() {
    JsonRepresentation entity;
    try {
        entity = new JsonRepresentation(client.get());
        recCounter++;
        System.out.println("(" + getRecCounter() + ") result: " + entity.getJsonObject().toString());
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

private synchronized int getRecCounter(){
    return recCounter;
}

サーバー: これは、サーバーを起動するアプリケーション クラスです。

public class MyApplication extends Application {
private DB db;

public MyApplication() {
    db = new DB();
}

public static void main(String[] args) throws Exception {
    Component component = new Component();
    component.getServers().add(Protocol.HTTP, 8082);
    Application application = new MyApplication();
    // Attach the application to the component with a defined contextroot
    String contextRoot = "/api";
    component.getDefaultHost().attach(contextRoot, application);
    component.start();
}

public Restlet createInboundRoot() {
    router.attach("/module/news", NewsResource.class);
    router.attach("/module/news/{itemId}", NewsResource.class);

    router.attach("/module/news/item", NewsResource.class);
    router.attach("/module/news/item/{itemId}", NewsResource.class);

    // Create Verifier
    CredentialsVerifier verifier = new CredentialsVerifier(getDB());

    // Create a Guard
    ChallengeAuthenticator guard = new ChallengeAuthenticator(getContext(), ChallengeScheme.HTTP_BASIC, "app");
    guard.setVerifier(verifier);

    guard.setNext(router);
    return guard;
}

public synchronized DB getDB() {
    return this.db;
}

}

4

0 に答える 0