0

最近、Java マルチスレッド サーバー用のオープン ソース ライブラリhttp://www.quickserver.org/を見つけました。ClientCommandHandler を使用する最初の例の EchoServer は完璧に機能しました。ただし、文字列でのみ機能します。私の特定のアプリケーションでは、特別なカスタム オブジェクトを使用して、サーバーとクライアントの間でメッセージを交換したいと考えています。

私は次のことを試しました:

package server;

import java.io.IOException;

import org.quickserver.net.AppException;
import org.quickserver.net.server.DataMode;
import org.quickserver.net.server.DataType;
import org.quickserver.net.server.QuickServer;

public class TestServer {
      public static void main(String s[])  {
        QuickServer server = new QuickServer();
        try {
            server.setDefaultDataMode(DataMode.OBJECT, DataType.IN);
            server.setDefaultDataMode(DataMode.OBJECT, DataType.OUT);
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        server.setClientObjectHandler("server.ObjHandler");
        server.setPort(4123);
        server.setName("EchoServer v 1.0");
        try {
          server.startServer();
        } catch(AppException e){
          System.err.println("Error in server : "+e);
        }
      }
    }

...そして、これをオブジェクト ハンドラとして設定します...

package server;

import java.io.IOException;
import java.net.SocketTimeoutException;

import org.quickserver.net.server.ClientHandler;
import org.quickserver.net.server.ClientObjectHandler;

public class ObjHandler implements ClientObjectHandler {

    @Override
    public void handleObject(ClientHandler arg0, Object arg1)
            throws SocketTimeoutException, IOException {
        // TODO Auto-generated method stub

    }
}

したがって、私がこれでやろうとしていたことは、コマンド ハンドラーをオブジェクト ハンドラーに完全に置き換えることです。次のエラーが表示されます。

Loading QuickServer v2.0.0 RC1 [PID:2488]... Done
Mar 24, 2013 7:26:07 PM org.quickserver.net.server.QuickServer loadBusinessLogic
SEVERE: ClientCommandHandler AND ClientEventHandler was not set.
Mar 24, 2013 7:26:07 PM org.quickserver.net.server.QuickServer startServer
SEVERE: Exception: org.quickserver.net.AppException: ClientCommandHandler AND 
ClientEventHandler was not set.
org.quickserver.net.AppException: ClientCommandHandler AND ClientEventHandler was not set.
    at org.quickserver.net.server.QuickServer.loadBusinessLogic(QuickServer.java:3142)
    at org.quickserver.net.server.QuickServer.startServer(QuickServer.java:432)
    at server.TestServer.main(TestServer.java:24)
Error in server : org.quickserver.net.AppException: Exception :org.quickserver.net.AppException: ClientCommandHandler AND ClientEventHandler was not set.

だから私の質問。コマンド ハンドラーをまったく定義せずに、コマンド ハンドラーをオブジェクト ハンドラーに置き換えることは可能ですか? そうでない場合、オブジェクト ハンドラーを実装する適切な方法は何ですか?

4

1 に答える 1