1

私の質問は、通行料によく似たプロジェクトに取り組んでいるということです。クライアントは最初のサーバーに ID を送信します。このサーバーは、クライアントになってから 2 番目のサーバーに接続し、プロセスを介して車が通過するかどうかを返します。現在、CORBA で問題が発生しています (プロジェクトは最初に正常に動作する RMI で作成されました) が、1 番目のサーバーから 2 番目のサーバーへの接続に問題があります。XXXClient -ORBInitialPort 1999 となるクライアントを実行する場合とは異なり、ORB を別の方法で初期化する必要があると言われました。最初のサーバーには正常に接続できますが、2 番目のサーバーには何も到達しません。最終的にクライアントになるサーバーのコードは次のとおりです

import PROApp.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
import org.omg.PortableServer.*;
import org.omg.PortableServer.POA;

import java.util.Properties;

class PROImpl extends PROPOA {
private ORB orb;

public void setORB(ORB orb_val) {
 orb = orb_val; 
  }

  // implement sayHello() method
  public String check1(int number) 
  {
    try{
        if(number > 0 && number <8000) 
        {
            String serverReply2 = "parta";
            serverReply2 = proCarImpl.check2(number);
            System.out.println(serverReply2);
            if(serverReply2.equals("ACK"))
            {
                return "You shall pass";
            }
        else if(serverReply2.equals("NACK"))
            {
                return "You shall not pass, not enought credits";
            }
        else
            {
                return "You're probably not on the list or something went wrong";
            }
    }
    else
     {
        return "Wrong ID number";
     }
     }
     catch (Exception e)
        {
            System.out.println("PROServer is not bound in rmiregistry... Exception:" + e);
        }return "ooups";
  }

  // implement shutdown() method
  public void shutdown() {
    orb.shutdown(false);
  }
}


public class PROServer {

  public static void main(String args[]) {
    try{
  // create and initialize the ORB
  ORB orb = ORB.init(args, null);

  // get reference to rootpoa & activate the POAManager
  POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
  rootpoa.the_POAManager().activate();

  // create servant and register it with the ORB
  PROImpl proImpl = new PROImpl();
  proImpl.setORB(orb); 

  // get object reference from the servant
  org.omg.CORBA.Object ref = rootpoa.servant_to_reference(proImpl);
  PRO href = PROHelper.narrow(ref);

  // get the root naming context
  // NameService invokes the name service
  org.omg.CORBA.Object objRef =
      orb.resolve_initial_references("NameService");
  // Use NamingContextExt which is part of the Interoperable
  // Naming Service (INS) specification.
  NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);

  // bind the Object Reference in Naming
  String name = "project corba";
  NameComponent path[] = ncRef.to_name(name);
  ncRef.rebind(path, href);

  System.out.println("PROServer with name "+ name+ " is up and it's waiting ...");

  // wait for invocations from clients
  orb.run();

        ORB orb = ORB.init(args, null);

        org.omg.CORBA.Object objRef = 
        orb.resolve_initial_references("NameService");
        NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
        String name = "project corba car";
        proCarImpl = PROCarHelper.narrow(ncRef.resolve_str(name));

        System.out.println("Obtained a handle on server object: " + proCarImpl);

} 

  catch (Exception e) {
    System.err.println("ERROR: " + e);
    e.printStackTrace(System.out);
  }

  System.out.println("HelloServer Exiting ...");

  }
}
4

0 に答える 0