求助高手,现在我用oracle 提供的 JMS API。但在建立连接时总是报错:Exception in thread "main" oracle.jms.AQjmsException: JMS-130: JMS 队列不能启用多个使用者。
在网上查了很多都没有找到原因,求助高手帮忙,万感谢!
我的代码如下:======================
public class QueueReceive implements MessageListener {
public final static String oracleIP = "127.0.0.1";
public final static int oraclePort = 1520;
public final static String oracleSid="orcl";
public final static String oracleUser="test";
public final static String oraclePassWord="test";
// Defines the queue.
public final static String QUEUE = "gps_temp_queue";private QueueConnectionFactory queueConnectionFactory;
private QueueConnection queueConnection;
private QueueSession queueSession;
private QueueReceiver subscriber;
private Queue queue;
private boolean quit = false;/**
* Message listener interface.
*
* @param msg
*            message
*/
public void onMessage(Message msg) {
try {
String msgText;
if (msg instanceof TextMessage) {
msgText = ((TextMessage) msg).getText();
} else {
msgText = msg.toString();
}System.out.println("Message Received: " + msgText);if (msgText.equalsIgnoreCase("quit")) {
synchronized (this) {
quit = true;
this.notifyAll(); // Notify main thread to quit}
}
} catch (JMSException jmse) {
jmse.printStackTrace();
}
}
public void init(Context ctx, String queueName) throws NamingException,
JMSException {
queueConnectionFactory = AQjmsFactory.getQueueConnectionFactory(oracleIP,oracleSid, oraclePort, "thin"); 
queueConnection = queueConnectionFactory.createQueueConnection(oracleUser, oraclePassWord); 
 
queueSession = queueConnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);   
queue = ((AQjmsSession) queueSession).getQueue(oracleUser, queueName);   
subscriber = queueSession.createReceiver(queue);
subscriber.setMessageListener(this);
queueConnection.start(); }
public void close() throws JMSException {
subscriber.close();
queueSession.close();
queueConnection.close();
}
public static void main(String[] args) throws Exception {InitialContext ic = getInitialContext();
QueueReceive qr = new QueueReceive();
qr.init(ic, QUEUE);System.out.println("JMS Ready To Receive Messages (To quit, send a \"quit\" message).");// Wait until a "quit" message has been received.
synchronized (qr) {
while (!qr.quit) {
try {
qr.wait();
} catch (InterruptedException ie) {
}
}
}
qr.close();
}private static InitialContext getInitialContext() throws NamingException {
Hashtable env = new Hashtable();
return new InitialContext(env);
}}======================