Можно ли настроить соединение с очередью WebLogic, когда мой Java-клиент пытается подключиться к соединению пула, чтобы выполнить процедуру, и у него больше нет доступных соединений, WebLogic перенаправит этот запрос в очередь и выполнит его, когда скоро появится вакансия в бассейне?
В Weblogic я создаю простую очередь JMS, используя это руководство: https://blogs.oracle.com/soaproactive/jms-step-1-how-to-create-a-simple-jms-queue-in-weblogic-server-11g
В Java я придерживался этой логики и не могу понять, как настроить 'prepareCall' для перехода в очередь Weblogic, когда соединение с пулом больше не доступно.
Вот мой код:
private static String CONNECTION_FACTORY_JNDI_NAME = "jms/LogURAJMSConnectionFactory";
private static String QUEUE_JNDI_NAME = "jms/LogURAQueue";
private ConnectionFactory connectionFactory = null;
private Queue logQueue = null;
private JMSContext jmsContext = null;
private JMSProducer jmsProducer = null;
public getExamplePoolQueue() {
logger.debug("Create JMS context");
try {
InitialContext ic = new InitialContext();
this.connectionFactory = (ConnectionFactory) ic.lookup(CONNECTION_FACTORY_JNDI_NAME);
this.logQueue = (Queue) ic.lookup(QUEUE_JNDI_NAME);
this.jmsContext = connectionFactory.createContext(JMSContext.AUTO_ACKNOWLEDGE);
this.jmsProducer = jmsContext.createProducer();
} catch (Exception e) {
logger.error(e);
throw new ServiceException(e);
}
}
Вот мой класс, который получает соединение с пулом для выполнения процедуры
public PURA rchmConsulta(Rechamador rechamador) throws SQLException, JSONException {
Connection con = getConnection();
//Here I stuck, how get a connection and manage to forward to a queue if no more connections are availables???
CallableStatement stmt = null;
String procedure = "{CALL IVR_OWNER_RPT.PURA_RCHM_CONSULTA(?,?,?,?,?,?)}";
stmt = con.prepareCall(procedure);
stmt.setString(1, rechamador.getDsMenuUra());
stmt.setString(2, rechamador.getCdPonto());
stmt.setString(3, rechamador.getNmAni());
stmt.execute();
// ... more code
}