View Javadoc

1   /*
2    * Copyright 2005-2010 the original author or authors.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package org.springframework.ws.transport.jms;
18  
19  import javax.jms.BytesMessage;
20  import javax.jms.JMSException;
21  import javax.jms.Message;
22  import javax.jms.Session;
23  
24  import org.springframework.jms.listener.SessionAwareMessageListener;
25  import org.springframework.ws.WebServiceMessage;
26  import org.springframework.ws.WebServiceMessageFactory;
27  import org.springframework.ws.transport.WebServiceMessageReceiver;
28  
29  /**
30   * Spring [email protected] SessionAwareMessageListener} that can be used to handle incoming [email protected] Message} service requests.
31   * <p/>
32   * Requires a [email protected] WebServiceMessageFactory} which is used to convert the incoming JMS [email protected] BytesMessage} into a
33   * [email protected] WebServiceMessage}, and passes that to the [email protected] WebServiceMessageReceiver} [email protected]
34   * #setMessageReceiver(WebServiceMessageReceiver) registered}.
35   *
36   * @author Arjen Poutsma
37   * @see #setMessageFactory(org.springframework.ws.WebServiceMessageFactory)
38   * @see #setMessageReceiver(org.springframework.ws.transport.WebServiceMessageReceiver)
39   * @since 1.5.0
40   */
41  public class WebServiceMessageListener extends JmsMessageReceiver implements SessionAwareMessageListener<Message> {
42  
43      public void onMessage(Message message, Session session) throws JMSException {
44          try {
45              handleMessage(message, session);
46          }
47          catch (JmsTransportException ex) {
48              throw ex.getJmsException();
49          }
50          catch (Exception ex) {
51              JMSException jmsException = new JMSException(ex.getMessage());
52              jmsException.setLinkedException(ex);
53              throw jmsException;
54          }
55      }
56  
57  }