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