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
>>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.