You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by Laurent Rouvet <la...@roovay.com> on 2005/05/20 12:44:19 UTC
Portage mailet to james-3.0-dev .... & Avalon XXX
Hi,
I'm trying to move my mailet to james-3.0-dev (mainly because I've a
connection pool bug to fix and that I'm currently using james 2.2.1RC1
but I don't have the source for that version).
First of all, I would to said that each time (it's the second time) that
I'm moving my code to a new James version, I spend several hours in
order to be able to compile and deploy.
I think that it's not a James issue but that problem come from phoenix
and avalon which are complicated, not soo stable, and not well finished.
However I think that framework is technicaly quite nice, I had probably
choiced it too.
So, regarding previus discussions, I'd encourage to choice a more stable
and well know framework. I'd like a J2EE framework like Jboss or
Geronimo (if that one be come enought usable).
Back to my problem:
I'm use james-3.0-dev 170743 which compile and work ok :-D
but I've several problems with my own mailet:
- I've notice that cornerstone.jar is not used anymore but replaced by a
list of small jar: cornerstone-XXXX-api/impl-1.0.jar
-> is it right ?
because my mailet don't compile because the package
org.apache.avalon.service.datasource(s) use NOW a (s)
That small problem fixed, I'm able to compile it, but I got the
following error at start:
20/05/05 11:44:08 ERROR spoolmanager: Unable to init mailet
EmailSupportStore: javax.mail.MessagingException: Error initializing
EmailSupportStore;
nested exception is:
java.lang.ClassCastException
javax.mail.MessagingException: Error initializing EmailSupportStore;
nested exception is:
java.lang.ClassCastException
at email.james.mailets.EmailSupportStore.init(EmailSupportStore.java:56)
at org.apache.mailet.GenericMailet.init(GenericMailet.java:129)
at org.apache.james.transport.MailetLoader.getMailet(MailetLoader.java:60)
at
org.apache.james.transport.JamesSpoolManager.initialize(JamesSpoolManager.java:250)
at
org.apache.avalon.framework.container.ContainerUtil.initialize(ContainerUtil.java:282)
at
org.apache.excalibur.containerkit.lifecycle.LifecycleHelper.startup(LifecycleHelper.java:144)
at
org.apache.avalon.phoenix.components.application.DefaultApplication.startup(DefaultApplication.java:480)
...
My code (full code attached):
try {
ComponentManager componentManager =
(ComponentManager)getMailetContext().getAttribute(
Constants.AVALON_COMPONENT_MANAGER);
DataSourceSelector datasources =
(DataSourceSelector)componentManager.lookup(
DataSourceSelector.ROLE);
datasource = new DataSourceWrapper(
(DataSourceComponent)datasources.select(datasourceName));
if (crmDatasourceName != null)
crmDatasource = new DataSourceWrapper(
(DataSourceComponent)datasources.select(crmDatasourceName));
}
catch (Exception e) {
// line 56
throw new
MessagingException("Error initializing EmailSupportStore", e);
}
Does there is some compatibility issue between james 2.2 and james 3?
Does I'm using the right version? or does I mixing wrong APIs?
Any idea of my ClassCastException error?
Thanks
Laurent Rouvet
Re: Portage mailet to james-3.0-dev .... & Avalon XXX
Posted by ap...@bago.org.
> Ok, I find it.
> If I'm right, in order to convert a mailet from 2.2 to 3.0
>
> At least, we have to change :
>
> /* ok with James 2.2.0
> ComponentManager componentManager = (ComponentManager)
> getMailetContext().getAttribute(
> Constants.AVALON_COMPONENT_MANAGER);
> DataSourceSelector datasources (DataSourceSelector)
> componentManager.lookup(DataSourceSelector.ROLE);
> */
>
> ServiceManager serviceManager = (ServiceManager)
> getMailetContext().getAttribute(
> Constants.AVALON_COMPONENT_MANAGER);
>
> DataSourceSelector datasources = (DataSourceSelector)
> serviceManager.lookup(DataSourceSelector.ROLE);
This is the main difference between james-2.2.1-dev and james-3.0-dev.
We have a new version because the component to service change is not
backward compatible: the change is needed because component are deprecated
in the avalon framework.
3.0-dev will probably change a lot before a 3.0 release and you probably
need to change again your mailet to upgrade to future 3.0-dev trunk builds.
Probably mailet APIs will change a lot before a 3.0 final.
You probably should stick to the current version or to the branch 2_1_fcs
(with components and old mailets).
> Does someone already list the Mailet API change?
> I noticed that all the mailet into the v3 have been changed...
The mailet have beed changed mainly to to reflect the componet=>service
issue of the avalon framework.
I hope that my work on the SMTPServer extensions (PIPELINE fix, AUTH fix,
DSN support), the DSNReport attribute to transport delivery-status
informations and a reworked RemoteDelivery for better error catching will be
committed in the alpha stage of the 3.0 version.
I hope that someone will port every james component to POJO objects + avalon
adapter/container so it will be faster to support different container
(spring, pico or directly a j2ee container).
Stefano
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
Re: Portage mailet to james-3.0-dev .... & Avalon XXX
Posted by Laurent Rouvet <la...@roovay.com>.
Ok, I find it.
If I'm right, in order to convert a mailet from 2.2 to 3.0
At least, we have to change :
/* ok with James 2.2.0
ComponentManager componentManager = (ComponentManager)
getMailetContext().getAttribute(
Constants.AVALON_COMPONENT_MANAGER);
DataSourceSelector datasources (DataSourceSelector)
componentManager.lookup(DataSourceSelector.ROLE);
*/
ServiceManager serviceManager = (ServiceManager)
getMailetContext().getAttribute(
Constants.AVALON_COMPONENT_MANAGER);
DataSourceSelector datasources = (DataSourceSelector)
serviceManager.lookup(DataSourceSelector.ROLE);
Does someone already list the Mailet API change?
I noticed that all the mailet into the v3 have been changed...
Laurent Rouvet
Laurent Rouvet wrote:
> Hi,
>
> I'm trying to move my mailet to james-3.0-dev (mainly because I've a
> connection pool bug to fix and that I'm currently using james 2.2.1RC1
> but I don't have the source for that version).
>
> First of all, I would to said that each time (it's the second time) that
> I'm moving my code to a new James version, I spend several hours in
> order to be able to compile and deploy.
> I think that it's not a James issue but that problem come from phoenix
> and avalon which are complicated, not soo stable, and not well finished.
> However I think that framework is technicaly quite nice, I had probably
> choiced it too.
>
> So, regarding previus discussions, I'd encourage to choice a more stable
> and well know framework. I'd like a J2EE framework like Jboss or
> Geronimo (if that one be come enought usable).
>
>
> Back to my problem:
>
> I'm use james-3.0-dev 170743 which compile and work ok :-D
> but I've several problems with my own mailet:
>
> - I've notice that cornerstone.jar is not used anymore but replaced by a
> list of small jar: cornerstone-XXXX-api/impl-1.0.jar
>
> -> is it right ?
> because my mailet don't compile because the package
> org.apache.avalon.service.datasource(s) use NOW a (s)
>
>
> That small problem fixed, I'm able to compile it, but I got the
> following error at start:
>
>
> 20/05/05 11:44:08 ERROR spoolmanager: Unable to init mailet
> EmailSupportStore: javax.mail.MessagingException: Error initializing
> EmailSupportStore;
> nested exception is:
> java.lang.ClassCastException
> javax.mail.MessagingException: Error initializing EmailSupportStore;
> nested exception is:
> java.lang.ClassCastException
> at
> email.james.mailets.EmailSupportStore.init(EmailSupportStore.java:56)
> at org.apache.mailet.GenericMailet.init(GenericMailet.java:129)
> at
> org.apache.james.transport.MailetLoader.getMailet(MailetLoader.java:60)
> at
> org.apache.james.transport.JamesSpoolManager.initialize(JamesSpoolManager.java:250)
>
> at
> org.apache.avalon.framework.container.ContainerUtil.initialize(ContainerUtil.java:282)
>
> at
> org.apache.excalibur.containerkit.lifecycle.LifecycleHelper.startup(LifecycleHelper.java:144)
>
> at
> org.apache.avalon.phoenix.components.application.DefaultApplication.startup(DefaultApplication.java:480)
>
> ...
>
>
> My code (full code attached):
>
> try {
> ComponentManager componentManager =
> (ComponentManager)getMailetContext().getAttribute(
> Constants.AVALON_COMPONENT_MANAGER);
> DataSourceSelector datasources =
> (DataSourceSelector)componentManager.lookup(
> DataSourceSelector.ROLE);
> datasource = new DataSourceWrapper(
> (DataSourceComponent)datasources.select(datasourceName));
> if (crmDatasourceName != null)
> crmDatasource = new DataSourceWrapper(
> (DataSourceComponent)datasources.select(crmDatasourceName));
> }
> catch (Exception e) {
> // line 56
> throw new
> MessagingException("Error initializing EmailSupportStore", e);
> }
>
>
>
> Does there is some compatibility issue between james 2.2 and james 3?
> Does I'm using the right version? or does I mixing wrong APIs?
> Any idea of my ClassCastException error?
>
> Thanks
>
> Laurent Rouvet
>
>
>
> ------------------------------------------------------------------------
>
>
>
> package email.james.mailets;
>
>
> import javax.mail.MessagingException;
> import javax.mail.internet.MimeMessage;
>
> import org.apache.avalon.cornerstone.services.datasources.DataSourceSelector;
> import org.apache.avalon.excalibur.datasource.DataSourceComponent;
> import org.apache.avalon.framework.component.ComponentManager;
> import org.apache.james.Constants;
> import org.apache.james.util.JDBCUtil;
> import org.apache.log4j.Logger;
> import org.apache.mailet.GenericMailet;
> import org.apache.mailet.Mail;
> import org.apache.mailet.MailetException;
>
> import email.james.util.DataSourceWrapper;
> import email.model.EMail;
>
> public class EmailSupportStore extends GenericMailet {
> static Logger logger = Logger.getLogger(EmailSupportStore.class);
>
> protected DataSourceWrapper datasource;
> protected DataSourceWrapper crmDatasource;
> protected String datasourceName;
> protected String crmDatasourceName;
>
> private final JDBCUtil theJDBCUtil = new JDBCUtil() {
> protected void delegatedLog(String logString) {
> log("EmailSupportStore: " + logString);
> }
> };
>
> // code from JDBCListserv
> public void init() throws MessagingException {
> datasourceName = getInitParameter("datasource");
> crmDatasourceName = getInitParameter("CRMdatasource");
> logger.info("Initialisation datasource="+ datasourceName +" CRMdatasource="+crmDatasourceName);
> if (datasourceName == null) {
> throw new MailetException("datasource not specified for EmailSupportStore");
> }
> if (crmDatasourceName == null) {
> logger.info("CRMdatasource not specified for EmailSupportStore");
> }
>
> try {
> ComponentManager componentManager = (ComponentManager)getMailetContext().getAttribute(Constants.AVALON_COMPONENT_MANAGER);
> DataSourceSelector datasources = (DataSourceSelector)componentManager.lookup(DataSourceSelector.ROLE);
> datasource = new DataSourceWrapper((DataSourceComponent)datasources.select(datasourceName));
> if (crmDatasourceName != null)
> crmDatasource = new DataSourceWrapper((DataSourceComponent)datasources.select(crmDatasourceName));
> }
> catch (Exception e) {
> throw new MessagingException("Error initializing EmailSupportStore", e);
> }
> }
>
> public void service(Mail mail) throws MessagingException {
> MimeMessage message = mail.getMessage();
>
> try {
> EMail.received(datasource, datasourceName, crmDatasource, crmDatasourceName, message);
> } catch (Exception ex) {
> getMailetContext().log("Error while storing mail to Email Support: ",
> ex);
> getMailetContext().sendMail(mail.getSender(), mail.getRecipients(),
> message, Mail.ERROR);
> }
> // We always consume this message
> mail.setState(Mail.GHOST);
> }
> }
>
>
>
> ------------------------------------------------------------------------
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
> For additional commands, e-mail: server-dev-help@james.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org