I started a service bridge allowing to implicit push some spring bean to the k5 registry and so that can be used from other modules running in k5. It’s a local branch for now but I can push it on main.
Is it what you are looking for ? Regards JB > Le 29 sept. 2021 à 21:43, jgfrm <f...@gordijn.org> a écrit : > > Is there already something working for exporting functionality of a Spring > modules to other modules? > > |-----Oorspronkelijk bericht----- > |Van: Jean-Baptiste Onofré <j...@nanthrax.net> > |Verzonden: woensdag 29 september 2021 17:26 > |Aan: user@karaf.apache.org > |Onderwerp: Re: Karaf 5 > | > |Thanks for the update. > | > |I'm happy to say you are the first one to "use/launch" Karaf 5 ;) > | > |About the TomcatURLStreamHandlerFactory is known "issue": > | > |https://github.com/jbonofre/karaf5/blob/main/services/spring-boot- > |application- > |manager/src/main/java/org/apache/karaf/springboot/SpringBootApplication > |ManagerService.java#L110 > | > |I have to improve this ;) > | > |Regards > |JB > | > |On 29/09/2021 17:19, jgfrm wrote: > |> The following works: > |> > |> Karaf.json: > |> ==== > |> { > |> "applications": [ > |> { > |> "name": "e3web", > |> "url": "file:///home/jaap/Karaf5Test/e3web-dev.jar", > |> "type": "spring-boot", > |> "properties": { > |> "enableHttp": true, > |> "enablePrometheus": true > |> } > |> } > |> ] > |> } > |> ==== > |> > |> Add to Spring boot application: > |> ==== > |> @SpringBootApplication > |> @ComponentScan > |> public class E3webApplication { > |> > |> ... > |> public static void main(String[] args) { > |> TomcatURLStreamHandlerFactory.disable(); // see > |https://github.com/spring-projects/spring-boot/issues/21535 > |> SpringApplication.run(E3webApplication.class, args); > |> } > |> ==== > |> > |> Start with > |> java --add-modules jdk.security.jgss -cp > |> ../karaf5/assemblies/k4/target/k4-5.0-SNAPSHOT.jar:target/e3web-test-1 > |> .0-SNAPSHOT.jar:../karaf5/services/spring-boot-application-manager/tar > |> get/spring-boot-application-manager-5.0-SNAPSHOT.jar > |> -Dkaraf.config=src/main/resources/karaf.json > |> org.apache.karaf.boot.Main > |> > |> |-----Oorspronkelijk bericht----- > |> |Van: JB Onofré <j...@nanthrax.net> > |> |Verzonden: dinsdag 28 september 2021 06:34 > |> |Aan: user@karaf.apache.org > |> |Onderwerp: Re: Karaf 5 > |> | > |> |Hi > |> | > |> |No it’s not this because k5 don’t use OSGi for the spring boot > |> |launcher. I still think it’s a missing add modules as Jvm arg. I will > check > |today. > |> | > |> |Regards > |> |JB > |> | > |> |> Le 27 sept. 2021 à 23:39, jgfrm <f...@gordijn.org> a écrit : > |> |> > |> |> While Googling, I came across on of your blogs > |> |(http://nanthrax.blogspot.com/2021/04/whats-new-in-apache-karaf- > |> |431.html) that one of the changes in Karaf was to export the java.* > |packages. > |> |Could that be the cause? > |> |> > |> |> |-----Oorspronkelijk bericht----- > |> |> |Van: Jean-Baptiste Onofre <j...@nanthrax.net> > |> |> |Verzonden: zondag 26 september 2021 18:02 > |> |> |Aan: user@karaf.apache.org > |> |> |Onderwerp: Re: Karaf 5 > |> |> | > |> |> |Hi > |> |> | > |> |> |No sure, it’s only class loader issue. I remember this issue in > |> |> |pure spring boot with JDK11. > |> |> | > |> |> |Let me check. > |> |> | > |> |> |Regards > |> |> |JB > |> |> | > |> |> |> Le 26 sept. 2021 à 17:59, jgfrm <f...@gordijn.org> a écrit : > |> |> |> > |> |> |> Hi JB, > |> |> |> > |> |> |> Fully understand that it is still work in progress. > |> |> |> > |> |> |> Regarding the .NoClassDefFoundError: org/ietf/jgss/GSSException > |> |> |> --add-modules java.security.jgss does not solve it? > |> |> |> Is it a class loader problem? > |> |> |> > |> |> |> Best, > |> |> |> > |> |> |> -- Jaap > |> |> |> > |> |> |> > |> |> |> |-----Oorspronkelijk bericht----- > |> |> |> |Van: Jean-Baptiste Onofre <j...@nanthrax.net> > |> |> |> |Verzonden: zondag 26 september 2021 14:20 > |> |> |> |Aan: user@karaf.apache.org > |> |> |> |Onderwerp: Re: Karaf 5 > |> |> |> | > |> |> |> |Hi Jaap, > |> |> |> | > |> |> |> |First, maybe I was not clean in my presentation: Karaf 5 is > |> |> |> |still under development and so, everything is not yet ready. > |> |> |> |As said, I will “move” the code to Apache Karaf repo as soon as > |> |> |> |I consider I have something clean and running. > |> |> |> | > |> |> |> |Anyway, about your email, I will check. Today my focus is on > |> |> |> |the OsgiApplicationManager to be Karaf 4 compliant. > |> |> |> |I also have to improve the Karaf Config service. > |> |> |> | > |> |> |> |By the way, you don’t need your own Main, just use the > |> |> |> |repackage with regular provided Main (you can take a look on > |> |> |> |the K4 assembly repackage as an example). I will create a > |> |> |> |gradle/maven plugin with > |> |> |repackage. > |> |> |> | > |> |> |> |Regarding your issue, as you are running with JDK11, I guess > |> |> |> |you have to add -- add-modules java.security.jgss to avoid the > |> |> |NoClassDefFoundException. > |> |> |> | > |> |> |> |Thanks anyway for your feedback, much appreciated. > |> |> |> | > |> |> |> |Regards > |> |> |> |JB > |> |> |> | > |> |> |> |> Le 26 sept. 2021 à 12:00, jgfrm <f...@gordijn.org> a écrit : > |> |> |> |> > |> |> |> |> Hi Jean-Baptiste, > |> |> |> |> > |> |> |> |> I managed to start (well not completely) my spring application. > |> |> |> |> However, while starting up, I get an exception: > |> |> |> |> > |> |> |> |> 11:43:03.148 [main] ERROR o.s.boot.SpringApplication:837 - > |> |> |> |> Application run failed > |> |> |> |> org.springframework.context.ApplicationContextException: > |> |> |> |> Unable to start web server; nested exception is > |> |java.lang.NoClassDefFoundError: > |> |> |> |> org/ietf/jgss/GSSException > |> |> |> |> > |> |> |> |> Any ideas? > |> |> |> |> > |> |> |> |> Also, I had to make modifications in > |> |> |> |SpringBootApplicationManagerService/start: > |> |> |> |> > |> |> |> |> try { > |> |> |> |> > Thread.currentThread().setContextClassLoader(classLoader); > |> |> |> |> // disable tomcat stream handler > |> |> |> |> /* There is no TomcatURLStreamHandlerFactory in my > spring > |jar > |> |> |> |> final Method tomcat = > |> |> |> |classLoader.loadClass("org.apache.catalina.webresources.TomcatU > |> |> |> |RLS tre am HandlerFactory").getMethod("disable"); > |> |> |> |> if (!tomcat.isBridge()) { > |> |> |> |> tomcat.setAccessible(true); > |> |> |> |> } > |> |> |> |> tomcat.invoke(null, null); > |> |> |> |> */ > |> |> |> |> // invoke spring boot main > |> |> |> |> final Method main = > |> |> |> > ||classLoader.loadClass("org.springframework.boot.loader.JarLauncher"). > |> |> |> |getM > |> |> |> |ethod("main", String[].class); > |> |> |> |> main.setAccessible(true); > |> |> |> |> log.info("Call JarLauncher"); > |> |> |> |> if (properties.get("args") != null) { > |> |> |> |> log.info("Call JarLauncher with args"); > |> |> |> |> main.invoke(null, new Object[]{ > properties.get("args") }); > |> |> |> |> } else { > |> |> |> |> log.info("Call JarLauncher without args"); > |> |> |> |> main.invoke(null, new Object[]{new > |> |> |> |> String[0]}); // the original invoke > |> |> |> |did not work for me > |> |> |> |> } > |> |> |> |> } finally { > |> |> |> |> Thread.currentThread().setContextClassLoader(original); > |> |> |> |> } > |> |> |> |> > |> |> |> |> Further details: > |> |> |> |> - openjdk version "11.0.12" 2021-07-20 > |> |> |> |> - invocation: > |> |> |> |> java -cp > |> |> |> |> ../karaf5/assemblies/k4/target/k4-5.0-SNAPSHOT.jar:target/e3w > |> |> |> |> eb- > |> |> |> |> tes > |> |> |> |> t-1 > |> |> |> |> .0-SNAPSHOT.jar:../karaf5/services/spring-boot-application-ma > |> |> |> |> nag er/ tar > |> |> |> |> get/spring-boot-application-manager-5.0-SNAPSHOT.jar > |> |> |> |> -Dkaraf.config=src/main/resources/karaf.json Main > |> |> |> |> > |> |> |> |> Main.java: > |> |> |> |> ### > |> |> |> |> public class Main { > |> |> |> |> public static void main(String[] args){ > |> |> |> |> System.out.println("Starting Karaf"); > |> |> |> |> Karaf karaf = Karaf.builder().build(); > |> |> |> |> karaf.start(); > |> |> |> |> } > |> |> |> |> } > |> |> |> |> ### > |> |> |> |> > |> |> |> |> Best, > |> |> |> |> > |> |> |> |> -- Jaap > |> |> |> |> > |> |> |> |> |-----Oorspronkelijk bericht----- > |> |> |> |> |Van: Jean-Baptiste Onofré <j...@nanthrax.net> > |> |> |> |> |Verzonden: vrijdag 24 september 2021 10:34 > |> |> |> |> |Aan: user@karaf.apache.org > |> |> |> |> |Onderwerp: Re: Karaf 5 > |> |> |> |> | > |> |> |> |> |Hi Jaap, > |> |> |> |> | > |> |> |> |> |The presentation is available here: > |> |> |> |> | > |> |> |> |> > |> |> |> > |> |> > |> > |||||https://docs.google.com/presentation/d/1nDqd4oVbrggTDlwrzWc8zEdah > |K > |> |h > |> |> |c > |> |> |> |S > |> |> |> |> |VZJjlPk5FPxfBE/edit?usp=sharing > |> |> |> |> | > |> |> |> |> |Karaf 5 WIP is available here: > |> |> |> |> | > |> |> |> |> |https://github.com/jbonofre/karaf5 > |> |> |> |> | > |> |> |> |> |I'm available on Slack or by email if you wanna chat about > Karaf5. > |> |> |> |> | > |> |> |> |> |Regards > |> |> |> |> |JB > |> |> |> |> | > |> |> |> |> |On 24/09/2021 10:06, jgfrm wrote: > |> |> |> |> |> Hi, > |> |> |> |> |> > |> |> |> |> |> I have two questions about Karaf 5: > |> |> |> |> |> - is the presentation by Onofre at ApacheConf online > |somewhere? > |> |> |> |> |> - is it possible to explore Karaf 5 (or: what is there right > now)? > |> |> |> |> |> I am in particular interested in the Spring Boot > |> |> |> |> |> functionality, as I have a Spring Boot application that I > |> |> |> |> |> want to port to Karaf to support dynamic loading of > |> |> |> |> |> components. I have found the github repo of Onofre, but it > |> |> |> |> |> is > |> |unclear to me how e.g. to start Karaf. > |> |> |> |> |> > |> |> |> |> |> Best, > |> |> |> |> |> > |> |> |> |> |> -- Jaap > |> |> |> |> |> > |> |> |> |> > |> |> |> > |> |> |> > |> |> > |> |> > |> > |> >