2016-07-17 22 views
2

Ich habe Java (Jdk5) Corba Client entwickelt, um NotificationIRP proaktive Ereignisse vom Server zu erhalten. Mein unterer Code funktioniert gut mit einer einzelnen Netzwerkkarte. Wenn das Clientsystem über mehrere Netzwerkschnittstellen verfügt, wird immer dann eine falsche Netzwerkkarte ausgewählt und keine Verbindung zum Client hergestellt. Ich habe es versucht, indem ich das Argument -ORBEndpoint in orb angegeben habe. Aber immer noch kein Erfolg.Corba Client Rückruf Problem mit mehreren Netzwerkschnittstelle. Wie an bestimmte Netzwerkschnittstelle zu binden

 String[] args = new String[2]; 

     args[0]="-ORBEndpoint"; 
     args[1]="iiop://10.106.90.50:9090"; // client eth0    
     ORB orb = ORB.init(args, null); 

Antwort

0

Java 5 ist seit langem am Ende des Lebenszyklus. Sie sollten jetzt Java 8 verwenden.

Welche CORBA Java-Implementierung verwenden Sie? Die CORBA-Implementierung, die mit Java selbst gebündelt ist, ist sehr eingeschränkt.

Ich empfehle Ihnen, JacORB http://www.jacorb.org/ Es ist eine andere Java-Implementierung von JacORB, die noch aktiv ist und verwendet wird.

Ich bin mir nicht sicher, ob die neueste JacORB mit Java 5 arbeiten würde, müssten Sie dort einige Nachforschungen anstellen.

Sobald Sie JacORB Setup haben, werfen Sie einen Blick auf ihre Dokumentation. http://www.jacorb.org/documentation.html Insbesondere auf den Listen Listen Endpoints und im Bereich Network Configuration. Es sollte die Antwort geben, die Sie von dort brauchen.

1

Zunächst sollten Sie keine Portnummer angeben, sondern nur die IP-Adresse. Die Portnummer wird vom ORB zufällig ausgewählt.

Dann können Sie diese Java-Eigenschaft konfigurieren:

-Dcom.sun.CORBA.ORBServerHost=<IP address> 

oder wenn Sie es wirklich wollen hart codieren:

Properties p = new Properties(); 
p.put("com.sun.CORBA.ORBServerHost", "10.106.90.50"); 
ORB orb = ORB.init(args, p); 

ORBEndpoint ist eine Konfiguration für omniORB, nicht für die Sun/Oracle Java ORB.