serversession.java

来自「OpenJMS是一个开源的Java Message Service API 1.」· Java 代码 · 共 365 行

JAVA
365
字号
/** * Redistribution and use of this software and associated documentation * ("Software"), with or without modification, are permitted provided * that the following conditions are met: * * 1. Redistributions of source code must retain copyright *    statements and notices.  Redistributions must also contain a *    copy of this document. * * 2. Redistributions in binary form must reproduce the *    above copyright notice, this list of conditions and the *    following disclaimer in the documentation and/or other *    materials provided with the distribution. * * 3. The name "Exolab" must not be used to endorse or promote *    products derived from this Software without prior written *    permission of Exoffice Technologies.  For written permission, *    please contact info@exolab.org. * * 4. Products derived from this Software may not be called "Exolab" *    nor may "Exolab" appear in their names without prior written *    permission of Exoffice Technologies. Exolab is a registered *    trademark of Exoffice Technologies. * * 5. Due credit should be given to the Exolab Project *    (http://www.exolab.org/). * * THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL * EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * * Copyright 2005 (C) Exoffice Technologies Inc. All Rights Reserved. * * $Id: ServerSession.java,v 1.2 2005/08/30 05:23:16 tanderson Exp $ */package org.exolab.jms.server;import java.util.List;import javax.jms.JMSException;import javax.transaction.xa.XAException;import javax.transaction.xa.Xid;import org.exolab.jms.client.JmsDestination;import org.exolab.jms.client.JmsMessageListener;import org.exolab.jms.client.JmsQueue;import org.exolab.jms.client.JmsTopic;import org.exolab.jms.message.MessageImpl;/** * Indicates the methods clients can call on the server-side implementation of * the {@link javax.jms.Session} interface * * @author <a href="mailto:tma@netspace.net.au">Tim Anderson</a> * @version $Revision: 1.2 $ $Date: 2005/08/30 05:23:16 $ */public interface ServerSession {    /**     * Close and release any resource allocated to this session.     *     * @throws JMSException for any JMS error     */    void close() throws JMSException;    /**     * Acknowledge that a message has been processed.     *     * @param consumerId the identity of the consumer performing the ack     * @param messageId  the message identifier     * @throws JMSException for any error     */    void acknowledgeMessage(long consumerId, String messageId)            throws JMSException;    /**     * Send a message.     *     * @param message the message to send     * @throws JMSException for any error     */    void send(MessageImpl message) throws JMSException;    /**     * Send a set of messages.     *     * @param messages a list of <code>MessageImpl</code> instances     * @throws JMSException for any JMS error     */    void send(List messages) throws JMSException;    /**     * Return the next available mesage to the specified consumer.     * <p/>     * This method is non-blocking. If no messages are available, it will return     * immediately.     *     * @param consumerId the consumer identifier     * @return the next message or <code>null</code> if none is available     * @throws JMSException for any JMS error     */    MessageImpl receiveNoWait(long consumerId) throws JMSException;    /**     * Return the next available message to the specified consumer.     * <p/>     * This method is non-blocking. However, clients can specify a     * <code>wait</code> interval to indicate how long they are prepared to wait     * for a message. If no message is available, and the client indicates that     * it will wait, it will be notified via the registered {@link     * JmsMessageListener} if one subsequently becomes available.     *     * @param consumerId the consumer identifier     * @param wait       number of milliseconds to wait. A value of <code>0     *                   </code> indicates to wait indefinitely     * @return the next message, or <code>null</code>     * @return the next message or <code>null</code> if none is available     * @throws JMSException for any JMS error     */    MessageImpl receive(long consumerId, long wait) throws JMSException;    /**     * Browse up to count messages.     *     * @param consumerId the consumer identifier     * @param count      the maximum number of messages to receive     * @return a list of {@link MessageImpl} instances     * @throws JMSException for any JMS error     */    List browse(long consumerId, int count) throws JMSException;    /**     * Create a new message consumer.     *     * @param destination the destination to consume messages from     * @param selector    the message selector. May be <code>null</code>     * @param noLocal     if true, and the destination is a topic, inhibits the     *                    delivery of messages published by its own connection.     *                    The behavior for <code>noLocal</code> is not specified     *                    if the destination is a queue.     * @return the identifty of the message consumer     * @throws JMSException for any JMS error     */    long createConsumer(JmsDestination destination, String selector,                        boolean noLocal)            throws JMSException;    /**     * Create a new durable consumer. Durable consumers may only consume from     * non-temporary <code>Topic</code> destinations.     *     * @param topic    the non-temporary <code>Topic</code> to subscribe to     * @param name     the name used to identify this subscription     * @param selector only messages with properties matching the message     *                 selector expression are delivered.  A value of null or an     *                 empty string indicates that there is no message selector     *                 for the message consumer.     * @param noLocal  if set, inhibits the delivery of messages published by     *                 its own connection     * @return the identity of the durable consumer     * @throws JMSException for any JMS error     */    long createDurableConsumer(JmsTopic topic, String name, String selector,                               boolean noLocal)            throws JMSException;    /**     * Create a queue browser for this session. This allows clients to browse a     * queue without removing any messages.     *     * @param queue    the queue to browse     * @param selector the message selector. May be <code>null</code>     * @return the identity of the queue browser     * @throws JMSException for any JMS error     */    long createBrowser(JmsQueue queue, String selector) throws JMSException;    /**     * Close a message consumer.     *     * @param consumerId the identity of the consumer to close     * @throws JMSException for any JMS error     */    void closeConsumer(long consumerId) throws JMSException;    /**     * Unsubscribe a durable subscription.     *     * @param name the name used to identify the subscription     * @throws JMSException for any JMS error     */    void unsubscribe(String name) throws JMSException;    /**     * Start message delivery to this session.     *     * @throws JMSException for any JMS error     */    void start() throws JMSException;    /**     * Stop message delivery to this session.     *     * @throws JMSException for any JMS error     */    void stop() throws JMSException;    /**     * Set the listener for this session.     * <p/>     * The listener is notified whenever a message for the session is present.     *     * @param listener the message listener     */    void setMessageListener(JmsMessageListener listener);    /**     * Enable or disable asynchronous message delivery for a particular     * consumer.     *     * @param consumerId the consumer identifier     * @param enable     true to enable; false to disable     * @throws JMSException for any JMS error     */    void setAsynchronous(long consumerId, boolean enable)            throws JMSException;    /**     * Recover the session.     * <p/>     * All unacknowledged messages are re-delivered with the JMSRedelivered flag     * set.     *     * @throws JMSException if the session cannot be recovered     */    void recover() throws JMSException;    /**     * Commit the session.     * <p/>     * This will acknowledge all delivered messages.     *     * @throws JMSException if the session cannot be committed     */    void commit() throws JMSException;    /**     * Rollback the session.     * <p/>     * All messages delivered to the client will be redelivered with the     * JMSRedelivered flag set.     *     * @throws JMSException if the session cannot be rolled back     */    void rollback() throws JMSException;    /**     * Start work on behalf of a transaction branch specified in xid If TMJOIN     * is specified, the start is for joining a transaction previously seen by     * the resource manager     *     * @param xid   the xa transaction identity     * @param flags One of TMNOFLAGS, TMJOIN, or TMRESUME     * @throws XAException if there is a problem completing the call     */    void start(Xid xid, int flags) throws XAException;    /**     * Ask the resource manager to prepare for a transaction commit of the     * transaction specified in xid.     *     * @param xid the xa transaction identity     * @return XA_RDONLY or XA_OK     * @throws XAException if there is a problem completing the call     */    int prepare(Xid xid) throws XAException;    /**     * Commits an XA transaction that is in progress.     *     * @param xid      the xa transaction identity     * @param onePhase true if it is a one phase commit     * @throws XAException if there is a problem completing the call     */    void commit(Xid xid, boolean onePhase) throws XAException;    /**     * Ends the work performed on behalf of a transaction branch. The resource     * manager disassociates the XA resource from the transaction branch     * specified and let the transaction be completedCommits an XA transaction     * that is in progress.     *     * @param xid   the xa transaction identity     * @param flags one of TMSUCCESS, TMFAIL, or TMSUSPEND     * @throws XAException if there is a problem completing the call     */    void end(Xid xid, int flags) throws XAException;    /**     * Tell the resource manager to forget about a heuristically completed     * transaction branch.     *     * @param xid the xa transaction identity     * @throws XAException if there is a problem completing the call     */    void forget(Xid xid) throws XAException;    /**     * Obtain a list of prepared transaction branches from a resource manager.     * The transaction manager calls this method during recovery to obtain the     * list of transaction branches that are currently in prepared or     * heuristically completed states.     *     * @param flag One of TMSTARTRSCAN, TMENDRSCAN, TMNOFLAGS. TMNOFLAGS     * @return the set of Xids to recover     * @throws XAException if there is a problem completing the call     */    Xid[] recover(int flag) throws XAException;    /**     * Inform the resource manager to roll back work done on behalf of a     * transaction branch.     *     * @param xid the xa transaction identity     * @throws XAException if there is a problem completing the call     */    void rollback(Xid xid) throws XAException;    /**     * Return the transaction timeout for this instance of the resource     * manager.     *     * @return the timeout in seconds     * @throws XAException if there is a problem completing the call     */    int getTransactionTimeout() throws XAException;    /**     * Set the current transaction timeout value for this XAResource instance.     *     * @param seconds timeout in seconds     * @return if the new transaction timeout was accepted     * @throws XAException if there is a problem completing the call     */    boolean setTransactionTimeout(int seconds) throws XAException;    /**     * Return the identity of the associated resource manager.     *     * @return the identity of the resource manager     * @throws XAException if there is a problem completing the call     */    String getResourceManagerId() throws XAException;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?