Heutzutage benutzt niemand CORBA! ?? Was beiseite: thermometer_face:
Ich denke, es wird so viel herauskommen, wie Sie wollen, wenn Sie googeln ...
Abkürzung für Common Object Request Broker Architecture (Colva Cova). Ein Standard zum Verknüpfen der verteilten Verarbeitung, der nur sprachunabhängige Schnittstellen mit IDL (Interface Definition Language) definiert. In COBRA wird Code zusammen mit Informationen zu seiner Funktion und Aufrufmethode gekapselt, und CORBA-kompatible Komponenten können unabhängig von Sprache oder Betriebssystem miteinander kommunizieren. Mit anderen Worten, wenn Sie die in IDL beschriebene Schnittstelle implementieren, können Sie zwischen verschiedenen Sprachen (Java, C usw.) kommunizieren: schreien_katze :.
Referenzseite
In diesem Fall wird die in IDL beschriebene Schnittstelle mit dem Befehl idlj in Java konvertiert ... Ich war jedoch süchtig danach, weil die IDL-Syntax und die Java-Syntax unterschiedlich sind. (Der Befehl idlj kann durch Installieren des JDK verwendet werden.)
Wenn Sie beispielsweise eine Methode zur Berechnung der Verbrauchssteuer definieren, indem Sie den Preis als Argument übergeben, lautet diese wie folgt.
test.idl
module com{
module neriudon {
module corba {
interface CalcTax{
double calc(in long price);
};
};
};
};
module
entspricht Java package
und IDL long
entspricht Java int
. Weitere Informationen finden Sie unter Java IDL: Zuordnung von IDL zu Java-Sprache.
Das Hauptthema ist also von hier. Die Konvertierungstabelle wird auf der ↑ Site beschrieben. Was kann ich jedoch tun, wenn ich ein Array für den Rückgabewert / das Rückgabeargument der Methode angeben möchte?
Also, als Ergebnis der Untersuchung ...
Is it possible to accept a string array as argument in corba idl file
Es scheint, dass das Array im Voraus mit typedef definiert werden muss. Es sieht aus wie eine Struktur. Das Folgende ist eine Methode zum Konvertieren eines Arrays von Strings in ein Byte-Array.
Converter.idl
module com{
module neriudon {
module corba {
typedef sequence<octet> response;
typedef sequence<string> request;
interface Conveter
{
response convert(in request request);
};
};
};
};
Lassen Sie uns dies nun mit dem Befehl idlj
in eine Java-Datei konvertieren.
Wenn Sie "idlj -fall -td ./. / Converter.idl" ausführen, wird Java-Code ähnlich dem folgenden ausgegeben:
Erweitern Sie "ConveterPOA", wenn Sie die generierte Schnittstelle implementieren möchten.
ConverterImpl.java
package com.neriudon.corba;
public class ConverterImpl extends ConveterPOA {
@Override
public byte[] convert(String[] request) {
// TODO Auto-generated method stub
return null;
}
}
Ich werde den Teil weglassen, der das Objekt tatsächlich über die IOR-Datei usw. Kommuniziert: frowning2 :.
Übrigens gibt es auch ein Projekt namens JacORB, wenn es um CORBA in Java geht.
Ich bin süchtig nach dem Unterschied zwischen IDL-Grammatik und Java-Grammatik: cry :. Die Byte-Notation und die Array-Notation sind unabhängig voneinander Treffer, aber es fiel mir schwer, ein Beispiel für die Eingabe / Ausgabe von Methoden zu finden: confounded :. Außerdem war ich überrascht, dass der Codeblock von Qiita IDL unterstützte: stick_out_tongue_winking_eye :.
Recommended Posts