1

Java でクライアント サーバー チャット プログラムをプログラミングすると、BAD_PARAM エラーが発生します。最初のコード セグメントはサーバーです。

//Server.java

try {

        ORB orb = ORB.init(args, null);
        POA poa = POAHelper.narrow(orb
                .resolve_initial_references("RootPOA"));
        poa.the_POAManager().activate();

        ServerImpl s = new ServerImpl(port);
        System.out.println(port);
        org.omg.CORBA.Object obj = poa.servant_to_reference(s);
        Server r = ServerHelper.narrow(obj);

        // get reference to root naming context
        org.omg.CORBA.Object ns = orb
                .resolve_initial_references("NameService");
        NamingContextExt nc = NamingContextExtHelper.narrow(ns);

        // bind the Object Reference in Naming
        String name = "Chat";
        NameComponent path[] = nc.to_name(name);
        nc.rebind(path, r);


        System.out.println("Waiting for clients ... ");
        orb.run();

    } catch (Exception e) {
        e.printStackTrace();
    }

そして、これは私のクライアント側です

//Client.java
try {
        ORB orb = ORB.init(args, null);

        // get reference to root naming context
        org.omg.CORBA.Object ns = orb
                .resolve_initial_references("NameService");
        NamingContextExt nc = NamingContextExtHelper.narrow(ns);

        // lookup name
        String name = "Chat";
        org.omg.CORBA.Object obj = nc.resolve_str(name);
        Client c = ClientHelper.narrow(obj);

    } catch (Exception e) {
        //System.err.println(e.getMessage());
        e.printStackTrace();
    }

orbd と Server.java は既に開始しています。クライアント以外はすべて良好です。エラーは org.omg.BAD_PARAM vmcid 0x0 minor code: 0 completed: No であり、行 Client c = ClientHelper.narrow(obj); で発生します。

私はこのバグに3日間苦労しています。それを修正するための提案はありますか?ありがとう、私はあなたの助けに本当に感謝しています!

4

1 に答える 1

1

Server問題は、サーバー コード内でオブジェクトをネーム サービスにバインドしているのに、クライアント コードがそれをClient型に絞り込もうとすることです。これらのタイプは互換性がありません。

代わりにこれを行うようにクライアント コードを変更します。

Server s = ServerHelper.narrow(obj);

クライアントとサーバー用に 2 つの個別の IDL インターフェイスは必要ありません。サーバーが実装するものを作成し、クライアントにそれを呼び出させるだけです。

于 2013-10-18T13:41:28.780 に答える