org.springframework.jms.remoting

Class JmsInvokerServiceExporter

    • Constructor Detail

      • JmsInvokerServiceExporter

        public JmsInvokerServiceExporter()
    • Method Detail

      • setMessageConverter

        public void setMessageConverter(@Nullable
                                        MessageConverter messageConverter)
        Specify the MessageConverter to use for turning request messages into RemoteInvocation objects, as well as RemoteInvocationResult objects into response messages.

        Default is a SimpleMessageConverter, using a standard JMS ObjectMessage for each invocation / invocation result object.

        Custom implementations may generally adapt Serializables into special kinds of messages, or might be specifically tailored for translating RemoteInvocation(Result)s into specific kinds of messages.

      • setIgnoreInvalidRequests

        public void setIgnoreInvalidRequests(boolean ignoreInvalidRequests)
        Set whether invalidly formatted messages should be discarded. Default is "true".

        Switch this flag to "false" to throw an exception back to the listener container. This will typically lead to redelivery of the message, which is usually undesirable - since the message content will be the same (that is, still invalid).

      • afterPropertiesSet

        public void afterPropertiesSet()
        Description copied from interface: InitializingBean
        Invoked by the containing BeanFactory after it has set all bean properties and satisfied BeanFactoryAware, ApplicationContextAware etc.

        This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set.

        Specified by:
        afterPropertiesSet in interface InitializingBean
      • onMessage

        public void onMessage(Message requestMessage,
                              Session session)
                       throws JMSException
        Description copied from interface: SessionAwareMessageListener
        Callback for processing a received JMS message.

        Implementors are supposed to process the given Message, typically sending reply messages through the given Session.

        Specified by:
        onMessage in interface SessionAwareMessageListener<Message>
        Parameters:
        requestMessage - the received JMS message (never null)
        session - the underlying JMS Session (never null)
        Throws:
        JMSException - if thrown by JMS methods
      • readRemoteInvocation

        @Nullable
        protected RemoteInvocation readRemoteInvocation(Message requestMessage)
                                                           throws JMSException
        Read a RemoteInvocation from the given JMS message.
        Parameters:
        requestMessage - current request message
        Returns:
        the RemoteInvocation object (or null in case of an invalid message that will simply be ignored)
        Throws:
        JMSException - in case of message access failure
      • writeRemoteInvocationResult

        protected void writeRemoteInvocationResult(Message requestMessage,
                                                   Session session,
                                                   RemoteInvocationResult result)
                                            throws JMSException
        Send the given RemoteInvocationResult as a JMS message to the originator.
        Parameters:
        requestMessage - current request message
        session - the JMS Session to use
        result - the RemoteInvocationResult object
        Throws:
        JMSException - if thrown by trying to send the message
      • createResponseMessage

        protected Message createResponseMessage(Message request,
                                                Session session,
                                                RemoteInvocationResult result)
                                         throws JMSException
        Create the invocation result response message.

        The default implementation creates a JMS ObjectMessage for the given RemoteInvocationResult object. It sets the response's correlation id to the request message's correlation id, if any; otherwise to the request message id.

        Parameters:
        request - the original request message
        session - the JMS session to use
        result - the invocation result
        Returns:
        the message response to send
        Throws:
        JMSException - if creating the messsage failed
      • onInvalidRequest

        @Nullable
        protected RemoteInvocation onInvalidRequest(Message requestMessage)
                                                       throws JMSException
        Callback that is invoked by readRemoteInvocation(javax.jms.Message) when it encounters an invalid request message.

        The default implementation either discards the invalid message or throws a MessageFormatException - according to the "ignoreInvalidRequests" flag, which is set to "true" (that is, discard invalid messages) by default.

        Parameters:
        requestMessage - the invalid request message
        Returns:
        the RemoteInvocation to expose for the invalid request (typically null in case of an invalid message that will simply be ignored)
        Throws:
        JMSException - in case of the invalid request supposed to lead to an exception (instead of ignoring it)
        See Also:
        readRemoteInvocation(javax.jms.Message), setIgnoreInvalidRequests(boolean)