[ 
https://issues.apache.org/jira/browse/JAMES-3580?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17342243#comment-17342243
 ] 

Benoit Tellier commented on JAMES-3580:
---------------------------------------

Hello Cosimo Damiano Prete,

This behaviour is expected. Unlike the Spring wiring, where a user could 
replace any sub-parts of the running server with configuration only, and break 
things in very subtle ways, guice setup is more strict: You cannot replace 
server running parts but only provide some well define sets of extensions 
(mailet, matcher, protocol handler, mailbox listener, webadmin route).

So it is expected that you cannot change that.

However, James + Guice is more than just servers on the shelf. One can very 
easily assemble a mail server of his own in just 10-100 lines of code by 
combining the Guice modules the way he wants! Thus using James as a toolkit to 
craft your own tailor-made server. The fact that the user needs to write code 
and its own assembling is expected as it is intended to clearly state "your 
code, your responsibility" which means: 1. test your own components 2. test 
your combinations.

I did a similar tailor made James server for my company: 
https://github.com/linagora/tmail-backend/

Especially the module declaration can be seen here: 
https://github.com/linagora/tmail-backend/blob/master/tmail-backend/apps/memory/src/main/java/com/linagora/tmail/james/app/MemoryServer.java

I guess we should at the very least write a *"how to"* on the topic, including 
a *code example*, it would make the overall experience easier for end users. 
This how to would:
 - state how to override any component
 - state how to remove components

Would it fit your needs?

Benoit

> Can't integrate PostgreSQL completely
> -------------------------------------
>
>                 Key: JAMES-3580
>                 URL: https://issues.apache.org/jira/browse/JAMES-3580
>             Project: James Server
>          Issue Type: Bug
>          Components: guice, jpa
>    Affects Versions: 3.6.0
>            Reporter: Cosimo Damiano Prete
>            Priority: Blocker
>
> Hi guys.
> I'm migrating from James 2 to 3.6.0 and I cannot find any way to make it work 
> completely with PostgreSQL.
> By following the documentation, I set the DB connection properties in the 
> james-database.properties file but, somehow, in the logs I always get: 
> 15:35:33.924 [INFO ] o.a.j.m.m.MemoryMailRepositoryStore - JamesMailStore 
> init... 
> org.apache.james.mailrepository.memory.MemoryMailRepositoryStore@33827b88
> As a result, I don't see any data in the database at all. Unfortunately the 
> documentation doesn't really help much more, so I don't know where else I 
> should have a look at.
> Moreover, in James 2 I had the possibility to specify my own datasource 
> implementation. Is it possible with James 3 as well and, if it's so, how?
> Finally, I would need to create the users on the fly if they don't exist. Is 
> there something already available? I was trying by using an extension which 
> defines a Guice module providing an interceptor: 
> {code:java}
> public class CreateUserIfMissingModule extends AbstractModule {
>     @Override
>     protected void configure() {
>         final CreateUserIfMissingInterceptor interceptor = new 
> CreateUserIfMissingInterceptor();
>         requestInjection(interceptor); // Inject the repository
>         bindInterceptor(subclassesOf(UsersRepository.class), 
> returns(subclassesOf(Boolean.class)), interceptor);
>     }
> } {code}
> but, also this one, is not picked up at all.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to