Java: Apache James In-Memory Mail Server Fails to Start?



我试图在Java应用程序中嵌入Apache James的内存实例,但遇到错误。

我遵循这里的例子:

GitHub示例项目

Apache James网站

我收到的错误是:

Failed to start application (with profile [dev]): org.apache.commons.configuration2.ex.ConfigurationException: You need to configure a Processor with name error

下面是我的代码:

private static final Module PROTOCOLS = Modules.combine(
new IMAPServerModule(),
new ProtocolHandlerModule(),
new MailRepositoryTaskSerializationModule(),
new SMTPServerModule());
private static final Module CUSTOM_SERVER_MODULE = Modules.combine(
new MailetProcessingModule(),
new MailboxModule(),
new MemoryDataModule(),
new MemoryEventStoreModule(),
new MemoryUsersRepositoryModule(),
new MemoryMailboxModule(),
new MemoryQuotaModule(),
new MemoryMailQueueModule(),
new TaskManagerModule(),
new RawPostDequeueDecoratorModule(),
binder -> binder.bind(MailetContainerModule.DefaultProcessorsConfigurationSupplier.class)
.toInstance(BaseHierarchicalConfiguration::new));
private static final Module CUSTOM_SERVER_AGGREGATE_MODULE = Modules.combine(
CUSTOM_SERVER_MODULE,
PROTOCOLS);
private final GuiceJamesServer inMemMailServer;
public MailServerImpl() {
Configuration config = Configuration.builder()
.workingDirectory(myConfigDir)
.configurationPath(new Configuration.ConfigurationPath(myConfigDir))
.build();
this.inMemMailServer = GuiceJamesServer
.forConfiguration(config)
.combineWith(CUSTOM_SERVER_AGGREGATE_MODULE);
}

我通过为嵌入式Apache James服务器添加缺失的配置文件来解决这个问题。服务器需要在其GitHub repo

中找到本例中的配置。为了启动服务器,必须包含示例中的smtpserver.xml文件、mailrepositorstore .xml文件和mailetcontainer.xml文件。如果希望使用IMAP功能,还应该包含imapserver.xml文件。

还有一件事要注意的是,上面在James网站上的页面与示例项目不是最新的(在撰写本文时)。如果你看一下GitHub中的示例,就会发现示例代码和网站示例代码之间存在一些差异。

如果嵌入到另一个web应用程序中,如I am,您将需要将您的XML配置存储在资源文件夹的根目录中,以便最少的配置启动。

相关内容

  • 没有找到相关文章

最新更新