[JAVA] Comment spécifier un tableau pour la valeur de retour / l'argument d'une méthode dans le fichier IDL CORBA

introduction

De nos jours, personne n'utilise CORBA! ?? Quoi de côté: thermometer_face:

Qu'est-ce que CORBA en premier lieu?

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.)

Exemple IDL

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);
      };
    };
  };
};

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.

Comment j'ai posté cet article

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

Comment spécifier un tableau pour la valeur de retour / l'argument d'une méthode dans le fichier IDL CORBA
Comment récupérer la valeur de hachage dans un tableau dans Ruby
Comment afficher la valeur lorsqu'il y a un tableau dans le tableau
Comment obtenir la longueur d'un fichier audio avec Java
[Java] Comment rechercher des valeurs dans un tableau (ou une liste) avec la méthode contains
[Swift] Comment obtenir le nombre d'éléments dans un tableau (super basique)
[Note] [Débutant] Comment écrire lors de la modification de la valeur d'un élément de tableau dans une phrase répétée de Ruby
[Swift5] Comment obtenir un tableau et un ensemble de différences entre les tableaux
Comment incrémenter la valeur de Map sur une ligne en Java
Étapes pour rendre Spring Boot capable de faire référence à la valeur dans le fichier de propriétés
Comment convertir un tableau de chaînes en un tableau d'objets avec l'API Stream
Comment changer la valeur d'une variable à un point d'arrêt dans intelliJ
Développement Android, comment vérifier null dans la valeur de l'objet JSON
Sortie de la façon d'utiliser la méthode slice
Comment faire une méthode de jugement pour rechercher n'importe quel caractère dans le tableau
Comment définir des variables d'environnement dans le fichier de propriétés de l'application Spring Boot
[Java] Comment obtenir la valeur maximale de HashMap
Comment spécifier le chemin de la ressource dans l'importation HTML
Comment convertir un fichier en tableau d'octets en Java
Comment déboguer le fichier jar généré avec Eclipse
[Rails] Comment afficher les images dans la vue
Comment trouver la valeur totale, la valeur moyenne, etc. d'un tableau à deux dimensions (tableau multidimensionnel) -java
Comment installer Docker dans l'environnement local d'une application Rails existante [Rails 6 / MySQL 8]
Comment obtenir le nom de classe de l'argument de LoggerFactory.getLogger lors de l'utilisation de SLF4J en Java
Comment utiliser git avec la puissance de jgit dans un environnement sans commandes git
Comment demander en passant un tableau à une requête avec le client HTTP de Ruby
Passez un argument à la méthode et recevez le résultat de l'opération comme valeur de retour
Exemple de code pour attribuer une valeur dans le fichier de propriétés à un champ du type attendu
Comment obtenir le nom d'une classe / méthode exécutée en Java
Comment utiliser la méthode getter / setter (en orientation objet)
[Ruby] Comptez un nombre pair dans un tableau en utilisant la méthode pair?
9 Correspond à la valeur de retour
Comment changer une chaîne dans un tableau en un nombre dans Ruby
Une méthode qui applique des transformations en parallèle à tous les éléments et renvoie un tableau de valeurs de retour qui conservent leur ordre
Créer une méthode pour renvoyer le taux de taxe en Java
Comment modifier la valeur de réglage de Springboot Hikari CP
Comment ajouter des éléments sans spécifier la longueur du tableau
Comment ajouter les mêmes index dans un tableau imbriqué
Comment dériver le dernier jour du mois en Java
Comment modifier le contenu du fichier jar sans décompresser
Emplacement de la définition de la méthode Résumé de la vérification Lorsque défini dans le projet et Rails / Gem
[Ruby] Comment compter les nombres pairs ou impairs dans un tableau
Il ne répond pas à la description en .js du fichier packs
Comment afficher 0 sur le côté gauche de la valeur d'entrée standard
Fixez le nom du fichier de guerre à celui défini dans Maven
[Rails] Parlez de prêter attention à la valeur de retour de l'endroit
L'histoire de toString () commençant par le passage d'un tableau à System.out.println
[Rails] Comment omettre l'affichage de la chaîne de caractères de la méthode link_to
Comment obtenir l'identifiant de la clé PRIMAY incrémentée automatiquement dans MyBatis
Convertir un tableau de chaînes en une liste d'entiers en Java
Comment stocker les informations saisies dans la zone de texte dans une variable de la méthode
[chown] Comment changer le propriétaire d'un fichier ou d'un répertoire
Je veux changer la valeur de l'attribut dans Selenium of Ruby
Comment utiliser la méthode link_to
Comment utiliser la méthode include?