From 59dd2db49e523850509438af492082995471cf7d Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Wed, 14 Nov 2007 01:44:18 +0000 Subject: [PATCH] Documented the mail support. --- src/docbkx/client.xml | 4 +-- src/docbkx/server.xml | 75 +++++++++++++++++++++++++++++++++++++++---- 2 files changed, 70 insertions(+), 9 deletions(-) diff --git a/src/docbkx/client.xml b/src/docbkx/client.xml index 517c7289..9cbd4f74 100644 --- a/src/docbkx/client.xml +++ b/src/docbkx/client.xml @@ -151,8 +151,8 @@ uri parameter to a mailto URI. Here are some URI examples: mailto:john@example.com, and mailto:server@localhost?subject=SOAP%20Test. Make sure that the message sender is - properly configured with a transportUri, which indicates the server to - send requests (typically a SMTP server), and a storeUri, which indicates + properly configured with a transportUri, which indicates the server to use for + sending requests (typically a SMTP server), and a storeUri, which indicates the server to poll for responses (typically a POP3 or IMAP server). diff --git a/src/docbkx/server.xml b/src/docbkx/server.xml index 4237f9e5..9a786480 100644 --- a/src/docbkx/server.xml +++ b/src/docbkx/server.xml @@ -1,6 +1,6 @@ + "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd"> Creating a Web service with Spring-WS
@@ -42,10 +42,10 @@ following sequence diagram. - + - + The request processing workflow in Spring Web Services @@ -282,9 +282,10 @@ Spring Web Services supports server-side JMS handling through the JMS functionality provided in the Spring framework. Spring Web Services provides the WebServiceMessageListener - to plug in to a MessageListenerContainer. The following piece of configuration - shows this: - + to plug in to a MessageListenerContainer. This message listener requires a + WebServiceMessageFactory to and + MessageDispatcher to operate. The following piece of configuration + shows this: @@ -322,6 +323,66 @@ Javadocs of the WebServiceMessageDrivenBean.
+
+ Email transport + + In addition to HTTP and JMS, Spring Web Services also provides server-side email handling. This + functionality is provided through the MailMessageReceiver class. This class + monitors a POP3 or IMAP folder, converts the email to a WebServiceMessage, + sends any response using SMTP. The host names can be configured through the + storeUri, which indicates the mail folder to monitor for requests (typically a POP3 or IMAP folder), + and a transportUri, which indicates the server to use for sending responses (typically a SMTP server). + + + How the MailMessageReceiver monitors incoming messages can be configured with + a pluggable strategy: the MonitoringStrategy. By default, a polling + strategy is used, where the incoming folder is polled for new messages every five minutes. This interval + can be changed by setting the pollingInterval property on the strategy. + By default, all MonitoringStrategy implementations delete the handled + messages; this can be changed by setting the deleteMessages property. + + + As an alternative to the polling approaches, which are quite inefficient, there is a monitoring strategy + that uses IMAP IDLE. The IDLE command is an optional + expansion of the IMAP email protocol that allows the mail server to send new message updates to the + MailMessageReceiver asynchronously. If you use a IMAP server that supports the + IDLE command, you can plug in the ImapIdleMonitoringStrategy + into the monitoringStrategy property. + In addition to a supporting server, you will need to use JavaMail version 1.4.1 or higher. + + + The following piece of configuration shows how to use the server-side email support, overiding the + default polling interval to a value which checks every 30 seconds + (30.000 milliseconds): + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + +
Endpoints @@ -399,7 +460,7 @@ public class SampleEndpoint extends AbstractDomPayloadEndpoint { ]]> The above class and the declaration in the application context are all you need besides setting up an - endpoint mapping (see the section entitled ) to get this very + endpoint mapping (see the section entitled ) to get this very simple endpoint working. The SOAP message handled by this endpoint will look something like: