Zuvor wurde in "CORBA-Dienst von Spring (Java) aufrufen" beschrieben, wie der CORBA-Dienst mithilfe der Spring-Funktion unter Java 8 aufgerufen wird Ich habe es eingeführt, aber dieses Mal möchte ich vorstellen, wie der CORBA-Dienst mithilfe einer alternativen Bibliothek in Java 11+ aufgerufen wird (Warum CORBA in dieser Ära !?) Bitte fragen Sie nicht w).
JDK
NOTE:
In diesem Eintrag wird der CORBA-Dienst auch in Java erstellt ... Um das CORBA-Objekt über den Namensdienst abrufen zu können, ist auch die in JDK 8 enthaltene Funktion orbd erforderlich. (Wenn Sie ein CORBA-Objekt mithilfe einer IOR-Zeichenfolge ohne Verwendung eines Namensdienstes abrufen möchten, benötigen Sie keine Funktion, die orbd entspricht.) Da JDK 11 oder höher den Befehl orbd nicht enthält ... Dieser Eintrag verwendet JDK 8 nur zur Verwendung des Befehls orbd ... (Vollständig kompromittiert, aber dieser Eintrag konzentriert sich nur auf die Clientseite. Bitte beachte, dass
Spring Boot
Grob gesagt scheint die in GlassFish verwendete ORB-Implementierung als unabhängiges Teilprojekt von Eclipse EE 4J entwickelt zu werden. Aus dieser Bibliothek werden nicht nur die ORB-Implementierung, sondern auch Tools wie idlj und rmic bereitgestellt. Diese Bibliothek wird als alternative Bibliothek in "JEP 320: Entfernen der Java EE- und CORBA-Module" eingeführt. Es ist gewesen.
Es sieht so aus, als würde JBoss die ORB-Implementierung von OpenJDK 8 neu verteilen. Da die erste Version 2015 ist ... In JDK 9 veraltet, ist nicht klar, ob dies mit dem Verschwinden des Moduls in JDK 11 zusammenhängt.
Ist JBoss in OpenJDK 9 verschwunden? Es scheint eine Bibliothek zu sein, die ORB-bezogene Klassen neu verteilt. Hier "[Rufen Sie den CORBA-Dienst von Spring (Java) aus auf](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) " Die in verwendete Datei " com.sun.jndi.cosnaming.CNCtxFactory
"ist enthalten.
"[Hier](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) In Bezug auf den Teil, der Java-Code aus der IDL-Datei generiert, gibt es in JDK 11+ keinen Befehl idlj, daher wird idlj von Eclipse ORB bereitgestellt Sie können eine entsprechende Klasse mithilfe von /corba/idlj/4.2.1/idlj-4.2.1.jar) (ausführbare JAR) generieren.
$ java -jar idlj-4.2.1.jar -fall -td src/main/java src/main/resources/Greeting.idl
Da es in JDK 11+ keine ORB-Implementierung gibt, können Sie die erforderliche Klasse nicht finden und kompilieren, wenn Sie nichts tun. Zunächst müssen Sie also in der Lage sein, eine alternative Bibliothek zu verwenden.
pom.xml
<dependency>
<groupId>org.glassfish.corba</groupId>
<artifactId>glassfish-corba-orb</artifactId>
<version>4.2.1</version>
</dependency>
<dependency> <!--"Com" im Spring Boot.sun.jndi.cosnaming.So verwenden Sie "CNCTxFactory"-->
<groupId>org.jboss.openjdk-orb</groupId>
<artifactId>openjdk-orb-jdk9-supplement</artifactId>
<version>1.0.3.Final</version>
<exclusions>
<exclusion> <!--Ausgeschlossen, da sich die ORB-Implementierung mit dem Eclipse-ORB überschneidet-->
<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>
Veröffentlichen Sie den CORBA-Dienst, wenn der ORB verfügbar ist. Weitere Informationen finden Sie unter "[hier](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) ". Wenn die Umgebung so ist, dass sich der Befehl orbd von JDK 8 im Pfad befindet, muss der Quellcode nicht geändert werden, aber wenn sich der Pfad nicht im Pfad befindet ... Die folgenden Änderungen sind erforderlich.
List<String> orbdStartupCommands = new ArrayList<>();
// orbdStartupCommands.add("orbd");
orbdStartupCommands.add("/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin/orbd"); //Geben Sie den Befehl mit dem vollständigen Pfad an
orbdStartupCommands.addAll(Arrays.asList(ORB_OPTIONS));
"[Hier](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) ”. Es gibt nichts, was repariert werden muss.
"[Hier](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) ". Es gibt nichts, was repariert werden muss.
Obwohl es nicht genau mit dem in diesem Eintrag vorgestellten Inhalt übereinstimmt, wird auf GitHub eine Demo-Anwendung mit demselben Inhalt veröffentlicht.
Das CORBA-Modul ist in JDK 11 verschwunden, aber ich habe festgestellt, dass es in der Umgebung von JDK 11+ mithilfe einer alternativen Bibliothek verwendet werden kann. Aber ... können alternative Bibliotheken in kommerziellen Anwendungen verwendet werden? Als ich die Lizenz überprüfte, machte ich mir Sorgen um das Teil
Eclipse ORB ist ...
Homepage-Auszug
Eclipse Distribution License 1.0 (BSD)
Eclipse Public License 2.0
einer(Secondary) GNU General Public License, version 2 with the GNU Classpath Exception
JBoss-Neuverpackung des OpenJDK-ORB
Aus der Lizenzdatei
GNU General Public License, version 2 with the GNU Classpath Exception
Es scheint, dass es auch in kommerziellen Nicht-OSS-Anwendungen verwendet werden kann, in denen der Quellcode nicht veröffentlicht werden kann, solange die JAR-Datei zum Klassenpfad hinzugefügt und verwendet wird.
Recommended Posts