Geronimo-JAMES integration

View: New views
20 Messages — Rating Filter:   Alert me  
< Prev | 1 - 2 - 3 | Next >

Geronimo-JAMES integration

by djencks :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I've been hoping for a Geronimo-JAMES integration since the start of  
the Geronimo project.  Two fairly recent developments in JAMES have  
now made this a relatively simple task:  the maven build and the  
spring integration code.

- the maven build enables painless connection between the build  
systems of the two projects, so changes in JAMES get picked up  
immediately by the geronimo plugin under development
- the spring integration enables a non-avalon expert to construct and  
start a JAMES server

After a couple days work and fixing a few problems in JAMES I now have  
a geronimo james plugin that runs a james server inside geronimo.

Instructions:

1. Apply patches for JAMES-840, 841, and 842 to james trunk.  Get all  
the jars needed for the build into the private stage repository  
(JAMES-840).  (I realize these instructions are unclear but they are  
the best I have at the moment)

2. Build JAMES with maven
mvn clean install -Plocal

3. Build geronimo trunk (I haven't checked to see if sufficiently up  
to date geronimo snapshots are available.  We also have some private  
repo issues that may make at least one local build of geronimo  
necessary).

4. check out
svn co https://svn.apache.org/repos/asf/geronimo/plugins/james/trunk

5. build james plugin
mvn clean install -Pwith-assembly

6. Fire up the sample server
cd james-server/target
tar xzf james-server-1.0-SNAPSHOT-bin.tar.gz
./james-server-1.0-SNAPSHOT/bin/gsh geronimo/start-server

I've put the james config files in a geronimo-standard location of var/
james/config.  I changed the ports so the server would start without  
superuser permissions.  So far I just know the server starts without  
errors: I haven't figure out how to test if it can actually do anything.

-----------------------------------

Future directions

Even in its current state this plugin/integration is only viable if  
the JAMES community
- works to resolve the issues noted in JAMES-840, 841, 842
- continues to maintain the maven build

Currently there is minimal integration between geronimo and JAMES.    
One really obvious integration point would be to use geroniimo  
supplied datasources.  However glancing at the code there appears to  
be a certain amount of fishing for configuration rather than  
dependency injection.  I'm wondering whether there is any interest in  
moving to JPA based database access, and whether this would be  
significantly harder than just changing the datasource source.  
Obviously this would imply moving JAMES to java 5.

Another issue I came across is use of com.sun mail classes (I started  
by trying to use the geronimo mail provider before I understood why  
the stage repo wasn't working for me).  Is this intentional?  Are you  
interested in also supporting the geronimo mail implementation?

Finally I came across some comments that DNS is needed (as you can  
probably tell I know almost nothing about mail).  I wondered if any  
thought had been given to using apacheds in-vm for this.

thanks
david jencks




---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@...
For additional commands, e-mail: server-dev-help@...


Re: Geronimo-JAMES integration

by robert burrell donkin-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Sun, Jun 15, 2008 at 7:31 PM, David Jencks <david_jencks@...> wrote:
> I've been hoping for a Geronimo-JAMES integration since the start of the
> Geronimo project.

cool

i have as well but not quite that long ;-)

> Two fairly recent developments in JAMES have now made
> this a relatively simple task:  the maven build and the spring integration
> code.
>
> - the maven build enables painless connection between the build systems of
> the two projects, so changes in JAMES get picked up immediately by the
> geronimo plugin under development
> - the spring integration enables a non-avalon expert to construct and start
> a JAMES server

bernd deserves kudos for this

> After a couple days work and fixing a few problems in JAMES I now have a
> geronimo james plugin that runs a james server inside geronimo.
>
> Instructions:
>
> 1. Apply patches for JAMES-840, 841, and 842 to james trunk.  Get all the
> jars needed for the build into the private stage repository (JAMES-840).  (I
> realize these instructions are unclear but they are the best I have at the
> moment)
>
> 2. Build JAMES with maven
> mvn clean install -Plocal
>
> 3. Build geronimo trunk (I haven't checked to see if sufficiently up to date
> geronimo snapshots are available.  We also have some private repo issues
> that may make at least one local build of geronimo necessary).
>
> 4. check out
> svn co https://svn.apache.org/repos/asf/geronimo/plugins/james/trunk
>
> 5. build james plugin
> mvn clean install -Pwith-assembly
>
> 6. Fire up the sample server
> cd james-server/target
> tar xzf james-server-1.0-SNAPSHOT-bin.tar.gz
> ./james-server-1.0-SNAPSHOT/bin/gsh geronimo/start-server
>
> I've put the james config files in a geronimo-standard location of
> var/james/config.  I changed the ports so the server would start without
> superuser permissions.  So far I just know the server starts without errors:
> I haven't figure out how to test if it can actually do anything.

