Crimor,

this is not a bug of the mail component. The receiver property is existing. It 
seems this is some issue of xbean?
To work around this see my code modifications below...

Regards
Lars


Am Dienstag 12 August 2008 14:41:02 schrieb Crimor:
> Hi,
>
> i try to get the servicemix-mail component running under servicemix 3.2.2
> but i get problems. First of all
> the xbean I am using:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <beans
>   xmlns:mail="http://servicemix.apache.org/mail/1.0";
>   xmlns:email="http://projectname/mailservice/v1/";>
>
>   <bean
>
> class="net.adlinkgroup.adfusion.common.util.spring.StagePropertiesPlacehold
>erConfigurer"/>
>
>   <mail:sender service="email:mailSenderService"
>              endpoint="senderEndpoint"
>              sender="[EMAIL PROTECTED]"
>              receiver="[EMAIL PROTECTED]"
>              connection="${adfusion.components.mail.service.smtpServer}"
>              debugMode ="true"/>
> </beans>
>
> If i build this with maven there is this warning:
>
> Failed to generate jbi.xml:
> org.apache.servicemix.maven.plugin.jbi.JbiPluginException: Unable to
> generate service unit descriptor!
> org.apache.servicemix.maven.plugin.jbi.JbiPluginException: Unable to
> generate service unit descriptor!
>       at
> org.apache.servicemix.maven.plugin.jbi.GenerateServiceUnitDescriptorMojo.ge
>nerateJbiDescriptor(GenerateServiceUnitDescriptorMojo.java:206) at
> org.apache.servicemix.maven.plugin.jbi.GenerateServiceUnitDescriptorMojo.ex
>ecute(GenerateServiceUnitDescriptorMojo.java:143) at
> org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManag
>er.java:447) at
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLif
>ecycleExecutor.java:539) at
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycl
>e(DefaultLifecycleExecutor.java:480) at
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLife
>cycleExecutor.java:459) at
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFai
>lures(DefaultLifecycleExecutor.java:311) at
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(Def
>aultLifecycleExecutor.java:278) at
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycl
>eExecutor.java:143) at
> org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:333) at
> org.apache.maven.DefaultMaven.execute(DefaultMaven.java:126)
>       at org.apache.maven.cli.MavenCli.main(MavenCli.java:282)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:3
>9) at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp
>l.java:25) at java.lang.reflect.Method.invoke(Method.java:597)
>       at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
>       at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
>       at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
>       at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
> Caused by: org.springframework.beans.factory.BeanDefinitionStoreException:
> Unrecognized xbean namespace mapping: http://servicemix.apache.org/mail/1.0
>       at
> org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.parseBeanFromExte
>nsionElement(XBeanNamespaceHandler.java:268) at
> org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.parse(XBeanNamesp
>aceHandler.java:155) at
> org.apache.xbean.spring.context.v2.XBeanNamespaceHandler.parse(XBeanNamespa
>ceHandler.java:49) at
> org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCus
>tomElement(BeanDefinitionParserDelegate.java:1114) at
> org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCus
>tomElement(BeanDefinitionParserDelegate.java:1104) at
> org.apache.xbean.spring.context.v2.XBeanBeanDefinitionDocumentReader.parseB
>eanDefinitions(XBeanBeanDefinitionDocumentReader.java:84) at
> org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.r
>egisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:90) at
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanD
>efinitions(XmlBeanDefinitionReader.java:458) at
> org.apache.xbean.spring.context.v2.XBeanXmlBeanDefinitionReader.registerBea
>nDefinitions(XBeanXmlBeanDefinitionReader.java:79) at
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDef
>initions(XmlBeanDefinitionReader.java:353) at
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefin
>itions(XmlBeanDefinitionReader.java:303) at
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefin
>itions(XmlBeanDefinitionReader.java:280) at
> org.springframework.beans.factory.support.AbstractBeanDefinitionReader.load
>BeanDefinitions(AbstractBeanDefinitionReader.java:131) at
> org.springframework.beans.factory.support.AbstractBeanDefinitionReader.load
>BeanDefinitions(AbstractBeanDefinitionReader.java:147) at
> org.springframework.beans.factory.support.AbstractBeanDefinitionReader.load
>BeanDefinitions(AbstractBeanDefinitionReader.java:173) at
> org.springframework.context.support.AbstractXmlApplicationContext.loadBeanD
>efinitions(AbstractXmlApplicationContext.java:112) at
> org.apache.xbean.spring.context.FileSystemXmlApplicationContext.loadBeanDef
>initions(FileSystemXmlApplicationContext.java:168) at
> org.springframework.context.support.AbstractRefreshableApplicationContext.r
>efreshBeanFactory(AbstractRefreshableApplicationContext.java:101) at
> org.springframework.context.support.AbstractApplicationContext.obtainFreshB
>eanFactory(AbstractApplicationContext.java:389) at
> org.springframework.context.support.AbstractApplicationContext.refresh(Abst
>ractApplicationContext.java:324) at
> org.apache.servicemix.common.xbean.AbstractXBeanServiceUnitAnalyzer.init(Ab
>stractXBeanServiceUnitAnalyzer.java:90) at
> org.apache.servicemix.maven.plugin.jbi.GenerateServiceUnitDescriptorMojo.ge
>nerateJbiDescriptor(GenerateServiceUnitDescriptorMojo.java:185) ... 19 more
>
> But I think the namespace of the servicemix mail component is right?
> Anyway, regardless on this behaviour, maven builds my component. If I
> deploye the mail service I got a xbean error, because the receiver property
> is invalid? On your documentation to this service the property can be set
> in the xbean.xml file.
>
> ERROR - AutoDeploymentService          - Failed to update Service Assembly:
> mailservice-mail-sa
> java.lang.Exception: <?xml version="1.0" encoding="UTF-8"?>
> <jbi-task xmlns="http://java.sun.com/xml/ns/jbi/management-message";
> version="1.0">
> <jbi-task-result>
> <frmwk-task-result>
> <frmwk-task-result-details>
> <task-result-details>
> <task-id>deploy</task-id>
> <task-result>FAILED</task-result>
> <message-type>ERROR</message-type>
> </task-result-details>
> </frmwk-task-result-details>
> </frmwk-task-result>
> <component-task-result
> xmlns="http://java.sun.com/xml/ns/jbi/management-message";>
>         <component-name>servicemix-mail</component-name>
>         <component-task-result-details>
>                 <task-result-details>
>                         <task-id>deploy</task-id>
>                         <task-result>FAILED</task-result>
>                         <message-type>ERROR</message-type>
>                         <task-status-msg>
> <msg-loc-info>
> <loc-token/>
> <loc-message>Could not deploy xbean service unit</loc-message>
> </msg-loc-info>
> </task-status-msg>
>                         <exception-info>
>                                 <nesting-level>1</nesting-level>
>                                 <msg-loc-info>
>                                         <loc-token/>
>
> <loc-message>org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'org.apache.servicemix.mail.MailSenderEndpoint'
> defined in f
> ile
> [D:\Servicemix3.2.2\data\smx\service-assemblies\mailservice-mail-sa\version
>_13\sus\servicemix-mail\mailservice-mailbc-su\xbean.xml]: Initialization of
> bean failed; nested exception is org.springfr
> amework.beans.InvalidPropertyException: Invalid property 'receiver' of bean
> class [org.apache.servicemix.mail.MailSenderEndpoint]: No property
> 'receiver' found</loc-message>
>
> <stack-trace><![CDATA[org.apache.xbean.kernel.ServiceRegistrationException:
> org.springframework.beans.factory.BeanCreationException: Error creating
> bean with na
> me 'org.apache.servicemix.mail.MailSenderEndpoint' defined in file
> [D:\Servicemix3.2.2\data\smx\service-assemblies\mailservice-mail-sa\version
>_13\sus\servicemix-mail\mailservice-mailbc-su\xbean.xml]: Initialization of
> bean failed; nested exception is
> org.springframework.beans.InvalidPropertyException: Invalid property
> 'receiver' of bean class [org.apache.servicemix.mail.MailSenderEndpoint]:
> No pro
> perty 'receiver' found
>         at
> org.apache.xbean.kernel.standard.ServiceManagerRegistry.registerService(Ser
>viceManagerRegistry.java:424) at
> org.apache.xbean.kernel.standard.StandardKernel.registerService(StandardKer
>nel.java:220) at
> org.apache.xbean.server.spring.loader.SpringLoader.load(SpringLoader.java:1
>52) at
> org.apache.servicemix.common.xbean.AbstractXBeanDeployer.deploy(AbstractXBe
>anDeployer.java:83) at
> org.apache.servicemix.common.BaseServiceUnitManager.doDeploy(BaseServiceUni
>tManager.java:88) at
> org.apache.servicemix.common.BaseServiceUnitManager.deploy(BaseServiceUnitM
>anager.java:69) at
> org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly
>(DeploymentService.java:508) at
> org.apache.servicemix.jbi.framework.AutoDeploymentService.updateServiceAsse
>mbly(AutoDeploymentService.java:353) at
> org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(Aut
>oDeploymentService.java:256) at
> org.apache.servicemix.jbi.framework.AutoDeploymentService.monitorDirectory(
>AutoDeploymentService.java:664) at
> org.apache.servicemix.jbi.framework.AutoDeploymentService.access$800(AutoDe
>ploymentService.java:62) at
> org.apache.servicemix.jbi.framework.AutoDeploymentService$1.run(AutoDeploym
>entService.java:628) at java.util.TimerThread.mainLoop(Timer.java:512)
>         at java.util.TimerThread.run(Timer.java:462)
>
> So I delete the receiver property in the xbean.xml file and the service got
> deployed.
>
> Now I tried to send a jbi message to this new deployed mail service, but i
> get a Nullpointer error, so I'am on my end, to get this working in
> Servicemix 3.2.2.
>
> Code to send an jbi message:
>
>
> private static final QName SERVICE_NAME = new
> QName("http://projectname/mailservice/v1/";,
>                                                 "mailSenderService");
>
> public void sendMessage() throws FOOException {
>     ServiceMixClient client = new ServiceMixClientFacade(context);
>     NormalizedMessage message = null;
>     InOnly exchange = null;
>
>     try {
>       exchange = client.createInOnlyExchange();
>       message = exchange.getInMessage();
>
>       message.setProperty("MSG_TAG_TO", "[EMAIL PROTECTED]");
>       message.setProperty("MSG_TAG_SUBJECT", "Test Email over Soa");
>       message.setProperty("MSG_TAG_TEXT", "Hey das geht ja mal!");

       message.setProperty(AbstractMailMarshaler.MSG_TAG_TO, "[EMAIL 
PROTECTED]");
       message.setProperty(AbstractMailMarshaler.MSG_TAG_SUBJECT, "Test Email 
over Soa");
       message.setProperty(AbstractMailMarshaler.MSG_TAG_TEXT, "Hey das geht 
ja mal!");


>
>       logger.info("sendMessage() - message property: " +
> message.getProperty("MSG_TAG_TO"));

logger.info("sendMessage() - message property: " + 
message.getProperty(AbstractMailMarshaler.MSG_TAG_TO));

--> don't forget to import the AbstractMailMarshaler if needed!!!


>       exchange.setService(SERVICE_NAME);
>       exchange.setInterfaceName(null);
>       exchange.setOperation(null);
>
>       // sending the message
>       client.sendSync(exchange);
>     } catch (MessagingException e) {
>       StringBuilder sb = new StringBuilder();
>       logger.error("sendMessage() - " + sb.toString(), e);
>       throw new FooException(sb.toString(), e);
>     }
>
>     try {
>       client.done(exchange);
>     } catch (MessagingException e) {
>       String msg = "Error setting status of response to
> ExchangeStatus.DONE";
>       logger.error("sendMessage() - " + msg + ": " + e.getMessage());
>     } finally {
>       try {
>         client.close();
>       } catch (JBIException e) {
>         String msg = "Error closing client";
>         logger.error("sendMessage() - " + msg + ": " + e.getMessage());
>       }
>     }
>   }
>
> And here the error from servicemix:
>
> DEBUG - SedaQueue                      -
> [EMAIL PROTECTED] dequeued
> exchange: InOnly[
>   id: ID:172.30.30.167-11bb6e25967-5:3
>   status: Active
>   role: provider
>   service: {http://projectname/mailservice/v1/}mailSenderService
>   endpoint: senderEndpoint
>   in: null
> ]
> DEBUG - MailComponent                  - Received exchange: status: Active,
> role: provider
> DEBUG - MailComponent                  - Retrieved correlation id: null
> DEBUG: JavaMail version 1.4
> DEBUG: java.io.FileNotFoundException:
> C:\Programme\Java\jdk1.6.0_07\jre\lib\javamail.providers (Das System kann
> die angegebene Datei nicht finden)
> DEBUG: !anyLoaded
> DEBUG: not loading resource: /META-INF/javamail.providers
> DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
> DEBUG: Tables of loaded providers
> DEBUG: Providers Listed By Class Name:
> {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com
>.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc],
> com.sun.mail.smtp.SMTPTranspor
> t=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun
> Microsystems, Inc],
> com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail
>.imap.IMAPSSLStore,Sun Microsyst
> ems, Inc],
> com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail
>.pop3.POP3SSLStore,Sun Microsystems, Inc],
> com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail
> .imap.IMAPStore,Sun Microsystems, Inc],
> com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop
>3.POP3Store,Sun Microsystems, Inc]}
> DEBUG: Providers Listed By Protocol:
> {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun
> Microsystems, Inc],
> imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun M
> icrosystems, Inc],
> smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTranspor
>t,Sun Microsystems, Inc],
> pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun
> Microsystems
> , Inc],
> pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun
> Microsystems, Inc],
> smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun
> Microsystems, Inc]}
> DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
> DEBUG: !anyLoaded
> DEBUG: not loading resource: /META-INF/javamail.address.map
> DEBUG: java.io.FileNotFoundException:
> C:\Programme\Java\jdk1.6.0_07\jre\lib\javamail.address.map (Das System kann
> die angegebene Datei nicht finden)
> DEBUG: setDebug: JavaMail version 1.4
> ERROR - MailComponent                  - Error sending mail...
> javax.mail.MessagingException;
>   nested exception is:
>         java.lang.NullPointerException
>         at
> org.apache.servicemix.mail.marshaler.DefaultMailMarshaler.convertJBIToMail(
>DefaultMailMarshaler.java:90) at
> org.apache.servicemix.mail.MailSenderEndpoint.processInOnly(MailSenderEndpo
>int.java:110) at
> org.apache.servicemix.common.endpoints.ProviderEndpoint.process(ProviderEnd
>point.java:100) at
> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycl
>e.java:538) at
> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLi
>feCycle.java:490) at
> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.
>java:46) at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(Deli
>veryChannelImpl.java:610) at
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java
>:172) at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:16
>7) at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.j
>ava:885) at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:
>907) at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.NullPointerException
>         at
> javax.mail.internet.MimeUtility.checkAscii(MimeUtility.java:1286) at
> javax.mail.internet.MimeBodyPart.setText(MimeBodyPart.java:1023) at
> javax.mail.internet.MimeMessage.setText(MimeMessage.java:1467) at
> javax.mail.internet.MimeMessage.setText(MimeMessage.java:1451) at
> org.apache.servicemix.mail.marshaler.DefaultMailMarshaler.fillMailBody(Defa
>ultMailMarshaler.java:244) at
> org.apache.servicemix.mail.marshaler.DefaultMailMarshaler.fillMailBodyAndAt
>tachments(DefaultMailMarshaler.java:143) at
> org.apache.servicemix.mail.marshaler.DefaultMailMarshaler.convertJBIToMail(
>DefaultMailMarshaler.java:88) ... 12 more
> ERROR - MailComponent                  - Error processing exchange InOnly[
>   id: ID:172.30.30.167-11bb6e25967-5:3
>   status: Active
>   role: provider
>   service: {http://projectname/mailservice/v1/}mailSenderService
>   endpoint: senderEndpoint
>   in: null
> ]
> javax.mail.MessagingException;
>   nested exception is:
>         java.lang.NullPointerException
>         at
> org.apache.servicemix.mail.marshaler.DefaultMailMarshaler.convertJBIToMail(
>DefaultMailMarshaler.java:90) at
> org.apache.servicemix.mail.MailSenderEndpoint.processInOnly(MailSenderEndpo
>int.java:110) at
> org.apache.servicemix.common.endpoints.ProviderEndpoint.process(ProviderEnd
>point.java:100) at
> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycl
>e.java:538) at
> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLi
>feCycle.java:490) at
> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.
>java:46) at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(Deli
>veryChannelImpl.java:610) at
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java
>:172) at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:16
>7) at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.j
>ava:885) at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:
>907) at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.NullPointerException
>         at
> javax.mail.internet.MimeUtility.checkAscii(MimeUtility.java:1286) at
> javax.mail.internet.MimeBodyPart.setText(MimeBodyPart.java:1023) at
> javax.mail.internet.MimeMessage.setText(MimeMessage.java:1467) at
> javax.mail.internet.MimeMessage.setText(MimeMessage.java:1451) at
> org.apache.servicemix.mail.marshaler.DefaultMailMarshaler.fillMailBody(Defa
>ultMailMarshaler.java:244) at
> org.apache.servicemix.mail.marshaler.DefaultMailMarshaler.fillMailBodyAndAt
>tachments(DefaultMailMarshaler.java:143) at
> org.apache.servicemix.mail.marshaler.DefaultMailMarshaler.convertJBIToMail(
>DefaultMailMarshaler.java:88) ... 12 more
>
>
>
> Why is the in message null?
> Can anyone help me?

Reply via email to