Me he llevado la siguiente sorpresita en el siguiente MDB que ejecutaba en JBoss 4.0.5: java.lang.IllegalArgumentException: wrong number of arguments
El código era el siguiente:
package com.neodoo.callcenter.server.listener; import com.neodoo.centralita.client.ApduCentralita; import javax.ejb.ActivationConfigProperty; import javax.ejb.MessageDriven; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.ObjectMessage; /** * Implementa un CallCenterMessageListerner a traves de JMS * @author Manuel Aznar Perez */ @MessageDriven(mappedName = "topic/CentralitaOutTopic", activationConfig = { @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"), @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "topic/CentralitaOutTopic")//, //@ActivationConfigProperty(propertyName = "subscriptionDurability", propertyValue = "Durable")//, //@ActivationConfigProperty(propertyName = "clientId", propertyValue = "Topic1"), //@ActivationConfigProperty(propertyName = "subscriptionName", propertyValue = "Topic1") } ) public class CallCenterMessageListenerImpl implements MessageListener { /** Listener de la centralita */ private CallCenterMessageListener messageListener; /** Crea una nueva instancia de CallCenterMessageListenerJMS */ public CallCenterMessageListenerImpl(CallCenterMessageListener messageListener) { this.messageListener = messageListener; } /** Se ejecuta cuando se recibe un mensaje JMS */ public void onMessage(Message message) { ObjectMessage objMessage = (ObjectMessage) message; try { // Comprobaciones de que el objeto no es nulo y es una instancia de ApduCentralita if ((objMessage == null)||(!(objMessage.getObject() instanceof ApduCentralita))) return; ApduCentralita apdu = (ApduCentralita) objMessage.getObject(); messageListener.recibir(apdu); } catch (Exception e) { e.printStackTrace(); } } }
… dando el siguiento error en la consola de JBoss AS:
23:16:21,568 ERROR [JmsServerSession] Unexpected error delivering message org.jboss.mq.SpyObjectMessage { Header { jmsDestination : TOPIC.CentralitaOutTopic jmsDeliveryMode : 2 jmsExpiration : 0 jmsPriority : 4 jmsMessageID : ID:7-11690721815655 jmsTimeStamp : 1169072181565 jmsCorrelationID: null jmsReplyTo : null jmsType : null jmsRedelivered : false jmsProperties : {cliente=null, puerto=2555, host=192.168.1.99} jmsPropReadWrite: false msgReadOnly : true producerClientId: ID:7 } } java.lang.IllegalArgumentException: wrong number of arguments at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at org.jboss.ejb3.EJBContainer.construct(EJBContainer.java:415) at org.jboss.ejb3.AbstractPool.create(AbstractPool.java:66) at org.jboss.ejb3.StrictMaxPool.get(StrictMaxPool.java:122) at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:54) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.mdb.MessagingContainer.localInvoke(MessagingContainer.java:245) at org.jboss.ejb3.mdb.inflow.MessageInflowLocalProxy.delivery(MessageInflowLocalProxy.java:268) at org.jboss.ejb3.mdb.inflow.MessageInflowLocalProxy.invoke(MessageInflowLocalProxy.java:138) at $Proxy97.onMessage(Unknown Source) at org.jboss.resource.adapter.jms.inflow.JmsServerSession.onMessage(JmsServerSession.java:183) at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:905) at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:170) at org.jboss.mq.SpySession.run(SpySession.java:323) at org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:249) at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204) at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743) at java.lang.Thread.run(Thread.java:595)
.. y resulta que siempre ha de existir un constructor con parámetros de entrada vacíos o da el error mencionado tan rarito:
... /** Constructor */ public CallCenterMessageListenerImpl() { } ...
Chorrón a más no poder pero me he comido unas cuantas horitas…
0 comentarios