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