Lars Heinemann пишет:
Ivan,
please raise a JIRA for the issues. I will have a look at this then.
Hi Lars!
I created SM-1568 and SM-1569.
Truly your,
Ivan Pryvalov.
Regards
Lars
Am Mittwoch 10 September 2008 11:50:32 schrieb ivan:
ivan пишет:
Hi team!
Some month ago I was interesting in servicemix-mail component and I
began to use servicemix 3.3-snapshot in SM 3.2.1 version.
For now I have 2 notes regarding implementation of component:
1. class MailSenderEndpoint :
method processInOut and method processInOnly:
snippet from code:
...
Transport.send(msg);
...
Found issue:
it is not possible to use SMTPS (for example, gmail)
connection:
smtps://[EMAIL PROTECTED]
Steps to resolve:
replace snippet from code with
...
Transport transport = session.getTransport();
transport.connect(
MailSenderEndpoint.this.config.getHost(),
MailSenderEndpoint.this.config.getPort(),
MailSenderEndpoint.this.config.getUsername(),
MailSenderEndpoint.this.config.getPassword()
);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
...
2. class AbstractMailMarchaller is not thread-safe:
It means if I will send 2 excganges to some SU based on servicemix-mail
component, after first exchange is processed, it is executed cleanUp
method of AbstractMarshaller, and while executing second exchange we get
"FileNotFoundException".
Schema:
1 Exchange: -> AR SA S C
2 Exchange: ----> AR SA S C
AR - AcceptionRequest
SA - SavingAttachments
S - Sending e-mail
C - CleanUp.
Troubles is in point 2Exchange.S (after 1.Exchange.C)
private List<File> temporaryFiles = new ArrayList<File>();
I would to replace it with:
private Map< String, List<File> > temporaryFilesMap =
Collections.synchronizedMap(new HashMap<String, List<File> >());
and:
protected final void addTemporaryResource(String id, File tmpFile) {
if (!this.temporaryFilesMap.containsKey(id))
this.temporaryFilesMap.put(id, new ArrayList<File>());
this.temporaryFilesMap.get(id).add(tmpFile);
}
and:
public final void cleanUpResources(String id) {
List<File> list = this.temporaryFilesMap.get(id);
if (list!=null){
for (File f : list) {
f.delete();
}
list.clear();
this.temporaryFilesMap.remove(id);
}
}
And do necessary changes in code from other classes (also it is needed
For id we can use exchange.getExchangeId().
to update tests to avoid NullPointerException, I mean following:
replace InOnly exchange = new InOnlyImpl() with InOnly exchange = new
InOnlyImpl("id"))
Can I create JIRA-tasks for this 2 issues?
Ivan Pryvalov.