Ok, that's weird. Looks like some environment-specific class loader issue. You 
mention modules. Are you using OSGI or JPMS (Java modules) by any chance? 

Andrus

> On Apr 14, 2025, at 9:00 AM, Stefano Morini 
> <stefano.mor...@cpsistemi.it.INVALID> wrote:
> 
> Hi Andrus,
> 
> Thanks. Yes It seems using the same cayenneRuntime.
> 
> I'm trying to use Cayenne from Ignition Module. (The same code runs if I 
> start it from a main)
> 
> In the Module Setup I have to create runtime and context as I saw in cayenne 
> getting started.
> 
> public void setup(GatewayContext gatewayContext) {
> ServerRuntime cayenneRuntime =ServerRuntime.builder()
>               
> .addConfig("it/cpsistemi/ignition/mes/core/scripting/cayenne-Cayenne.xml")    
>   .build();
> 
> DataManager dataManager =new DataManager(cayenneRuntime.newContext());
> 
> 
> XML files are present in jar and the Ignition module.
> The instruction newContext() returns this exception:
> DI container has no binding for key <BindingKey: 
> org.apache.cayenne.configuration.ObjectContextFactory>
> org.apache.cayenne.di.DIRuntimeException: DI container has no binding for key 
> <BindingKey: org.apache.cayenne.configuration.ObjectContextFactory>
>     at 
> org.apache.cayenne.di.spi.DefaultInjector.getProvider(DefaultInjector.java:158)
>     at 
> org.apache.cayenne.di.spi.DefaultInjector.getProvider(DefaultInjector.java:144)
>     at 
> org.apache.cayenne.di.spi.DefaultInjector.getInstance(DefaultInjector.java:134)
>     at 
> org.apache.cayenne.configuration.CayenneRuntime.newContext(CayenneRuntime.java:124)
>     at 
> it.cpsistemi.ignition.mes.core.scripting.GatewayHook.setup(GatewayHook.java:50)
>     at 
> com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$LoadedModule.setup(ModuleManagerImpl.java:2364)
>     at 
> com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.startupModule(ModuleManagerImpl.java:1179)
>     at 
> com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$2.call(ModuleManagerImpl.java:726)
>     at 
> com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.executeModuleOperation(ModuleManagerImpl.java:902)
>     at 
> com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.installModuleInternal(ModuleManagerImpl.java:692)
>     at 
> com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$InstallCommand.execute(ModuleManagerImpl.java:1861)
>     at 
> com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$Receiver.receiveCall(ModuleManagerImpl.java:1814)
>     at 
> com.inductiveautomation.ignition.gateway.redundancy.QueueableMessageReceiver.receiveCall(QueueableMessageReceiver.java:47)
>     at 
> com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl.dispatchMessage(RedundancyManagerImpl.java:1030)
>     at 
> com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl$ExecuteTask.run(RedundancyManagerImpl.java:1098)
>     at 
> com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine$ThrowableCatchingRunnable.run(BasicExecutionEngine.java:544)
>     at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown 
> Source)
>     at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
>     at 
> java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown
>  Source)
>     at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown 
> Source)
>     at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown 
> Source)
>     at java.base/java.lang.Thread.run(Unknown Source)
> 
> Stefano
> 
> Il 14/04/2025 08:09, Andrus Adamchik ha scritto:
>> Hi Stefano,
>> 
>> I left a similar comment on Stack Overflow. The code here and the stack 
>> trace are two different things. You need to debug the GatewayHook.setup(..) 
>> method. Check a couple of things - Is it using the same runtime as below? Is 
>> it invoked after that runtime was already instantiated?
>> 
>> Andrus
>> 
>> 
>>> On Apr 10, 2025, at 6:49 PM, Stefano 
>>> Morini<stefano.mor...@cpsistemi.it.INVALID> wrote:
>>> 
>>> Hi all,
>>> 
>>> I’m new in Apache Cayenne 4.2.2.
>>> 
>>> I have a problem: every time I try to do this
>>> ServerRuntime cayenneRuntime = ServerRuntime.builder()
>>>          
>>> .addConfig("it/cpsistemi/ignition/mes/core/scripting/cayenne-Cayenne.xml")
>>>         .build();
>>> DataManager dataManager = new DataManager(cayenneRuntime.newContext());
>>> 
>>> Config files are in resources
>>> <Screenshot 2025-04-10 alle 18.43.55.png>
>>> 
>>> I have this error
>>> org.apache.cayenne.di.DIRuntimeException: DI container has no binding for 
>>> key <BindingKey: org.apache.cayenne.resource.ResourceLocator>
>>> 
>>> at 
>>> org.apache.cayenne.di.spi.DefaultInjector.getProvider(DefaultInjector.java:158)
>>> 
>>> at 
>>> org.apache.cayenne.di.spi.DefaultInjector.getInstance(DefaultInjector.java:139)
>>> 
>>> at 
>>> org.apache.cayenne.di.spi.FieldInjectingProvider.value(FieldInjectingProvider.java:103)
>>> 
>>> at 
>>> org.apache.cayenne.di.spi.FieldInjectingProvider.injectMember(FieldInjectingProvider.java:68)
>>> 
>>> at 
>>> org.apache.cayenne.di.spi.FieldInjectingProvider.injectMembers(FieldInjectingProvider.java:59)
>>> 
>>> at 
>>> org.apache.cayenne.di.spi.FieldInjectingProvider.injectMembers(FieldInjectingProvider.java:63)
>>> 
>>> at 
>>> org.apache.cayenne.di.spi.FieldInjectingProvider.get(FieldInjectingProvider.java:44)
>>> 
>>> at 
>>> org.apache.cayenne.di.spi.CustomProvidersProvider.get(CustomProvidersProvider.java:39)
>>> 
>>> at 
>>> org.apache.cayenne.di.spi.FieldInjectingProvider.get(FieldInjectingProvider.java:43)
>>> 
>>> at 
>>> org.apache.cayenne.di.spi.DefaultScopeProvider.get(DefaultScopeProvider.java:50)
>>> 
>>> at 
>>> org.apache.cayenne.di.spi.DefaultInjector.getInstance(DefaultInjector.java:134)
>>> 
>>> at 
>>> it.cpsistemi.ignition.mes.core.scripting.GatewayHook.setup(GatewayHook.java:43)
>>> 
>>> Any help will be appreciated.
>>> Stefano

Reply via email to