RE: Data isolation between Karaf bundles/features: how to achieve?

2021-10-12 Thread jgfrm
Hi Christian,

 

Thanks you very much for your response.

I will look into DDD a bit, I also found the saga pattern for transactionality.

 

Greetings,

 

-- Jaap

 

 

 

Van: Christian Schneider  
Verzonden: dinsdag 12 oktober 2021 11:03
Aan: user@karaf.apache.org
Onderwerp: Re: Data isolation between Karaf bundles/features: how to achieve?

 

I would solve this in a fashion that is independent of OSGi.

Think in terms of bounded contexts in domain driven design terminology. 

 

In your case you have to decide if person and department belong to the same 
bounded context or not.

If they belong to the same then share the db schema and also share a single 
transaction maybe even also bundle and persistence context.  There is no need 
to fully shield them against each other.

If they belong to different bounded contexts then separate them completely 
(different db schema, no shared transaction). In this case you can easily 
extract each bounded context as a microservice if needed but of course you 
loose quite a few nice features like XA transactions.

 

Christian

 

Am So., 10. Okt. 2021 um 20:38 Uhr schrieb jgfrm mailto:f...@gordijn.org> >:

Suppose the following case:

- there is a Person bundle, responsible of managing persons
- there is a Department bundle, reponsible of managing departmens.

- there is a constraint: A person always works for precisely one department;
hence a person can not exist without the department s/he works for.

Hi

I am interested to understand if Isolation of data (between bundles) is
possible in Karaf.

Suppose the following case:
- there is a Person bundle, responsible of managing persons
- there is a Department bundle, responsible of managing departments.
- there is a constraint: A person always works for precisely one department;
hence a person can not exist without the department s/he works for.

I have the following requirements:
- The Person bundle can not use the data (departments) stored by the
Department bundle (e.g. a table "Department")
- The Department bundle can not use the data(persons) stored by the Person
bundle (e.g. a table "Person")
- If a department is deleted, all persons that work for that department
would be deleted too (due to the formulated constraint).

How to do this in Karaf/OSGI?
My ideas:
- each bundle (Department and Person) has an own persistence unit. The
persistence unit refers to different databases with their own access
control, or the different schemas in the same database with proper access
control on the database level. Bundles can not see each other's persistence
unit. Because these are effectively two separate databases, we can not use
foreign keys to represent that an employee always works for precisely one
department.
Therefore:
- there is a bundle that represents a transaction coordinator
- the Person bundle tells the transaction coordinator that there is a
constraint: namely that it want to informed if a person is deleted
- in case a department is deleted the following happens:
 - the department bundle builds a XA transaction to delete the department
 - the department bundle informs the transaction coordinator that it created
a transaction to delete the department, including the identifier of the
department to be deleted
 - the transaction coordinator informs the person bundle that a department
with a particular identifier is going to be deleted
 - the person bundle looks up all persons that work for the department, and
creates a XA transaction to delete all these persons
 - the person bundle informs the transaction coordinator that it created a
transaction to delete the persons, including a list with identifiers of the
persons to be deleted
 - the transaction coordinator executes both transaction as one enclosing
transaction using the 2-phase commit protocol.

Questions:
- is this a feasible scenario in Karaf?
- if so, how should it be implemented? Specific tips?
- are there any examples doing similar things?

Best,

-- Jaap




 

-- 

-- 
Christian Schneider
http://www.liquid-reality.de

 

Computer Scientist

http://www.adobe.com

 



RE: Data isolation between Karaf bundles/features: how to achieve?

2021-10-11 Thread jgfrm
Hi David,

Thanks for your response.
Of course, the scenario that is sketch is a styled example to clearly 
illustrate what I want to achieve.
Also, at least to my current understanding, I do not propose 3 XA transaction 
managers but 2 XA resources and 1 transaction managers.

