Veenlijk upgraden

Dit soort menu’s bouwen

Ik probeer een bijzonder oud stukje software te moderniseren: een Asterisk hulpje gebouwd in Java 1.8 met JAXB zodat de Cisco telefoon Menus werken.

van versie “antiek” naar recent

Eens kijken of we kunnen upgraden! JAXB is sinds Java 11 uit Java gehaald, in Java 9 deprecate. Dit was een eeuwigheid geleden. Is er een vervanger? een mooie implementatie buiten het standaard framework?

goed uitgelegd

Jazeker! in bovenstaand artikel wordt goed uitgelegd hoe je toch JAXB kan gebruiken

https://eclipse-ee4j.github.io/jaxb-ri/

<!-- JAXB API v3.0.1 -->
<dependency>
    <groupId>jakarta.xml.bind</groupId>
    <artifactId>jakarta.xml.bind-api</artifactId>
    <version>3.0.1</version>
</dependency>

<!-- JAXB v3.0.2 reference implementation (curiously with com.sun coordinates) -->
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>3.0.2</version>
    <scope>runtime</scope>
</dependency>


Dan: Spring framework van V3 –> v5. geen probleem, hier is alleen een update van de laatste stabiele versie nodig, geen probleem. Muchos kudos voor al die backwards compatibility!

Daarna, is het nodig om een WAR builder aan te zetten op het project

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.3.1</version>
</plugin>

Voeg met de gcloud SDK de app engine ondersteuning toe op de mac

gcloud components install app-engine-java
Voeg een App Engine local dev server toe
gebruik de volgende path:  
/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/platform/google_appengine/google/appengine/tools/java

Voeg een bestandje toe genaamd: appengine-web.xml in de WEB-INF folder

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <threadsafe>true</threadsafe>
  <runtime>java17</runtime>
</appengine-web-app>

Start de app engine omgeving en krijg de volgende fout

java.lang.RuntimeException: Unable to create a DevAppServer
	at com.google.appengine.tools.development.DevAppServerFactory.doCreateDevAppServer(DevAppServerFactory.java:378)
	at com.google.appengine.tools.development.DevAppServerFactory.createDevAppServer(DevAppServerFactory.java:310)
	at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:384)
	at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:58)
	at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:258)
	at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:249)
Caused by: java.lang.ExceptionInInitializerError
	at com.google.appengine.tools.development.DevAppServerImpl.<init>(DevAppServerImpl.java:135)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
	at com.google.appengine.tools.development.DevAppServerFactory.doCreateDevAppServer(DevAppServerFactory.java:363)
	... 5 more
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make static java.net.URLStreamHandler java.net.URL.getURLStreamHandler(java.lang.String) accessible: module java.base does not "opens java.net" to unnamed module @18e8568
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
	at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
	at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
	at com.google.appengine.tools.development.StreamHandlerFactory.<clinit>(StreamHandlerFactory.java:52)
	... 12 more
Disconnected from server

Process finished with exit code 1

Oorzaak: Java17, hoewel Java17 al een tijd stabiel is lijkt de combinatie van mijn (stok)oude code en App Engine dev server geen goede.

https://www.spigotmc.org/threads/inaccessibleobjectexception-unable-to-make-protected-void-java-net-urlclassloader-addurl.514803/

Bovenstaand is een oplossing voor het classloader probleem dat zich sinds java16 kan voordoen.

Als alternatief gaan we terug naar Java11, eens kijken of dat wat veranderd.

bingo! een stokoude Angular frontend die niet af is

Volgende stap: beveiliging inbouwen en deployen naar App Engine!

Dit bericht is geplaatst in Zonder categorie. Bookmark de permalink.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.

Time limit is exhausted. Please reload the CAPTCHA.