SWS-428 - XMPP support

This commit is contained in:
Arjen Poutsma
2010-04-23 14:42:23 +00:00
parent b983fa4543
commit cceba687dd
18 changed files with 1052 additions and 21 deletions

View File

@@ -182,6 +182,47 @@
<property name="defaultUri" value="mailto:server@example.com?subject=SOAP%20Test"/>
</bean>
</beans>]]></programlisting>
</para>
</section>
<section>
<title>XMPP transport</title>
<para>
Spring Web Services 2.0 introduced an XMPP (Jabber) transport, which can be used to send and
receive web service messages via XMPP. The client-side XMPP
functionality is contained in the <classname>XmppMessageSender</classname> class.
This class creates an XMPP message from the request
<interfacename>WebServiceMessage</interfacename>, and sends it via XMPP. It then listens for a
response message to arrive.
</para>
<para>
To use the <classname>XmppMessageSender</classname>, set the <property>defaultUri</property> or
<parameter>uri</parameter> parameter to a <literal>xmpp</literal> URI, for example
<uri>xmpp:johndoe@jabber.org</uri>. The sender also requires an
<classname>XMPPConnection</classname> to work, which can be conveniently created using the
<classname>org.springframework.ws.transport.xmpp.support.XmppConnectionFactoryBean</classname>.
</para>
<para>
The following example shows how to use the xmpp transport:<programlisting><![CDATA[<beans>
<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"/>
<bean id="connection" class="org.springframework.ws.transport.xmpp.support.XmppConnectionFactoryBean">
<property name="host" value="jabber.org"/>
<property name="username" value="username"/>
<property name="password" value="password"/>
</bean>
<bean id="webServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
<constructor-arg ref="messageFactory"/>
<property name="messageSender">
<bean class="org.springframework.ws.transport.xmpp.XmppMessageSender">
<property name="connection" ref="connection"/>
</bean>
</property>
<property name="defaultUri" value="xmpp:user@jabber.org"/>
</bean>
</beans>]]></programlisting>
</para>
</section>

View File

@@ -523,6 +523,50 @@
<ulink url="http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/remoting/support/SimpleHttpServerFactoryBean.html">Javadoc</ulink>.
</para>
</section>
<section>
<title>XMPP transport</title>
<para>
Finally, Spring Web Services 2.0 introduced support for XMPP, otherwise known as Jabber. The support
is based on the <ulink url="http://www.igniterealtime.org/projects/smack/index.jsp">Smack</ulink>
library.
</para>
<para>
Spring Web Services support for XMPP is very similar to the other transports: there is a a
<classname>XmppMessageSender</classname> for the <classname>WebServiceTemplate</classname> and
and a <classname>XmppMessageReceiver</classname> to use with the
<classname>MessageDispatcher</classname>.
</para>
<para>The following example shows how to set up the server-side XMPP components:
<programlisting><![CDATA[<beans>
<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"/>
<bean id="connection" class="org.springframework.ws.transport.xmpp.support.XmppConnectionFactoryBean">
<property name="host" value="jabber.org"/>
<property name="username" value="username"/>
<property name="password" value="password"/>
</bean>
<bean id="messagingReceiver" class="org.springframework.ws.transport.xmpp.XmppMessageReceiver">
<property name="messageFactory" ref="messageFactory"/>
<property name="connection" ref="connection"/>
<property name="messageReceiver" ref="messageDispatcher"/>
</bean>
<bean id="messageDispatcher" class="org.springframework.ws.soap.server.SoapMessageDispatcher">
<property name="endpointMappings">
<bean
class="org.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping">
<property name="defaultEndpoint">
<bean class="com.example.MyEndpoint"/>
</property>
</bean>
</property>
</bean>
</beans>]]></programlisting>
</para>
</section>
</section>
<section>
<title>Endpoints</title>