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