I want build a plugin system (where a plugin could roughly correspond to a 
Karaf feature) in which the plugins are completely isolated meaning that they 
can not see each other, unless a specific service is exported.
"Not seeing each other" also entails that they can not see each other 
data(bases). The reason for this is the plugins are provided by many different 
third parties who do not necessarily have to trust each other.  Even more, the 
plugins are not aware of each other (loose coupling), except for the services 
that are exported.

This means that the datasources have to be private to the plugin/feature.
To try this out, I have developed two bundles, each with a XA resource.
If however I do "service:list javax.sql.DataSource" it shows that each 
respective datasource is used by both plugins. This is not what I want.

I have read quite a lot about XA/OSGI transactions the past few days but I can 
not find anything about:
- branches of transactions as you mention
- a good example with two or more datasources of different bundles, where 
updates are managed by a (global) transaction manager.

I would be very happy if you/someone could point me to a few examples and/or 
documentation about this.

With respect to idempotent messages: Just using that would not say anything 
about transactionality right?

Thanks for your help again.

Best,

-- Jaap

|-Oorspronkelijk bericht-
|Van: David Jencks 
|Verzonden: zondag 10 oktober 2021 22:48
|Aan: user@karaf.apache.org
|Onderwerp: Re: Data isolation between Karaf bundles/features: how to
|achieve?
|
|As written, your proposal involves 3 XA transaction managers, two of which
|are also packaged as XAResources.  For this scenario, that’s ridiculous.
|
|If this is a toy problem for you to learn about XA, I think what you mean is:
|
|department bundle starts an XA transaction and removes the department in a
|branch of this transaction
|
|something communicates the departmentId and transaction Xid to the person
|bundle (normally the Xid is communicated via a thread local, i.e. it’s attached
|to the current thread)
|
|Person bundle removes the relevant people in another branch of this same
|transaction.
|
|Something (probably the department bundle) ends the XA transaction (commit
|or rollback).
|
|I think there’s now an OSGI spec transaction coordinator that should help with
|this, but I don’t remember the details or whether the implementation is in 
felix
|or aries.
|
|If this is a real problem, it’s usually better to find a way to avoid XA, such 
as
|sending idempotent messages.
|
|David Jencks
|
|> On Oct 10, 2021, at 11:37 AM, jgfrm  wrote:
|>
|> Suppose the following case:
|>
|> - there is a Person bundle, responsible of managing persons
|> - there is a Department bundle, reponsible of managing departmens.
|>
|> - there is a constraint: A person always works for precisely one
|> department; hence a person can not exist without the department s/he
|works for.
|>
|> Hi
|>
|> I am interested to understand if Isolation of data (between bundles)
|> is possible in Karaf.
|>
|> Suppose the following case:
|> - there is a Person bundle, responsible of managing persons
|> - there is a Department bundle, responsible of managing departments.
|> - there is a constraint: A person always works for precisely one
|> department; hence a person can not exist without the department s/he
|works for.
|>
|> I have the following requirements:
|> - The Person bundle can not use the data (departments) stored by the
|> Department bundle (e.g. a table "Department")
|> - The Department bundle can not use the data(persons) stored by the
|> Person bundle (e.g. a table "Person")
|> - If a department is deleted, all persons that work for that
|> department would be deleted too (due to the formulated constraint).
|>
|> How to do this in Karaf/OSGI?
|> My ideas:
|> - each bundle (Department and Person) has an own persistence unit. The
|> persistence unit refers to different databases with their own access
|> control, or the different schemas in the same database with proper
|> access control on the database level. Bundles can not see each other's
|> persistence unit. Because these are effectively two separate
|> databases, we can not use foreign keys to represent that an employee
|> always works for precisely one department.
|> Therefore:
|> - there is a bundle that represents a transaction coordinator
|> - the Person bundle tells the transaction coordinator that there is a
|> constraint: namely that it want to informed if a person is deleted
|> -

