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 <martijn.l...@gmail.com>
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
---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscr...@james.apache.org
For additional commands, e-mail: server-user-h...@james.apache.org