send it some mail :-)

> -----------------------------------
>
> Future directions
>
> Even in its current state this plugin/integration is only viable if the
> JAMES community
> - works to resolve the issues noted in JAMES-840, 841, 842
> - continues to maintain the maven build

i hope we can do that

fancy moving the code here in the long run?

> Currently there is minimal integration between geronimo and JAMES.   One
> really obvious integration point would be to use geroniimo supplied
> datasources.  However glancing at the code there appears to be a certain
> amount of fishing for configuration rather than dependency injection.

JAMES is mostly IoC but the injection is hard to understand and inconsistent

(one of my motivations for trying to split JAMES into reusable
components is to address this)

> I'm wondering whether there is any interest in moving to JPA based database
> access, and whether this would be significantly harder than just changing
> the datasource source.  Obviously this would imply moving JAMES to java 5.

(i was planning to add JPA-based data access for IMAP once i get round
to sorting out the data access layer)

not necessarily: adding new JPA based database acccess is very doable.
a new java 5 module for JPA would be fine.

IMHO it would clean and clearer to implement this as a separate
component dependent only on the API (but would need some changes)

> Another issue I came across is use of com.sun mail classes (I started by
> trying to use the geronimo mail provider before I understood why the stage
> repo wasn't working for me).  Is this intentional?

consequential

>  Are you interested in also supporting the geronimo mail implementation?

i would prefer to use geronimo (i find the sun implementation slow and
buggy but then again, i'm not a javamail fan) but others prefer sun

> Finally I came across some comments that DNS is needed (as you can probably
> tell I know almost nothing about mail).

depends on the protocol. AIUI SMTP requires correct that DNS is set up
appropriate for the machine.

>  I wondered if any thought had been
> given to using apacheds in-vm for this.

(hopefully one of the SMTP experts will jump in an answer this)

- robert

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@...
For additional commands, e-mail: server-dev-help@...


Re: Geronimo-JAMES integration

by Bernd Fondermann :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

David Jencks wrote:
> I've been hoping for a Geronimo-JAMES integration since the start of the
> Geronimo project.  Two fairly recent developments in JAMES have now made
> this a relatively simple task:  the maven build and the spring
> integration code.

Me too. :-)

It was one of the major motivations for starting the JAMES Spring
Deployment.

> - the maven build enables painless connection between the build systems
> of the two projects, so changes in JAMES get picked up immediately by
> the geronimo plugin under development
> - the spring integration enables a non-avalon expert to construct and
> start a JAMES server
>
> After a couple days work and fixing a few problems in JAMES I now have a
> geronimo james plugin that runs a james server inside geronimo.

:-)))

Thanks, Mr Jencks!! (Sorry for stealing the obvious pun from your sig.)
That's great news!!


   Bernd

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@...
For additional commands, e-mail: server-dev-help@...


Re: Geronimo-JAMES integration

by Bernd Fondermann :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

David Jencks wrote:
> I've put the james config files in a geronimo-standard location of
> var/james/config.  I changed the ports so the server would start without
> superuser permissions.  So far I just know the server starts without
> errors: I haven't figure out how to test if it can actually do anything.

You can use telnet at the SMTP port for this.
After the server greets you, type this (out of my head):
HELO localhost
MAIL FROM:<sender@localhost>
RCPT TO:<receiver@localhost>
DATA
This is a test message body

You end your message with a
<CRLF>.<CRLF>
sequence.

> -----------------------------------
>
> Future directions
>
> Currently there is minimal integration between geronimo and JAMES.   One
> really obvious integration point would be to use geroniimo supplied
> datasources.  

There is experimental code for JMS integration. Maybe worth taking a
look at.

   Bernd


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@...
For additional commands, e-mail: server-dev-help@...


Re: Geronimo-JAMES integration

by robert burrell donkin-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Sun, Jun 15, 2008 at 9:37 PM, Bernd Fondermann <bf_jak@...> wrote:
> David Jencks wrote:

