"bela" wrote:
Can you turn this into a unit test (or just some *simple* sample code) that reproduces the problem ? I looked at the code, and it looked fine: simple serialization/deserialization of a hashmap.
Bela
Hi Bela i add the full error and code :
FULL ERROR
18:15:54,081 ERROR [LogInterceptor] TransactionRolledbackLocalException in method: public abstract void javax.jms.MessageListener.onMessage(javax.jms.Message), causedBy:
org.jboss.util.NestedRuntimeException: - nested throwable: (java.io.EOFException)
at org.jboss.cache.TreeCache.invokeMethod(TreeCache.java:3184)
at org.jboss.cache.TreeCache.put(TreeCache.java:1741)
at org.jboss.cache.TreeCache.put(TreeCache.java:1724)
at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:230)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:642)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
at $Proxy80.put(Unknown Source)
at com.qnecta.tdi.server.servicio.treecache.impl.mbean.TreeCacheMBeanJBoss.incrementaContador(TreeCacheMBeanJBoss.java:85)
at com.qnecta.tdi.server.servicio.analisiscalidad.impl.mdb.AnalisisCalidadMDB.onMessage(AnalisisCalidadMDB.java:145)
at sun.reflect.GeneratedMethodAccessor83.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.invocation.Invocation.performCall(Invocation.java:345)
at org.jboss.ejb.MessageDrivenContainer$ContainerInterceptor.invoke(MessageDrivenContainer.java:475)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:185)
at org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor.invoke(MessageDrivenInstanceInterceptor.java:87)
at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:48)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:105)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:316)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:149)
at org.jboss.ejb.plugins.RunAsSecurityInterceptor.invoke(RunAsSecurityInterceptor.java:93)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
at org.jboss.ejb.MessageDrivenContainer.internalInvoke(MessageDrivenContainer.java:389)
at org.jboss.ejb.Container.invoke(Container.java:871)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker.invoke(JMSContainerInvoker.java:920)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker$MessageListenerImpl.onMessage(JMSContainerInvoker.java:1213)
at org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:256)
at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:871)
at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:159)
at org.jboss.mq.SpySession.run(SpySession.java:347)
at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:180)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:748)
at java.lang.Thread.run(Thread.java:534)
Caused by: java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2165)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2631)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:734)
at java.io.ObjectInputStream.(ObjectInputStream.java:253)
at org.jboss.cache.loader.FileCacheLoader.loadAttributes(FileCacheLoader.java:340)
at org.jboss.cache.loader.FileCacheLoader.put(FileCacheLoader.java:94)
at org.jboss.cache.interceptors.CacheLoaderInterceptor.invoke(CacheLoaderInterceptor.java:72)
at org.jboss.cache.TreeCache.invokeMethod(TreeCache.java:3181)
... 39 more
18:15:54,091 ERROR [JMSContainerInvoker] Exception in JMSCI message listener
javax.ejb.TransactionRolledbackLocalException: - nested throwable: (java.io.EOFException); CausedByException is:
- nested throwable: (java.io.EOFException)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:232)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:316)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:149)
at org.jboss.ejb.plugins.RunAsSecurityInterceptor.invoke(RunAsSecurityInterceptor.java:93)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
at org.jboss.ejb.MessageDrivenContainer.internalInvoke(MessageDrivenContainer.java:389)
at org.jboss.ejb.Container.invoke(Container.java:871)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker.invoke(JMSContainerInvoker.java:920)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker$MessageListenerImpl.onMessage(JMSContainerInvoker.java:1213)
at org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:256)
at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:871)
at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:159)
at org.jboss.mq.SpySession.run(SpySession.java:347)
at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:180)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:748)
at java.lang.Thread.run(Thread.java:534)
org.jboss.util.NestedRuntimeException: - nested throwable: (java.io.EOFException)
at org.jboss.cache.TreeCache.invokeMethod(TreeCache.java:3184)
at org.jboss.cache.TreeCache.put(TreeCache.java:1741)
at org.jboss.cache.TreeCache.put(TreeCache.java:1724)
at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:230)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:642)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
at $Proxy80.put(Unknown Source)
at com.qnecta.tdi.server.servicio.treecache.impl.mbean.TreeCacheMBeanJBoss.incrementaContador(TreeCacheMBeanJBoss.java:85)
at com.qnecta.tdi.server.servicio.analisiscalidad.impl.mdb.AnalisisCalidadMDB.onMessage(AnalisisCalidadMDB.java:145)
at sun.reflect.GeneratedMethodAccessor83.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.invocation.Invocation.performCall(Invocation.java:345)
at org.jboss.ejb.MessageDrivenContainer$ContainerInterceptor.invoke(MessageDrivenContainer.java:475)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:185)
at org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor.invoke(MessageDrivenInstanceInterceptor.java:87)
at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:48)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:105)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:316)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:149)
at org.jboss.ejb.plugins.RunAsSecurityInterceptor.invoke(RunAsSecurityInterceptor.java:93)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
at org.jboss.ejb.MessageDrivenContainer.internalInvoke(MessageDrivenContainer.java:389)
at org.jboss.ejb.Container.invoke(Container.java:871)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker.invoke(JMSContainerInvoker.java:920)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker$MessageListenerImpl.onMessage(JMSContainerInvoker.java:1213)
at org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:256)
at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:871)
at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:159)
at org.jboss.mq.SpySession.run(SpySession.java:347)
at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:180)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:748)
at java.lang.Thread.run(Thread.java:534)
Caused by: java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2165)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2631)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:734)
at java.io.ObjectInputStream.(ObjectInputStream.java:253)
at org.jboss.cache.loader.FileCacheLoader.loadAttributes(FileCacheLoader.java:340)
at org.jboss.cache.loader.FileCacheLoader.put(FileCacheLoader.java:94)
at org.jboss.cache.interceptors.CacheLoaderInterceptor.invoke(CacheLoaderInterceptor.java:72)
at org.jboss.cache.TreeCache.invokeMethod(TreeCache.java:3181)
... 39 more
BASIC CODE
MDB
/*
* Created on 06-nov-2004
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.qnecta.tdi.server.servicio.analisiscalidad.impl.mdb;
import javax.ejb.EJBException;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import com.qnecta.tdi.base.modelo.beans.llamada.CLlamada;
import com.qnecta.tdi.base.servicio.treecache.IServicioTreeCache;
import com.qnecta.tdi.base.servicio.treecache.LSCacheAtributos;
import com.qnecta.tdi.base.servicio.treecache.LSCacheFQN;
import com.qnecta.tdi.server.servicio.treecache.impl.mbean.TreeCacheMBeanJBoss;
/**
* @author Jose Manuel
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/**
* XDoclet-based message driven bean. The class must be declared
* <code>public</code>, according to the EJB specification.<br>
*
* To generate code:
* <br>
* <ul>
* <li> Add Standard EJB module to XDoclet project properties
* <li> Customize XDoclet configuration
* <li> Run XDoclet
* </ul>
* <br>
* Please see the included XDoclet Overview
* and the XDoclet Reference in the help system for details
*
* @ejb.bean name = "HolaMundoMDB"
* display-name = "HolaMundoMDB"
* description = "HolaMundoMDB EJB"
* jndi-name = "jms/HolaMundoMDB"
*/
public class AnalisisCalidadMDB implements MessageDrivenBean, MessageListener {
private IServicioTreeCache treeCache = null;
/** The MessageDrivenContext */
private MessageDrivenContext context;
/**
* An <code>ejbCreate</code> method as required by the EJB specification. <br>
*
* The container calls the instance’s <code>ejbCreate</code> method
* immediately after instantiation.
*
* @ejb.create-method
*/
public void ejbCreate() {
//Creamos una referencia a la cache
treeCache = new TreeCacheMBeanJBoss("jboss.cache:service=TreeCache");
}
/**
* The <code>ejbRemove()</code> method as required by the EJB specification.<br>
*
* A container invokes this method before it ends the life of the
* object. This happens as a result of a client's invoking
* a remove operation, or when a container decides to terminate the
* object after a timeout. <br>
*
* This method is called with no transaction context.
*
* @throws EJBException Thrown if the instance could not perform
* the function requested by the container because of an system-level error.
*/
public void ejbRemove() throws EJBException {
}
/**
* Set the associated context. The container calls this method
* after the instance creation. <br>
*
* The enterprise bean instance should store the reference to the context
* object in an instance variable. <br>
*
* This method is called with no transaction context.
*
* @param newContext A MessageDrivenContext interface for the instance.
*
* @throws EJBException Thrown by the method to indicate a failure caused by a system-level error.
*/
public void setMessageDrivenContext(MessageDrivenContext newContext)
throws EJBException {
context = newContext;
}
/**
* Process a message. <br>
*
* @param message The message to process.
*/
public void onMessage(Message message) {
CLlamada llamada = null;
if (message instanceof ObjectMessage) {
ObjectMessage objectMessage = (ObjectMessage)message;
try {
llamada = (CLlamada) objectMessage.getObject();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("MESSAGE BEAN: Message received: "
+ llamada);
//Vemos si el numeroB de la llamada aparece aparece en el control de calidad
StringBuffer fqnNum = new StringBuffer();
fqnNum.append("/");
fqnNum.append(LSCacheFQN.NUMERACIONES);
fqnNum.append("/");
fqnNum.append(llamada.getNumeroB());
String idGrupo = (String)treeCache.get(fqnNum.toString(),LSCacheAtributos.ID_GRUPO);
if(idGrupo!=null){
System.out.println("Control de Calidad:::INCLUIDA");
//Si es asi obtenemos el idGrupo y actualizamos los contadores
StringBuffer fqnGrp = new StringBuffer();
fqnGrp.append("/");
fqnGrp.append(LSCacheFQN.GRUPOS_NUMERACIONES);
fqnGrp.append("/");
fqnGrp.append(idGrupo);
//Actualizamos los contadores
Integer numeroLLamadas = (Integer)treeCache.get(fqnGrp.toString(),LSCacheAtributos.NUM_LLAMADAS);
numeroLLamadas = new Integer(numeroLLamadas.intValue()+1);
treeCache.incrementaContador(fqnGrp.toString(),LSCacheAtributos.NUM_LLAMADAS);
if(llamada.isCompletada()){
treeCache.incrementaContador(fqnGrp.toString(),LSCacheAtributos.NUM_LLAMADAS_COMPLETADAS);
}
if(llamada.getDuracion()/1000 > 10){
treeCache.incrementaContador(fqnGrp.toString(),LSCacheAtributos.NUM_LLAMADAS_COMPLETADAS10);
}
}else{
System.out.println("Control de Calidad:::EXCLUIDA");
}
} else {
System.out.println("Message of wrong type: "
+ message.getClass().getName());
}
}
}
HELPER CLASSES
/*
* Created on 08-nov-2004
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.qnecta.tdi.server.servicio.treecache.impl.mbean;
import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
import org.jboss.cache.TreeCacheMBean;
import org.jboss.cache.lock.LockingException;
import org.jboss.cache.lock.TimeoutException;
import org.jboss.mx.util.MBeanProxyExt;
import org.jboss.mx.util.MBeanServerLocator;
import com.qnecta.tdi.base.servicio.treecache.IServicioTreeCache;
/**
* @author Jose Manuel
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class TreeCacheMBeanJBoss implements IServicioTreeCache{
TreeCacheMBean treeCache;
public TreeCacheMBeanJBoss(String nombreServicio){
//jboss.cache:service=TreeCache
MBeanServer serverMBean = MBeanServerLocator.locate();
try {
treeCache =(TreeCacheMBean)MBeanProxyExt.create(TreeCacheMBean.class, nombreServicio, serverMBean);
} catch (MalformedObjectNameException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/* (non-Javadoc)
* @see com.qnecta.tdi.base.interfaces.cache.ITreeCache#put(java.lang.String, java.lang.Object)
*/
public void put(String fqn, Object atributo,Object valor) {
try {
treeCache.put(fqn,atributo,valor);
} catch (LockingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/* (non-Javadoc)
* @see com.qnecta.tdi.base.interfaces.cache.ITreeCache#get(java.lang.String)
*/
public Object get(String fqn,Object atributo) {
Object valor = null;
try {
valor = treeCache.get(fqn,atributo);
} catch (LockingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return valor;
}
public void incrementaContador(String fqn, Object atributo) {
try {
Integer valorContador = (Integer)treeCache.get(fqn,atributo);
valorContador = new Integer(valorContador.intValue()+1);
treeCache.put(fqn,atributo,valorContador);
System.out.println("*****__"+fqn+"/@"+atributo+"="+valorContador);
} catch (LockingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
thanks a lot