De nos jours, personne n'utilise CORBA! ?? Quoi de côté: thermometer_face:
Je pense qu'il sortira autant que vous le souhaitez si vous google ...
Abréviation de Common Object Request Broker Architecture (Colva Cova). Une norme pour lier le traitement distribué, qui définit uniquement des interfaces indépendantes de la langue avec IDL (Interface Definition Language). Dans COBRA, le code est encapsulé avec des informations sur sa fonction et sa méthode d'appel, et les composants compatibles CORBA peuvent communiquer entre eux indépendamment de la langue ou du système d'exploitation. En d'autres termes, si vous implémentez l'interface décrite en IDL, vous pouvez communiquer entre différents langages (Java, C, etc.): scream_cat:.
Site de référence
Dans ce cas, l'interface décrite en IDL est convertie en Java avec la commande idlj ... Cependant, j'en étais accro car la syntaxe IDL et la syntaxe Java sont différentes. (La commande idlj peut être utilisée en installant le JDK.)
A titre d'exemple, si vous définissez une méthode de calcul de la taxe à la consommation en passant le prix comme argument, ce sera comme suit.
test.idl
module com{
module neriudon {
module corba {
interface CalcTax{
double calc(in long price);
};
};
};
};
module
correspond au package
de Java, et le long
de l'IDL correspond à ʻint` de Java. Pour plus d'informations, voir Java IDL: IDL vers Java Language Mapping.
Donc, le sujet principal est d'ici. La table de conversion est décrite sur le site ↑, mais que dois-je faire si je veux spécifier un tableau pour la valeur de retour / l'argument de la méthode?
Donc, à la suite d'une enquête ...
Is it possible to accept a string array as argument in corba idl file
Il semble que le tableau doive être défini à l'avance en utilisant typedef
. Cela ressemble à une structure.
Voici une méthode pour convertir un tableau de chaînes en un tableau d'octets.
Converter.idl
module com{
module neriudon {
module corba {
typedef sequence<octet> response;
typedef sequence<string> request;
interface Conveter
{
response convert(in request request);
};
};
};
};
chaîne
d'IDL est équivalente à la chaîne
de Java, et ʻoctet est équivalent à
byte`.Maintenant, convertissons cela en un fichier Java avec la commande ʻidlj`.
ʻIdlj -fall -td ./. / Converter.idl` affichera un code Java similaire au suivant.
Développez ConveterPOA
si vous souhaitez implémenter l'interface générée.
ConverterImpl.java
package com.neriudon.corba;
public class ConverterImpl extends ConveterPOA {
@Override
public byte[] convert(String[] request) {
// TODO Auto-generated method stub
return null;
}
}
J'omettrai la partie qui communique réellement l'objet en utilisant le fichier IOR etc.: frowning2:.
À propos, il existe également un projet appelé JacORB lorsqu'il s'agit de CORBA en Java.
Je suis accro à la différence entre la grammaire d'IDL et la grammaire de Java: cry:. La notation d'octet et la notation de tableau ont fonctionné indépendamment, mais j'ai eu du mal à trouver un exemple de méthode d'entrée / sortie: confondu:. De plus, j'ai été surpris que le bloc de code de Qiita prenne en charge IDL: stuck_out_tongue_winking_eye:.
Recommended Posts