<snip>

>> -----------------------------------
>>
>> Future directions
>>
>> Currently there is minimal integration between geronimo and JAMES.   One
>> really obvious integration point would be to use geroniimo supplied
>> datasources.
>
> There is experimental code for JMS integration. Maybe worth taking a look
> at.

rewriting the JAMES spool using JMS would be good

- robert

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@...
For additional commands, e-mail: server-dev-help@...


RE: Geronimo-JAMES integration

by Noel J. Bergman :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

> rewriting the JAMES spool using JMS would be good

Why?

You do realize that rewriting the spool for JMS actually means introducing a
spool broker service, right?

        --- Noel



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@...
For additional commands, e-mail: server-dev-help@...


Re: Geronimo-JAMES integration

by Stefano Bagnara-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

David Jencks ha scritto:

> I've been hoping for a Geronimo-JAMES integration since the start of the
> Geronimo project.  Two fairly recent developments in JAMES have now made
> this a relatively simple task:  the maven build and the spring
> integration code.
> [...]
> Instructions:
>
> 1. Apply patches for JAMES-840, 841, and 842 to james trunk.  Get all
> the jars needed for the build into the private stage repository
> (JAMES-840).  (I realize these instructions are unclear but they are the
> best I have at the moment)

I really hope we can tweak them and apply all of them. I commented each
issue on JIRA.

> 2. Build JAMES with maven
> mvn clean install -Plocal

If the maven build is not acceptable to our PMC another approach could
be to add a maven repository install script to the ant build.
Of course I would prefer if our PMC accept that people may prefer maven
to build our products.

> 3. Build geronimo trunk (I haven't checked to see if sufficiently up to
> date geronimo snapshots are available.  We also have some private repo
> issues that may make at least one local build of geronimo necessary).

Interesting.

> 4. check out
> svn co https://svn.apache.org/repos/asf/geronimo/plugins/james/trunk

I see there are 3 modules for that project:
geronimo-james/
james/
james-server/