Data isolation between Karaf bundles/features: how to achieve?

2021-10-10 Thread jgfrm
Suppose the following case:
 
- there is a Person bundle, responsible of managing persons
- there is a Department bundle, reponsible of managing departmens.
 
- there is a constraint: A person always works for precisely one department;
hence a person can not exist without the department s/he works for.

Hi

I am interested to understand if Isolation of data (between bundles) is
possible in Karaf.

Suppose the following case:
- there is a Person bundle, responsible of managing persons
- there is a Department bundle, responsible of managing departments.
- there is a constraint: A person always works for precisely one department;
hence a person can not exist without the department s/he works for.

I have the following requirements:
- The Person bundle can not use the data (departments) stored by the
Department bundle (e.g. a table "Department")
- The Department bundle can not use the data(persons) stored by the Person
bundle (e.g. a table "Person")
- If a department is deleted, all persons that work for that department
would be deleted too (due to the formulated constraint).

How to do this in Karaf/OSGI?
My ideas:
- each bundle (Department and Person) has an own persistence unit. The
persistence unit refers to different databases with their own access
control, or the different schemas in the same database with proper access
control on the database level. Bundles can not see each other's persistence
unit. Because these are effectively two separate databases, we can not use
foreign keys to represent that an employee always works for precisely one
department.
Therefore:
- there is a bundle that represents a transaction coordinator
- the Person bundle tells the transaction coordinator that there is a
constraint: namely that it want to informed if a person is deleted
- in case a department is deleted the following happens:
 - the department bundle builds a XA transaction to delete the department
 - the department bundle informs the transaction coordinator that it created
a transaction to delete the department, including the identifier of the
department to be deleted
 - the transaction coordinator informs the person bundle that a department
with a particular identifier is going to be deleted
 - the person bundle looks up all persons that work for the department, and
creates a XA transaction to delete all these persons
 - the person bundle informs the transaction coordinator that it created a
transaction to delete the persons, including a list with identifiers of the
persons to be deleted
 - the transaction coordinator executes both transaction as one enclosing
transaction using the 2-phase commit protocol.
 
Questions:
- is this a feasible scenario in Karaf?
- if so, how should it be implemented? Specific tips?
- are there any examples doing similar things?

Best,

-- Jaap



RE: Karaf 5

2021-09-30 Thread jgfrm
Hi JB,

Thank you very much.
I look forward to dig in to it.

Best,

-- Jaap

