View Javadoc

1   /*
2    * Copyright 2006 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 {@link SessionAwareMessageListener} that can be used to handle incoming {@link Message} service requests.
31   * <p/>
32   * Requires a {@link WebServiceMessageFactory} which is used to convert the incoming JMS {@link BytesMessage} into a
33   * {@link WebServiceMessage}, and passes that to the {@link WebServiceMessageReceiver} {@link
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 {
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  }