You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Deepal Jayasinghe <de...@opensource.lk> on 2007/05/16 18:32:56 UTC
Re: [axis2] Re: svn commit: r538634 - in /webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail:
EMailSender.java SimpleMailListener.java SynchronousMailListener.java
Hi Glen,
After release Axis2 we found issues with the SMTP transport , specially
when using RM so we are trying to fix those issues before next RM release.
We have not done enough testing on SMTP transport when we releases 1.2 ,
unfortunately we started to test that after we release 1.2.
In the meantime we have not merge 1.2 and trunk yet , so there are a
number of changes which are only in the branch, and need to merge them soon
Thanks
Deepal
Glen Daniels wrote:
> Hi Amila:
>
> Can I ask why these changes are going into the branch? Do you have a
> JIRA they're targeting? Have you already done these improvements in
> the trunk? If these are really improvements and not critical fixes,
> they should be done on the trunk and not the branch....
>
> Thanks,
> --Glen
>
> amilas@apache.org wrote:
>> Author: amilas
>> Date: Wed May 16 08:58:34 2007
>> New Revision: 538634
>>
>> URL: http://svn.apache.org/viewvc?view=rev&rev=538634
>> Log:
>> 1. Improved Simple mail listener logic
>> 2. Improved Sync mail handling 3. Improved email sender logic
>> Modified:
>>
>> webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java
>>
>>
>> webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java
>>
>>
>> webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SynchronousMailListener.java
>>
>>
>> Modified:
>> webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java
>>
>> URL:
>> http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java?view=diff&rev=538634&r1=538633&r2=538634
>>
>> ==============================================================================
>>
>> ---
>> webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java
>> (original)
>> +++
>> webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java
>> Wed May 16 08:58:34 2007
>> @@ -17,6 +17,7 @@
>>
>> package org.apache.axis2.transport.mail;
>>
>> +import
>> edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue;
>> import org.apache.axiom.attachments.ByteArrayDataSource;
>> import org.apache.axiom.om.OMOutputFormat;
>> import org.apache.axiom.soap.SOAP11Constants;
>> @@ -24,7 +25,9 @@
>> import org.apache.axis2.AxisFault;
>> import org.apache.axis2.addressing.EndpointReference;
>> import org.apache.axis2.client.Options;
>> +import org.apache.axis2.context.ConfigurationContext;
>> import org.apache.axis2.context.MessageContext;
>> +import org.apache.axis2.description.TransportInDescription;
>> import org.apache.commons.logging.Log;
>> import org.apache.commons.logging.LogFactory;
>>
>> @@ -98,7 +101,7 @@
>>
>>
>> EndpointReference epr = null;
>> - MailToInfo mailToInfo = null;
>> + MailToInfo mailToInfo;
>>
>> if (messageContext.getTo() != null &&
>> !messageContext.getTo().hasAnonymousAddress()) {
>> epr = messageContext.getTo();
>> @@ -151,6 +154,8 @@
>> createMailMimeMessage(msg, mailToInfo, format);
>> Transport.send(msg);
>>
>> + log.info("Message being send. [Action = ]" +
>> messageContext.getOptions().getAction());
>> +
>> sendReceive(messageContext, msg.getMessageID());
>> } catch (AddressException e) {
>> throw new AxisFault(e);
>> @@ -223,11 +228,44 @@
>>
>> private void sendReceive(MessageContext msgContext, String
>> msgId) throws AxisFault {
>> storeMessageContext(msgContext, msgId);
>> +
>> + ConfigurationContext cc = msgContext.getConfigurationContext();
>> +
>> + SimpleMailListener simpleMailListener;
>> +
>> Options options = msgContext.getOptions();
>> - if (!options.isUseSeparateListener()) {
>> - SynchronousMailListener listener =
>> - new
>> SynchronousMailListener(options.getTimeOutInMilliSeconds());
>> - listener.sendReceive(msgContext, msgId);
>> + if (!options.isUseSeparateListener() &&
>> !msgContext.isServerSide()) {
>> + Object obj = cc.getProperty(Constants.MAIL_SYNC);
>> +
>> + if (obj == null) {
>> + SynchronousMailListener synchronousMailListener =
>> + new
>> SynchronousMailListener(options.getTimeOutInMilliSeconds(), new
>> LinkedBlockingQueue());
>> + cc.setProperty(Constants.MAIL_SYNC,
>> synchronousMailListener);
>> +
>> + simpleMailListener =
>> synchronousMailListener.sendReceive(msgContext, msgId);
>> +
>> + TransportInDescription transportIn =
>> msgContext.getConfigurationContext()
>> +
>> .getAxisConfiguration().getTransportIn(org.apache.axis2.Constants.TRANSPORT_MAIL);
>>
>> +
>> + Object mailPOP3Obj=
>> msgContext.getProperty(Constants.MAIL_POP3);
>> + if (mailPOP3Obj != null) {
>> + simpleMailListener.initFromRuntime((Properties)
>> obj, msgContext);
>> + } else {
>> +
>> simpleMailListener.init(msgContext.getConfigurationContext(),
>> transportIn);
>> + }
>> +
>> msgContext.getConfigurationContext().getThreadPool().execute(simpleMailListener);
>>
>> +
>> + simpleMailListener.start();
>> + log.info("Simple Mail Listener started for the first
>> time and response received");
>> +
>> +
>> + } else {
>> + SynchronousMailListener synchronousMailListener =
>> (SynchronousMailListener)obj;
>> +
>> synchronousMailListener.sendReceive(msgContext,msgId).start();
>> + log.info("Simple mail listener started and response
>> received");
>> +
>> + }
>> +
>> }
>>
>> }
>> @@ -240,7 +278,9 @@
>> mappingTable = new Hashtable();
>> msgContext.setProperty(Constants.MAPPING_TABLE,
>> mappingTable);
>> }
>> - mappingTable.put(msgId, msgContext.getMessageID());
>> + if (msgContext.getMessageID() != null) {
>> + mappingTable.put(msgId, msgContext.getMessageID());
>> + }
>>
>> }
>> }
>>
>> Modified:
>> webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java
>>
>> URL:
>> http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java?view=diff&rev=538634&r1=538633&r2=538634
>>
>> ==============================================================================
>>
>> ---
>> webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java
>> (original)
>> +++
>> webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java
>> Wed May 16 08:58:34 2007
>> @@ -278,13 +278,14 @@
>> }
>>
>> while (running) {
>> + log.info("Info started polling");
>> try {
>> receiver.connect();
>>
>> Message[] msgs = receiver.receiveMessages();
>>
>> if ((msgs != null) && (msgs.length > 0)) {
>> - log.info(msgs.length + " Message Found");
>> + log.info(msgs.length + " Message(s) Found");
>>
>> for (int i = 0; i < msgs.length; i++) {
>> MimeMessage msg = (MimeMessage) msgs[i];
>> @@ -294,7 +295,8 @@
>> messageQueue.add(mc);
>> }
>> } catch (Exception e) {
>> - log.error("Error in SimpleMailListener -
>> processing mail " + e);
>> + e.printStackTrace();
>> + log.error("Error in SimpleMailListener -
>> processing mail",e);
>> } finally {
>> // delete mail in any case
>> msg.setFlag(Flags.Flag.DELETED, true);
>> @@ -305,7 +307,7 @@
>> receiver.disconnect();
>>
>> } catch (Exception e) {
>> - log.error("Error in SimpleMailListener" + e);
>> + log.error("Error in SimpleMailListener", e);
>> } finally {
>> try {
>> Thread.sleep(listenerWaitInterval);
>>
>> Modified:
>> webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SynchronousMailListener.java
>>
>> URL:
>> http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SynchronousMailListener.java?view=diff&rev=538634&r1=538633&r2=538634
>>
>> ==============================================================================
>>
>> ---
>> webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SynchronousMailListener.java
>> (original)
>> +++
>> webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SynchronousMailListener.java
>> Wed May 16 08:58:34 2007
>> @@ -18,6 +18,7 @@
>> import
>> edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue;
>> import org.apache.axis2.AxisFault;
>> import org.apache.axis2.context.MessageContext;
>> +import org.apache.axis2.context.ContextFactory;
>> import org.apache.axis2.description.TransportInDescription;
>> import org.apache.axis2.wsdl.WSDLConstants;
>> import org.apache.commons.logging.Log;
>> @@ -33,24 +34,25 @@
>> private static Log log =
>> LogFactory.getLog(SynchronousMailListener.class);
>>
>> private long timeoutInMilliseconds = -1;
>> + private LinkedBlockingQueue queue;
>>
>> - public SynchronousMailListener(long timeoutInMilliseconds) {
>> + public SynchronousMailListener(long
>> timeoutInMilliseconds,LinkedBlockingQueue queue) {
>> this.timeoutInMilliseconds = timeoutInMilliseconds;
>> + this.queue = queue;
>> }
>>
>>
>> - public void sendReceive(final MessageContext msgContext, final
>> String msgId) throws AxisFault {
>> + public SimpleMailListener sendReceive(final MessageContext
>> msgContext, final String msgId) throws AxisFault {
>> /**
>> * This will be bloked invocation
>> */
>> - SimpleMailListener listener = new SimpleMailListener(new
>> LinkedBlockingQueue()) {
>> + return new SimpleMailListener(queue) {
>> public void start() throws AxisFault {
>> long timeStatus;
>> - LinkedBlockingQueue queue = getLinkedBlockingQueue();
>> while (true) {
>> long startTime = System.currentTimeMillis();
>> try {
>> - MessageContext msgCtx = (MessageContext)
>> queue.take();
>> + MessageContext msgCtx = (MessageContext)
>> getLinkedBlockingQueue().take();
>> MailBasedOutTransportInfo transportInfo =
>> (MailBasedOutTransportInfo) msgCtx
>>
>> .getProperty(org.apache.axis2.Constants.OUT_TRANSPORT_INFO);
>> if (transportInfo.getInReplyTo() == null) {
>> @@ -59,13 +61,21 @@
>> throw new AxisFault(error);
>> }
>> if
>> (transportInfo.getInReplyTo().equals(msgId)) {
>> - //TODO do the correct operation
>> dispatching here
>> - msgContext.getOperationContext()
>> -
>> .getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE)
>> + MessageContext messageContext =
>> msgContext.getOperationContext()
>> +
>> .getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
>> + if (messageContext == null) {
>> + messageContext =
>> ContextFactory.createMessageContext(msgContext.getConfigurationContext());
>>
>> +
>> messageContext.setOperationContext(msgContext.getOperationContext());
>> +
>> messageContext.setServiceContext(msgContext.getServiceContext());
>> +
>> msgContext.getOperationContext().addMessageContext(messageContext);
>> + }
>> + messageContext
>> .setEnvelope(msgCtx.getEnvelope());
>> + log.info("SOAP Message :: " +
>> messageContext.getEnvelope());
>>
>> log.info(SynchronousMailListener.class.getName() + " found the
>> required message.");
>> break;
>> }
>> + getLinkedBlockingQueue().put(msgCtx);
>>
>> } catch (InterruptedException e) {
>> log.warn(e);
>> @@ -85,17 +95,6 @@
>> }
>> };
>>
>> - TransportInDescription transportIn =
>> msgContext.getConfigurationContext()
>> -
>> .getAxisConfiguration().getTransportIn(org.apache.axis2.Constants.TRANSPORT_MAIL);
>>
>> -
>> - Object obj = msgContext.getProperty(Constants.MAIL_POP3);
>> - if (obj != null) {
>> - listener.initFromRuntime((Properties)obj,msgContext);
>> - } else {
>> - listener.init(msgContext.getConfigurationContext(),
>> transportIn);
>> - }
>> -
>> msgContext.getConfigurationContext().getThreadPool().execute(listener);
>> - listener.start();
>>
>> }
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
>> For additional commands, e-mail: axis-cvs-help@ws.apache.org
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-dev-help@ws.apache.org
>
>
>
--
Thanks,
Deepal
................................................................
"The highest tower is built one brick at a time"
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org