|-Oorspronkelijk bericht-
|Van: Jean-Baptiste Onofré 
|Verzonden: donderdag 30 september 2021 18:08
|Aan: user@karaf.apache.org
|Onderwerp: Re: Karaf 5
|
|Hi Jaap,
|
|let me rebase and polish a bit and I will push a first round (probably tomorrow
|night or during the weekend). I will keep you posted.
|
|Regards
|JB
|
|On 30/09/2021 14:40, jgfrm wrote:
|> Hi JB,
|>
|> That sounds interesting!
|> Is it possible to share what you developed?
|>
|> Best,
|>
|> -- Jaap
|>
|> |-Oorspronkelijk bericht-
|> |Van: Jean-Baptiste Onofré 
|> |Verzonden: donderdag 30 september 2021 11:34
|> |Aan: user@karaf.apache.org
|> |Onderwerp: Re: Karaf 5
|> |
|> |Hi Jaap,
|> |
|> |so, yes, we are talking about the same thing ;)
|> |
|> |There are actually two parts:
|> |
|> |- registering Spring bean in the K5 service registry and use it in
|> |another apps running in K5
|> |- registering "generic" services (like the json-config-loader,
|> |extractor, etc) that provide shared resources (like HTTP handler)
|> |
|> |Regards
|> |JB
|> |
|> |On 29/09/2021 23:30, jgfrm wrote:
|> |> Perhaps.
|> |>
|> |> I want to be able to use a bean in other Spring module.
|> |>
|> |> What is also an issue it that two (or more) modules obviously
|> |> result in two
|> |sockets to be opened, in my case both 8400.
|> |> A solution could be to open a different socket per module, e.g.
|> |> negotiated
|> |with a module for that purpose that also routes traffic for a
|> |particular endpoint to the socket of the module handling that endpoint.
|> |>
|> |> In https://github.com/hank-cp/sbp (based on pf4j) they have a
|> |> different
|> |strategy; there they have one socket for REST calls, and specific
|> |endpoints are forwarded to the appropriate plugin.
|> |>
|> |> Best,
|> |>
|> |> -- Jaap
|> |>
|> |>
|> |> |-Oorspronkelijk bericht-
|> |> |Van: JB Onofré 
|> |> |Verzonden: woensdag 29 september 2021 22:17
|> |> |Aan: user@karaf.apache.org
|> |> |Onderwerp: Re: Karaf 5
|> |> |
|> |> |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  a écrit :
|> |> |>
|> |> |> Is there already something working for exporting functionality
|> |> |> of a Spring
|> |> |modules to other modules?
|> |> |>
|> |> |> |-Oorspronkelijk bericht-
|> |> |> |Van: Jean-Baptiste Onofré 
|> |> |> |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-bo
|> |> |> |ot-
|> |> |> |application-
|> |> |> |manager/src/main/java/org/apache/karaf/springboot/SpringBootApp
|> |> |> |lic
|> |> |> |ati
|> |> |> |on
|> |> |> |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:
|> |> |> |> 
|> |> |>

RE: Karaf 5

2021-09-30 Thread jgfrm
Hi JB,

That sounds interesting!
Is it possible to share what you developed?

Best,

-- Jaap

|-Oorspronkelijk bericht-
|Van: Jean-Baptiste Onofré 
|Verzonden: donderdag 30 september 2021 11:34
|Aan: user@karaf.apache.org
|Onderwerp: Re: Karaf 5
|
|Hi Jaap,
|
|so, yes, we are talking about the same thing ;)
|
|There are actually two parts:
|
|- registering Spring bean in the K5 service registry and use it in another apps
|running in K5
|- registering "generic" services (like the json-config-loader, extractor, etc) 
that
|provide shared resources (like HTTP handler)
|
|Regards
|JB
|
|On 29/09/2021 23:30, jgfrm wrote:
|> Perhaps.
|>
|> I want to be able to use a bean in other Spring module.
|>
|> What is also an issue it that two (or more) modules obviously result in two
|sockets to be opened, in my case both 8400.
|> A solution could be to open a different socket per module, e.g. negotiated
|with a module for that purpose that also routes traffic for a particular
|endpoint to the socket of the module handling that endpoint.
|>
|> In https://github.com/hank-cp/sbp (based on pf4j) they have a different
|strategy; there they have one socket for REST calls, and specific endpoints are
|forwarded to the appropriate plugin.
|>
|> Best,
|>
|> -- Jaap
|>
|>
|> |-Oorspronkelijk bericht-
|> |Van: JB Onofré 
|> |Verzonden: woensdag 29 september 2021 22:17
|> |Aan: user@karaf.apache.org
|> |Onderwerp: Re: Karaf 5
|> |
|> |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  a écrit :
|> |>
|> |> Is there already something working for exporting functionality of
|> |> a Spring
|> |modules to other modules?
|> |>
|> |> |-Oorspronkelijk bericht-
|> |> |Van: Jean-Baptiste Onofré 
|> |> |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/SpringBootApplic
|> |> |ati
|> |> |on
|> |> |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-
|> |> |> tes
|> |> |> t-1
|> |> |> .0-SNAPSHOT.jar:../karaf5/services/spring-boot-application-manag
|> |> |> er/ 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é 
|> |> |> |Verzonden: dinsdag 28 september 2021 06:34
|> |> |> |Aan: user@karaf.apache.org
|> |> 

