Yeah, would be great if you could share the JSON, but also outline the overall 
approach. And if this JOSN file is required for the process, we'd need a way to 
test and maintain it going forward.

Andrus


> On Apr 5, 2023, at 1:58 PM, Andrew Lindesay <a...@lindesay.co.nz> wrote:
> 
> Hi Andrus;
> 
> Thanks for coming back to me.  It seems that for my situation, I need to let 
> the build tool know that each of the "injectable" classes should be allowed 
> to be scanned for constructors in the build product by supplying the Graal 
> build-tool with;
> 
> ```
> -H:ReflectionConfigurationFiles=/...path.../reflection.json
> ```
> 
> The snipped `reflection.json` file looks like;
> 
> ```
> [
>  {
>    "name": "org.apache.cayenne.access.DataDomain",
>    "queryAllDeclaredConstructors": true
>  },
>  {
>    "name": 
> "org.apache.cayenne.access.dbsync.DefaultSchemaUpdateStrategyFactory",
>    "queryAllDeclaredConstructors": true
>  },
>  ....... continued ....
> ]
> ```
> 
> There are entries for 117 classes.  It seems this file can be supplied with 
> the library jar in some way in order to instruct the Graal build tool.  Maybe 
> once I have this fully working I can add a PR for it to cover the known 
> classes in the jar(s).
> 
> Regards.
> 
> -- 
> Andrew Lindesay
> 
> On Wed, 5 Apr 2023, at 20:31, Andrus Adamchik wrote:
>> Hi Andrew,
>> 
>> I don't have first-hand experience, but Cayenne was reported to work 
>> with GraalVM. E.g.: 
>> https://lists.apache.org/list?user@cayenne.apache.org:2023-1:graalvm
>> 
>> Andrus
>> 
>> 
>>> On Apr 5, 2023, at 10:26 AM, Andrew Lindesay <a...@lindesay.co.nz> wrote:
>>> 
>>> Hello;
>>> 
>>> Has anybody here experimented with running an application using Cayenne 
>>> with the GraalVM "native image" compiler?  The resultant executable seems 
>>> to be having a problem with the DI system at run time; probably because 
>>> there's some reflection going on in there -- seems likely.  Is there any 
>>> documentation / guidance about how to start the `ServerRuntime` without the 
>>> DI mechanism?
>>> 
>>> Caused by: org.apache.cayenne.di.DIRuntimeException: No applicable 
>>> constructor is found for constructor injection in class 
>>> 'org.apache.cayenne.log.Slf4jJdbcEventLogger'
>>>     at 
>>> org.apache.cayenne.di.spi.ConstructorInjectingProvider.initConstructor(ConstructorInjectingProvider.java:103)
>>>  ~[na:na]
>>>     at 
>>> org.apache.cayenne.di.spi.ConstructorInjectingProvider.<init>(ConstructorInjectingProvider.java:42)
>>>  ~[na:na]
>>>     at 
>>> org.apache.cayenne.di.spi.DefaultBindingBuilder.to(DefaultBindingBuilder.java:44)
>>>  ~[na:na]
>>>     at 
>>> org.apache.cayenne.configuration.server.ServerModule.configure(ServerModule.java:349)
>>>  ~[na:na]
>>>     at 
>>> org.apache.cayenne.di.spi.DefaultInjector.<init>(DefaultInjector.java:68) 
>>> ~[na:na]
>>>     at 
>>> org.apache.cayenne.di.DIBootstrap.createInjector(DIBootstrap.java:38) 
>>> ~[na:na]
>>>     at 
>>> org.apache.cayenne.di.DIBootstrap.createInjector(DIBootstrap.java:46) 
>>> ~[na:na]
>>>     at 
>>> org.apache.cayenne.configuration.CayenneRuntime.<init>(CayenneRuntime.java:79)
>>>  ~[haikudepotserver-webapp:4.1.1]
>>>     at 
>>> org.apache.cayenne.configuration.server.ServerRuntime.<init>(ServerRuntime.java:75)
>>>  ~[haikudepotserver-webapp:4.1.1]
>>>     at 
>>> org.apache.cayenne.configuration.server.ServerRuntimeBuilder.build(ServerRuntimeBuilder.java:207)
>>>  ~[na:na]
>>> 
>>> Regards.
>>> 
>>> -- 
>>> Andrew Lindesay

Reply via email to