On Tue, Jun 17, 2008 at 1:10 AM, David Jencks <[EMAIL PROTECTED]> wrote: > > On Jun 16, 2008, at 12:24 PM, Stefano Bagnara wrote: > >> 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. > > This sounds promising but I'd have to look much harder before saying > anything more concrete. > > I did work on using a datasource from jndi rather than a directly configured > one... I found two places with jndi configuration, the > TorqueMailboxManagerFactory
this is due a radical overhall sometime soon - robt --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