can you explain (I don't know anything about "car" module type) ?

Is there anything you think should be moved to james project instead of
geronimo?

> 5. build james plugin
> mvn clean install -Pwith-assembly
>
> 6. Fire up the sample server
> cd james-server/target
> tar xzf james-server-1.0-SNAPSHOT-bin.tar.gz
> ./james-server-1.0-SNAPSHOT/bin/gsh geronimo/start-server
>
> I've put the james config files in a geronimo-standard location of
> var/james/config.  I changed the ports so the server would start without
> superuser permissions.  So far I just know the server starts without
> errors: I haven't figure out how to test if it can actually do anything.

Cool!
It looks like really simple!

> -----------------------------------
>
> Future directions
>
> Even in its current state this plugin/integration is only viable if the
> JAMES community
> - works to resolve the issues noted in JAMES-840, 841, 842
> - continues to maintain the maven build

+1

> Currently there is minimal integration between geronimo and JAMES.   One
> really obvious integration point would be to use geroniimo supplied
> datasources.  However glancing at the code there appears to be a certain
> amount of fishing for configuration rather than dependency injection.  
> I'm wondering whether there is any interest in moving to JPA based
> database access, and whether this would be significantly harder than
> just changing the datasource source.  Obviously this would imply moving
> JAMES to java 5.

+1

Moving to java 5 IMHO is no more an issue: as soon as a feature will
require java 5 we should simply stop declaring 1.4 compatibility: I
don't know anyone using an 1.4 jvm at this point.

> Another issue I came across is use of com.sun mail classes (I started by
> trying to use the geronimo mail provider before I understood why the
> stage repo wasn't working for me).  Is this intentional?  Are you
> interested in also supporting the geronimo mail implementation?

It is intentional. Last time I checked it geronimo mail implementation
was not enough for our delivery needs. There is a lot to change and we
would probably stop using javamail at all, instead of supporting
geronimo implementation for the remote delivery task. This is only my
opinion, of course.

> Finally I came across some comments that DNS is needed (as you can
> probably tell I know almost nothing about mail).  I wondered if any
> thought had been given to using apacheds in-vm for this.

We don't need a DNS server, just DNS lookup capabilities. We don't use
the JVM built-in DNS lookup mechanism because of issues in the caching
and expiration support. apacheds does not provide a dns client library.

At the moment the geronimo-james integration is simply a single gbean
for the whole james application: do you think it would be hard to
support 1 gbean per function? JAMES is composed by api modules, library
modules and function modules. functions only depends on libraries and
api, libraries only on apis, and api have no internal dependencies.
deployments simply aggregate functions. Is it possible to create
separate GBean for functions only when functions depends on shared
services or the only solution is to publish 1 gbean for each of our
services? I don't know geronimo, but it would be a great deployment
alternative if it allow us to undeploy 1 single function (e.g: the
spoolmanager), alter its configuration and redeploy it without stopping
the smtp/pop3 servers.

Stefano


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@...
For additional commands, e-mail: server-dev-help@...


Re: Geronimo-JAMES integration

by robert burrell donkin-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Mon, Jun 16, 2008 at 1:22 AM, Noel J. Bergman <noel@...> wrote:
>> rewriting the JAMES spool using JMS would be good
>
> Why?

specifically: restarting my JAMES instance every couple of days has
started to irritate

generally: we've talked before and the whole design around that area
of the system could be so much better

technology: actually support for any distributable messaging solution
but i can see no reason not to use a standard

> You do realize that rewriting the spool for JMS actually means introducing a
> spool broker service, right?

i think so but please elaborate

- robert

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@...
For additional commands, e-mail: server-dev-help@...


Re: Geronimo-JAMES integration

by Stefano Bagnara-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Robert Burrell Donkin ha scritto:
> On Mon, Jun 16, 2008 at 1:22 AM, Noel J. Bergman <noel@...> wrote:
>>> rewriting the JAMES spool using JMS would be good
>> Why?
>
> specifically: restarting my JAMES instance every couple of days has
> started to irritate

Do you think that the current spoolrepository implementation has
something to do with your restarts?
I'm not aware of issues in this and I don't restart my james since the
last reboot almost 3 months ago.

> generally: we've talked before and the whole design around that area
> of the system could be so much better
>
> technology: actually support for any distributable messaging solution
> but i can see no reason not to use a standard

I agree.

FYI I had an interesting discussion with James Strachan few weeks ago, here:
http://markmail.org/message/mp2pafe77efwczbb

Stefano


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@...
For additional commands, e-mail: server-dev-help@...


Re: Geronimo-JAMES integration

by djencks :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


On Jun 16, 2008, at 3:45 AM, Stefano Bagnara wrote:

> David Jencks ha scritto:
>> I've been hoping for a Geronimo-JAMES integration since the start  
>> of the Geronimo project.  Two fairly recent developments in JAMES  
>> have now made this a relatively simple task:  the maven build and  
>> the spring integration code.
>> [...]
>> Instructions:
>> 1. Apply patches for JAMES-840, 841, and 842 to james trunk.  Get  
>> all the jars needed for the build into the private stage repository  
>> (JAMES-840).  (I realize these instructions are unclear but they  
>> are the best I have at the moment)
>
> I really hope we can tweak them and apply all of them. I commented  
> each issue on JIRA.
>
>> 2. Build JAMES with maven
>> mvn clean install -Plocal
>
> If the maven build is not acceptable to our PMC another approach  
> could be to add a maven repository install script to the ant build.
> Of course I would prefer if our PMC accept that people may prefer  
> maven to build our products.
>
>> 3. Build geronimo trunk (I haven't checked to see if sufficiently  
>> up to date geronimo snapshots are available.  We also have some  
>> private repo issues that may make at least one local build of  
>> geronimo necessary).
>
> Interesting.
>
>> 4. check out
>> svn co https://svn.apache.org/repos/asf/geronimo/plugins/james/trunk
>
> I see there are 3 modules for that project:
> geronimo-james/
> james/
> james-server/
>
> can you explain (I don't know anything about "car" module type) ?

geronimo-james has the java integration code
james builds a geronimo plugin, using that code.  When you build it  
it's installed in your local geronimo plugin repository (i.e. the  
local maven repo + listed in a geronimo metadata file).  At this point  
it's available to the geronimo plugin system, so you can add it to an  
existing server using the admin console or command line tools. or...
james-server is a minimal server assembly that has the geroniimo  
kernel, a bit of other supporting stuff, and the james plugin.
>
>
> Is there anything you think should be moved to james project instead  
> of geronimo?

It would be great if the james project wanted to take over this  
plugin, but I think we should make sure it works and is stable and  
doesn't have too many issues with deploying on different geronimo  
versions first.

>
>
>> 5. build james plugin
>> mvn clean install -Pwith-assembly
>> 6. Fire up the sample server
>> cd james-server/target
>> tar xzf james-server-1.0-SNAPSHOT-bin.tar.gz
>> ./james-server-1.0-SNAPSHOT/bin/gsh geronimo/start-server
>> I've put the james config files in a geronimo-standard location of  
>> var/james/config.  I changed the ports so the server would start  
>> without superuser permissions.  So far I just know the server  
>> starts without errors: I haven't figure out how to test if it can  
>> actually do anything.
>
> Cool!
> It looks like really simple!
>
>> -----------------------------------
>> Future directions
>> Even in its current state this plugin/integration is only viable if  
>> the JAMES community
>> - works to resolve the issues noted in JAMES-840, 841, 842
>> - continues to maintain the maven build
>
> +1
>
>> Currently there is minimal integration between geronimo and  
>> JAMES.   One really obvious integration point would be to use  
>> geroniimo supplied datasources.  However glancing at the code there  
>> appears to be a certain amount of fishing for configuration rather  
>> than dependency injection.  I'm wondering whether there is any  
>> interest in moving to JPA based database access, and whether this  
>> would be significantly harder than just changing the datasource  
>> source.  Obviously this would imply moving JAMES to java 5.
>
> +1
>
> Moving to java 5 IMHO is no more an issue: as soon as a feature will  
> require java 5 we should simply stop declaring 1.4 compatibility: I  
> don't know anyone using an 1.4 jvm at this point.
>
>> Another issue I came across is use of com.sun mail classes (I  
>> started by trying to use the geronimo mail provider before I  
>> understood why the stage repo wasn't working for me).  Is this  
>> intentional?  Are you interested in also supporting the geronimo  
>> mail implementation?
>
> It is intentional. Last time I checked it geronimo mail  
> implementation was not enough for our delivery needs. There is a lot  
> to change and we would probably stop using javamail at all, instead  
> of supporting geronimo implementation for the remote delivery task.  
> This is only my opinion, of course.

When did you look :-) ?  I think its had a lot of bugs fixed and a lot  
more stuff implemented but I haven't followed it closely.

>
>
>> Finally I came across some comments that DNS is needed (as you can  
>> probably tell I know almost nothing about mail).  I wondered if any  
>> thought had been given to using apacheds in-vm for this.
>
> We don't need a DNS server, just DNS lookup capabilities. We don't  
> use the JVM built-in DNS lookup mechanism because of issues in the  
> caching and expiration support. apacheds does not provide a dns  
> client library.
>
> At the moment the geronimo-james integration is simply a single  
> gbean for the whole james application: do you think it would be hard  
> to support 1 gbean per function? JAMES is composed by api modules,  
> library modules and function modules. functions only depends on  
> libraries and api, libraries only on apis, and api have no internal  
> dependencies.
> deployments simply aggregate functions. Is it possible to create  
> separate GBean for functions only when functions depends on shared  
> services or the only solution is to publish 1 gbean for each of our  
> services? I don't know geronimo, but it would be a great deployment  
> alternative if it allow us to undeploy 1 single function (e.g: the  
> spoolmanager), alter its configuration and redeploy it without  
> stopping the smtp/pop3 servers.
This was the original idea I had when I first looked into this  
integration several years ago.  However I don't think it will be  
practical until James adopts a more conventional IOC approach in which  
the components have their properties configured by the IOC container  
rather than through a initialize(configuration) method.  I could have  
seriously misjudged the situation however.

I have basically no idea of the internal threading structure of  
James.  Is adding and removing components reasonably possible to do in  
a thread-safe way without a large synchronization overhead?

thanks
david jencks
>
>
> Stefano
>


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@...
For additional commands, e-mail: server-dev-help@...


Re: Geronimo-JAMES integration

by robert burrell donkin-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Mon, Jun 16, 2008 at 1:01 PM, Stefano Bagnara <apache@...> wrote:

> Robert Burrell Donkin ha scritto:
>>
>> On Mon, Jun 16, 2008 at 1:22 AM, Noel J. Bergman <noel@...> wrote:
>>>>
>>>> rewriting the JAMES spool using JMS would be good
>>>
>>> Why?
>>
>> specifically: restarting my JAMES instance every couple of days has
>> started to irritate
>
> Do you think that the current spoolrepository implementation has something
> to do with your restarts?
> I'm not aware of issues in this and I don't restart my james since the last
> reboot almost 3 months ago.

i'm pretty sure that it fetchmail is the direct cause but i believe
that it's indirectly related to the spool design. do you run
fetchmail?

>> generally: we've talked before and the whole design around that area
>> of the system could be so much better
>>
>> technology: actually support for any distributable messaging solution
>> but i can see no reason not to use a standard
>
> I agree.
>
> FYI I had an interesting discussion with James Strachan few weeks ago, here:
> http://markmail.org/message/mp2pafe77efwczbb

it's always interesting talking to james :-)

he's definitely thinking in the same directions as me

- robert

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@...
For additional commands, e-mail: server-dev-help@...


Re: Geronimo-JAMES integration

by Stefano Bagnara-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

David Jencks ha scritto:

> On Jun 16, 2008, at 3:45 AM, Stefano Bagnara wrote:
>> David Jencks ha scritto:
>> At the moment the geronimo-james integration is simply a single gbean
>> for the whole james application: do you think it would be hard to
>> support 1 gbean per function? JAMES is composed by api modules,
>> library modules and function modules. functions only depends on
>> libraries and api, libraries only on apis, and api have no internal
>> dependencies.
>> deployments simply aggregate functions. Is it possible to create
>> separate GBean for functions only when functions depends on shared
>> services or the only solution is to publish 1 gbean for each of our
>> services? I don't know geronimo, but it would be a great deployment
>> alternative if it allow us to undeploy 1 single function (e.g: the
>> spoolmanager), alter its configuration and redeploy it without
>> stopping the smtp/pop3 servers.
> This was the original idea I had when I first looked into this
> integration several years ago.  However I don't think it will be
> practical until James adopts a more conventional IOC approach in which
> the components have their properties configured by the IOC container
> rather than through a initialize(configuration) method.  I could have
> seriously misjudged the situation however.
>
> I have basically no idea of the internal threading structure of James.  
> Is adding and removing components reasonably possible to do in a
> thread-safe way without a large synchronization overhead?

e.g: no component depends on the spoolmanager component. so it can be
stopped and started as you like. The same is for servers (smtpserver,
pop3server, nntpserver, remotemanager) and for the fetchmail function.
They have dependencies on core services (e.g: the repositories) but they
don't depend on each other. Their interaction is mainly via the spool
repository or via the "James" component (implementing various core
services).

james block, smtpserver, spoolmanager receive the spoolrepository
service via IoC (ATM they receive the ServiceManager and they ask the
spoolmanager to the ServiceManager in their "service" method, but we
already changed most of them to be able to inject dependencies without a
ServiceManager, if needed).
the spoolrepository service is implemented by the
MailStoreSpoolRepository block that depends on the mailstore service.
The mailstore service is implemented by the AvalonMailStore component
that in turn depends on the cornerstone's DataSourceSelector and our
FileSystem service)

You can find the "runtime" service dependency graph in the
james-assembly.xml file.

ATM you could remove only top level components or otherwise you would
have to remove every dependent component first.

smtpserver, pop3server, spoolmanager, nntpserver, imapserver, fetchmail,
  and remotemanager are top level compoenents and they are the one
starting/stopping threads. Synchronization happens in lower/shared
components/services.

HTH,
Stefano


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@...
For additional commands, e-mail: server-dev-help@...


Re: Geronimo-JAMES integration

by Stefano Bagnara-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Robert Burrell Donkin ha scritto:

> On Mon, Jun 16, 2008 at 1:01 PM, Stefano Bagnara <apache@...> wrote:
>> Robert Burrell Donkin ha scritto:
>>> generally: we've talked before and the whole design around that area
>>> of the system could be so much better
>>>
>>> technology: actually support for any distributable messaging solution
>>> but i can see no reason not to use a standard
>> I agree.
>>
>> FYI I had an interesting discussion with James Strachan few weeks ago, here:
>> http://markmail.org/message/mp2pafe77efwczbb
>
> it's always interesting talking to james :-)
>
> he's definitely thinking in the same directions as me
>
> - robert

I had no time yet to check CAMEL, and there are few issues we already
found discussing the JMS solution (no way to avoid writing the full
message over and over again when moving from one queue to another is my
main concern), but I bookmarked the thread and camel for my next
"meditation" weekend (unfortunately not so frequent lately).




---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@...
For additional commands, e-mail: server-dev-help@...


Fetchmail issues? (Was: Geronimo-JAMES integration)

by Stefano Bagnara-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Robert Burrell Donkin ha scritto:

> On Mon, Jun 16, 2008 at 1:01 PM, Stefano Bagnara <apache@...> wrote:
>> Robert Burrell Donkin ha scritto:
>>> On Mon, Jun 16, 2008 at 1:22 AM, Noel J. Bergman <noel@...> wrote:
>>>>> rewriting the JAMES spool using JMS would be good
>>>> Why?
>>> specifically: restarting my JAMES instance every couple of days has
>>> started to irritate
>> Do you think that the current spoolrepository implementation has something
>> to do with your restarts?
>> I'm not aware of issues in this and I don't restart my james since the last
>> reboot almost 3 months ago.
>
> i'm pretty sure that it fetchmail is the direct cause but i believe
> that it's indirectly related to the spool design. do you run
> fetchmail?

I run fetchmail with few (<10) remote pop3 mailboxes and a limited
number of messages (<1000/day).

Is it a deadlock issue, an OOM issue or what else?

I made a refactoring for fetchmail almost 2 years ago. It is attached to
a JIRA issue because it started a flame:
https://issues.apache.org/jira/browse/JAMES-509

I don't remember much of that changes but I remember that I also removed
the StoreProcessor/FolderProcessor/MessageProcessor granular creation by
refactoring them to top level reentrant objects that take things to
process as arguments to their "process" method. This could have an
impact with memory.

If you want to give it a try I could update it to current trunk and put
  it in a fetchmail2-function module, but it is untested code, so I'll
do my part only if you have interest in trying it. (you can also enjoy
the complaints here: http://markmail.org/message/sd4zyzt7sbdkm6qz)

Stefano


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@...
For additional commands, e-mail: server-dev-help@...


Re: Fetchmail issues? (Was: Geronimo-JAMES integration)

by robert burrell donkin-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Mon, Jun 16, 2008 at 8:42 PM, Stefano Bagnara <apache@...> wrote:

> Robert Burrell Donkin ha scritto:
>>
>> On Mon, Jun 16, 2008 at 1:01 PM, Stefano Bagnara <apache@...> wrote:
>>>
>>> Robert Burrell Donkin ha scritto:
>>>>
>>>> On Mon, Jun 16, 2008 at 1:22 AM, Noel J. Bergman <noel@...>
>>>> wrote:
>>>>>>
>>>>>> rewriting the JAMES spool using JMS would be good
>>>>>
>>>>> Why?
>>>>
>>>> specifically: restarting my JAMES instance every couple of days has
>>>> started to irritate
>>>
>>> Do you think that the current spoolrepository implementation has
>>> something
>>> to do with your restarts?
>>> I'm not aware of issues in this and I don't restart my james since the
>>> last
>>> reboot almost 3 months ago.
>>
>> i'm pretty sure that it fetchmail is the direct cause but i believe
>> that it's indirectly related to the spool design. do you run
>> fetchmail?
>
> I run fetchmail with few (<10) remote pop3 mailboxes and a limited number of
> messages (<1000/day).

about the same as me :-/

> Is it a deadlock issue, an OOM issue or what else?

OOM

i should probably profile

> I made a refactoring for fetchmail almost 2 years ago. It is attached to a
> JIRA issue because it started a flame:
> https://issues.apache.org/jira/browse/JAMES-509
>
> I don't remember much of that changes but I remember that I also removed the
> StoreProcessor/FolderProcessor/MessageProcessor granular creation by
> refactoring them to top level reentrant objects that take things to process
> as arguments to their "process" method. This could have an impact with
> memory.
>
> If you want to give it a try I could update it to current trunk and put  it
> in a fetchmail2-function module, but it is untested code, so I'll do my part
> only if you have interest in trying it. (you can also enjoy the complaints
> here: http://markmail.org/message/sd4zyzt7sbdkm6qz)

i was planning a complete rewrite: i would prefer to use a direct POP3
client plus messaging

- robert

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@...
For additional commands, e-mail: server-dev-help@...