Java não é Possível retirar da fila de uma mensagem a partir do Oracle AQ
-
13-12-2019 - |
Pergunta
Estou tentando implementar uma aplicação no weblogic, que é baseado em uma Mola DefaultMessageListenerContainer.Eu configurei weblogic usando um servidor externo para fornecer acesso a AQ fábrica de conexão e destino sob nomes JNDI.
Eu tenho uma mensagem simples ouvinte que registra as mensagens que ele recebe (apenas um teste), quebra esta mensagem ouvinte em uma Mola DMLC mostrado abaixo:
<jee:jndi-lookup id="connectionFactory" jndi-name="jms/aq/admAQCF" />
<jee:jndi-lookup id="handlersDest" jndi-name="jms/aq/dpqueue"/>
<beans:bean id="testMessageListener" class="aquila.administrator.docprod.core.handler.adm.TestHandler"/>
<beans:bean id="testMLC" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<beans:property name="connectionFactory" ref="connectionFactory"/>
<beans:property name="destination" ref="handlersDest"/>
<beans:property name="messageListener" ref="testMessageListener"/>
</beans:bean>
Sempre que eu tento implementar este aplicativo no weblogic eu recebo a seguinte exceção do DMLC:
testMLC-26 [Tue Mar 13 14:07:52 GMT 2012] AQjmsConsumer.jdbcDequeue: Exception: oracle.jms.AQjmsException: JMS-122: Internal error Corrupted message
oracle.jms.AQjmsException: JMS-122: Internal error Corrupted message
at oracle.jms.AQjmsError.throwEx(AQjmsError.java:334)
at oracle.jms.AQjmsUtil.getTextData(AQjmsUtil.java:751)
at oracle.jms.AQjmsTextMessage.readTextMessageContainer(AQjmsTextMessage.java:308)
at oracle.jms.AQjmsTextMessage.<init>(AQjmsTextMessage.java:148)
at oracle.jms.AQjmsConsumer.jdbcDequeue(AQjmsConsumer.java:1389)
at oracle.jms.AQjmsConsumer.receiveFromAQ(AQjmsConsumer.java:1035)
at oracle.jms.AQjmsConsumer.receiveFromAQ(AQjmsConsumer.java:960)
at oracle.jms.AQjmsConsumer.receiveFromAQ(AQjmsConsumer.java:938)
at oracle.jms.AQjmsConsumer.receive(AQjmsConsumer.java:790)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveMessage(AbstractPollingMessageListenerContainer.java:431)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:311)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:264)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1071)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1063)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:960)
at java.lang.Thread.run(Thread.java:662)
Alguém sabe como resolver isso para que o java pode receber as mensagens na fila?
Obrigado
Solução
A resposta para isso é adicionar "orai18n.jar" no caminho de classe do que quer que era, na verdade, tentando retirar da fila da fila de mensagens.No meu exemplo eu adicionei o jar ao classpath do servidor de aplicação e de que o problema foi resolvido.