Re: How can I remove the admin module?
Rene Cordier <[email protected]>
| Newsgroups | gmane.comp.jakarta.james.user |
|---|---|
| Message-ID | <[email protected]> |
Hello Martijn, Yes removing the TaskManagerModule should work. You can only start admin tasks via wedadmin anyways. So if you don't use them, it is safe I believe to remove. Best regards, Rene. On 28/06/2023 21:49, martijn brinkers wrote: > I think I have found it. I also had to disable the TaskManager module: > > private static final Module PROTOCOLS = Modules.combine( > new ProtocolHandlerModule(), > new SMTPServerModule(), > // new WebAdminServerModule(), > // new DataRoutesModules(), > // new MailRepositoriesRoutesModule(), > // new MailQueueRoutesModule(), > // new NoJwtModule(), > new DefaultProcessorsConfigurationProviderModule() > // new TaskManagerModule() > ); > > > On Wed, Jun 28, 2023 at 4:27 PM martijn brinkers <[email protected]> > wrote: > >> Hi, >> >> I'm trying to create a James server (I'm using release 3.8) without the >> admin module. Main reason for this is that I want a minimal system. >> >> As an experiement I created a copy of the jpa-smtp-app and then tried to >> remove modules related to the webadmin. >> >> It works if I disable some admin modules. However disabling the >> DataRoutesModules results in a runtime error when trying to start the >> application. >> >> From JPAJamesServerMain: >> >> private static final Module PROTOCOLS = Modules.combine( >> new ProtocolHandlerModule(), >> new SMTPServerModule(), >> // new WebAdminServerModule(), >> // new DataRoutesModules(), >> // new MailRepositoriesRoutesModule(), >> // new MailQueueRoutesModule(), >> // new NoJwtModule(), >> new DefaultProcessorsConfigurationProviderModule(), >> new TaskManagerModule()); >> >> With the admin modules commented out, compilation works. However at >> runtime the folllowing error is shown: >> >> >> 16:19:18.519 [ERROR] o.a.j.GuiceJamesServer - Fatal error while starting >> James >> com.google.inject.CreationException: Unable to create injector, see the >> following errors: >> >> 1) [Guice/MissingImplementation]: No implementation for >> Set<AdditionalInformationDTOModule<? extends >> TaskExecutionDetails$AdditionalInformation, ? extends >> AdditionalInformationDTO>> was bound. >> >> Did you mean? >> Set<AdditionalInformationDTOModule<? extends >> TaskExecutionDetails$AdditionalInformation, ? extends >> AdditionalInformationDTO>> annotated with >> @Named(value="additional_information_dto") bound at >> TaskSerializationModule.provideAdditionalInformationDTOModules(TaskSerializationModule.java:60) >> \_ installed by: Modules$OverrideModule -> Modules$CombinedModule -> >> Modules$CombinedModule -> Modules$CombinedModule -> TaskManagerModule -> >> TaskSerializationModule >> >> Requested by: >> 1 : >> TaskSerializationModule.provideAdditionalInformationDTOModules(TaskSerializationModule.java:60) >> \_ for 1st parameter >> at >> TaskSerializationModule.provideAdditionalInformationDTOModules(TaskSerializationModule.java:60) >> \_ installed by: Modules$OverrideModule -> Modules$CombinedModule -> >> Modules$CombinedModule -> Modules$CombinedModule -> TaskManagerModule -> >> TaskSerializationModule >> >> Learn more: >> https://github.com/google/guice/wiki/MISSING_IMPLEMENTATION >> >> 2) [Guice/MissingImplementation]: No implementation for >> Set<TaskDTOModule<? extends Task, ? extends TaskDTO>> was bound. >> >> Did you mean? >> Set<TaskDTOModule<? extends Task, ? extends TaskDTO>> annotated with >> @Named(value="task_dto") bound at >> TaskSerializationModule.provideTaskDTOModules(TaskSerializationModule.java:83) >> \_ installed by: Modules$OverrideModule -> Modules$CombinedModule -> >> Modules$CombinedModule -> Modules$CombinedModule -> TaskManagerModule -> >> TaskSerializationModule >> >> Requested by: >> 1 : >> TaskSerializationModule.provideTaskDTOModules(TaskSerializationModule.java:83) >> \_ for 1st parameter >> at >> TaskSerializationModule.provideTaskDTOModules(TaskSerializationModule.java:83) >> \_ installed by: Modules$OverrideModule -> Modules$CombinedModule -> >> Modules$CombinedModule -> Modules$CombinedModule -> TaskManagerModule -> >> TaskSerializationModule >> >> If I only enable DataRoutesModules, the above error is not shown. >> >> private static final Module PROTOCOLS = Modules.combine( >> new ProtocolHandlerModule(), >> new SMTPServerModule(), >> // new WebAdminServerModule(), >> new DataRoutesModules(), >> // new MailRepositoriesRoutesModule(), >> // new MailQueueRoutesModule(), >> // new NoJwtModule(), >> new DefaultProcessorsConfigurationProviderModule(), >> new TaskManagerModule()); >> >> The DataRoutesModules however pull in spark-core via a dependency (and >> therefore also jetty etc) which I would like to prevent. >> >> What I do not understand is that it looks like >> "Set<AdditionalInformationDTOModule<? extends >> TaskExecutionDetails$AdditionalInformation, ? extends >> AdditionalInformationDTO>>" is provided by TaskSerializationModule and >> TaskSerializationModule is installed by TaskManagerModule. It therefore >> looks like there is an implementation available. >> >> Any suggestion on how I can complete remove the web admin (and it's >> dependencies). >> >> Kind regards, >> >> Martijn Brinkers >> >