Auparavant, dans "Appeler le service CORBA depuis Spring (Java)", comment appeler le service CORBA à l'aide de la fonction Spring sur Java 8 Je l'ai présenté, mais cette fois, je voudrais vous présenter comment appeler le service CORBA en utilisant une bibliothèque alternative en Java 11+ (Pourquoi CORBA à cette époque!?) Veuillez ne pas demander w).
JDK
NOTE:
Dans cette entrée, le service CORBA est également créé en Java ... Afin de pouvoir acquérir l'objet CORBA via le service de nommage, la fonction équivalente à orbd incluse dans JDK 8 est également requise. (Si vous souhaitez obtenir un objet CORBA en utilisant une chaîne IOR sans utiliser de service de nommage, vous n'avez pas besoin d'une fonction équivalente à orbd). Puisque JDK 11 ou version ultérieure n'inclut pas la commande orbd ... Cette entrée utilise JDK 8 uniquement pour utiliser la commande orbd ... (Complètement compromise, mais cette entrée se concentre uniquement sur le côté client. Veuillez noter que
Spring Boot
En gros, il semble que l'implémentation ORB utilisée dans GlassFish soit en cours de développement en tant que sous-projet indépendant d'Eclipse EE 4J. À partir de cette bibliothèque, non seulement l'implémentation ORB mais aussi des outils tels que idlj et rmic sont fournis. Cette bibliothèque est présentée comme bibliothèque alternative dans "JEP 320: Supprimer les modules Java EE et CORBA". Ça a été.
Il semble que JBoss redistribue l'implémentation ORB d'OpenJDK 8. Depuis la 1ère version est 2015 ... Dépréciée dans JDK 9, on ne sait pas si cela est lié à la disparition du module dans JDK 11.
JBoss a-t-il disparu dans OpenJDK 9? Il semble que ce soit une bibliothèque qui redistribue les classes liées à ORB. Ici, "[Appelez le service CORBA depuis Spring (Java)](https://qiita.com/kazuki43zoo/items/5eb4d57d785e0b3505fb#spring%E3%81%AE%E6%A9%9F%E8%83" % BD% E3% 82% 92% E4% BD% BF% E3% 81% A3% E3% 81% A6corba% E3% 82% B5% E3% 83% BC% E3% 83% 93% E3% 82% B9 % E3% 82% 92% E5% 91% BC% E3% 81% B3% E5% 87% BA% E3% 81% 97% E3% 81% A6% E3% 81% BF% E3% 82% 8B) " Le " com.sun.jndi.cosnaming.CNCtxFactory
"utilisé dans est inclus.
"[Ici](https://qiita.com/kazuki43zoo/items/5eb4d57d785e0b3505fb#java%E3%81%A7corba%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9" % E3% 82% 92% E4% BD% 9C% E3% 81% A3% E3% 81% A6% E3% 81% BF% E3% 82% 8B) ". Concernant la partie qui génère du code Java à partir du fichier IDL, il n'y a pas de commande idlj dans JDK 11+, donc idlj fourni par Eclipse ORB Vous pouvez générer une classe équivalente en utilisant /corba/idlj/4.2.1/idlj-4.2.1.jar) (jar exécutable).
$ java -jar idlj-4.2.1.jar -fall -td src/main/java src/main/resources/Greeting.idl
Comme il n'y a pas d'implémentation ORB dans JDK 11+, si vous ne faites rien, vous ne pourrez pas trouver la classe requise et compiler, donc d'abord ... vous devez être capable d'utiliser une bibliothèque alternative.
pom.xml
<dependency>
<groupId>org.glassfish.corba</groupId>
<artifactId>glassfish-corba-orb</artifactId>
<version>4.2.1</version>
</dependency>
<dependency> <!--"Com" dans Spring Boot.sun.jndi.cosnaming.Pour utiliser "CNCTxFactory"-->
<groupId>org.jboss.openjdk-orb</groupId>
<artifactId>openjdk-orb-jdk9-supplement</artifactId>
<version>1.0.3.Final</version>
<exclusions>
<exclusion> <!--Exclus car l'implémentation ORB chevauche l'ORB Eclipse-->
<groupId>org.jboss.openjdk-orb</groupId>
<artifactId>openjdk-orb</artifactId>
</exclusion>
</exclusions>
</dependency>
pom.xml
<dependency>
<groupId>org.jboss.openjdk-orb</groupId>
<artifactId>openjdk-orb</artifactId>
<version>8.1.4.Final</version>
</dependency>
Publiez le service CORBA lorsque l'ORB est disponible. Pour plus d'informations, voir "[here](https://qiita.com/kazuki43zoo/items/5eb4d57d785e0b3505fb#java%E3%81%A7corba%E3%82%B5%E3%83%BC%E3%83%93%E3%82] % B9% E3% 82% 92% E5% 85% AC% E9% 96% 8B% E3% 81% 97% E3% 81% A6% E3% 81% BF% E3% 82% 8B) ". Si l'environnement est tel que la commande orbd du JDK 8 se trouve dans le chemin, il n'est pas nécessaire de modifier le code source, mais si le chemin n'est pas dans le chemin ... Les modifications suivantes sont nécessaires.
List<String> orbdStartupCommands = new ArrayList<>();
// orbdStartupCommands.add("orbd");
orbdStartupCommands.add("/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin/orbd"); //Spécifiez la commande avec le chemin complet
orbdStartupCommands.addAll(Arrays.asList(ORB_OPTIONS));
"[Ici](https://qiita.com/kazuki43zoo/items/5eb4d57d785e0b3505fb#java%E3%81%8B%E3%82%89corba%E3%82%B5%E3%83%BC%E3%83%93" % E3% 82% B9% E3% 82% 92% E5% 91% BC% E3% 81% B3% E5% 87% BA% E3% 81% 97% E3% 81% A6% E3% 81% BF% E3 % 82% 8B) ». Il n'y a rien à réparer.
"[Ici](https://qiita.com/kazuki43zoo/items/5eb4d57d785e0b3505fb#spring%E3%81%AE%E6%A9%9F%E8%83%BD%E3%82%92%E4%BD%BF % E3% 81% A3% E3% 81% A6corba% E3% 82% B5% E3% 83% BC% E3% 83% 93% E3% 82% B9% E3% 82% 92% E5% 91% BC% E3 % 81% B3% E5% 87% BA% E3% 81% 97% E3% 81% A6% E3% 81% BF% E3% 82% 8B) ". Il n'y a rien à réparer.
Bien que ce ne soit pas exactement le même que le contenu introduit dans cette entrée, une application de démonstration avec le même contenu est publiée sur GitHub.
CORBA a perdu son module dans JDK 11, mais j'ai trouvé qu'il pouvait être utilisé dans l'environnement de JDK 11+ en utilisant une bibliothèque alternative. Mais ... des bibliothèques alternatives peuvent-elles être utilisées dans des applications commerciales? Quand j'ai vérifié la licence, j'étais inquiet pour la pièce
Eclipse ORB est ...
Extrait de la page d'accueil
Eclipse Distribution License 1.0 (BSD)
Eclipse Public License 2.0
un(Secondary) GNU General Public License, version 2 with the GNU Classpath Exception
Reconditionnement JBoss de l'ORB OpenJDK
À partir du fichier de licence
GNU General Public License, version 2 with the GNU Classpath Exception
Il semble qu'il puisse être utilisé même dans des applications commerciales non OSS où le code source ne peut pas être publié tant que le fichier jar est ajouté sur le chemin de classe et utilisé.
Recommended Posts