RE: Karaf 5

2021-09-29 Thread jgfrm
Perhaps.

I want to be able to use a bean in other Spring module.

What is also an issue it that two (or more) modules obviously result in two 
sockets to be opened, in my case both 8400.
A solution could be to open a different socket per module, e.g. negotiated with 
a module for that purpose that also routes traffic for a particular endpoint to 
the socket of the module handling that endpoint.

In https://github.com/hank-cp/sbp (based on pf4j) they have a different 
strategy; there they have one socket for REST calls, and specific endpoints are 
forwarded to the appropriate plugin.

Best,

-- Jaap


|-Oorspronkelijk bericht-
|Van: JB Onofré 
|Verzonden: woensdag 29 september 2021 22:17
|Aan: user@karaf.apache.org
|Onderwerp: Re: Karaf 5
|
|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  a écrit :
|>
|> Is there already something working for exporting functionality of a Spring
|modules to other modules?
|>
|> |-Oorspronkelijk bericht-
|> |Van: Jean-Baptiste Onofré 
|> |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/SpringBootApplicati
|> |on
|> |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-tes
|> |> t-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é 
|> |> |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  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 
|> |> |> |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
|> |> |> |
|> |> |>

RE: Karaf 5

2021-09-29 Thread jgfrm
Is there already something working for exporting functionality of a Spring 
modules to other modules?

|-Oorspronkelijk bericht-
|Van: Jean-Baptiste Onofré 
|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é 
|> |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  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 
|> |> |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  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 
|> |> |> |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 y

RE: Karaf 5

2021-09-29 Thread jgfrm
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/target/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é 
|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  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 
|> |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  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 
|> |> |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  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
|> |> |>

RE: Karaf 5

2021-09-27 Thread jgfrm
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 
|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  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 
|> |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  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.TomcatURLStre
|> |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/e3web-tes
|> |> t-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 Main
|> |>
|> |> Main.java:
|> |> ###
|> |> public class Main {
|> |>public s

RE: Karaf 5

2021-09-26 Thread jgfrm
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 
|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  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.TomcatURLStream
|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/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 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é 
|> |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/1nDqd4oVbrggTDlwrzWc8zEdahKhc
|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
|> |>
|>




RE: Karaf 5

2021-09-26 Thread jgfrm
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.TomcatURLStreamHandlerFactory").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").getMethod("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/e3web-test-1.0-SNAPSHOT.jar:../karaf5/services/spring-boot-application-manager/target/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é 
|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/1nDqd4oVbrggTDlwrzWc8zEdahKhcS
|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
|>



RE: Karaf 5

2021-09-24 Thread jgfrm
Excellent, many thanks.
I will first view your presentation (couldn't make it when it was presented 
unfortunately) and I case of questions come back to best.

Best,

-- Jaa[

|-Oorspronkelijk bericht-
|Van: Jean-Baptiste Onofré 
|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/1nDqd4oVbrggTDlwrzWc8zEdahKhcS
|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
|>



Karaf 5

2021-09-24 Thread jgfrm
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



Modularized persistence

2021-09-20 Thread jgfrm
Hi,

I wonder how to implement modularized persistence, e.g. with JPA (but
something else is also OK).
What I want to achieve:
- Each module (feature) is capable to persist its own information, and
cannot access information persisted by other modules directly
- A module can only obtain persisted information by other module via an
API/service published by the module owning the information
- Preferably, it still should be possible to relate entities from the one
module to entities owned by another module ( a solution could be to omit the
foreign key constraint)
- A way to trigger cascaded saves and deletes of entities across multiple
modules (e.g information that owns other information can only be deleted, if
the owned information is deleted to, meaning that the implied foreign key
between the owned and owning information is repected)
- A general/shared mechanism for access control across modules which persist
information, e.g. a user can only access the information he is entitled to.

Thanks

-- Jaap