ERRO JBoss 4.2.2 GA [RESOLVIDO]

2 respostas
Juliano_Pedroso_da_S

Estou tentando executar uma classe e quando é executada dá o seguinte erro.

[Mon Jan 28 10:16:44 BRST 2008] Carregando EJB do servidor local javax.naming.CommunicationException: null javax.naming.CommunicationException [Root exception is java.io.InvalidClassException: org.jboss.util.id.GUID; local class incompatible: stream classdesc serialVersionUID = 3289509836244263718, local class serialVersionUID = 6926421946503004889] at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:649) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:509) at javax.naming.InitialContext.lookup(Unknown Source) at flash.servicosinternos.CarregadorServicos.run(CarregadorServicos.java:41) at java.util.TimerThread.mainLoop(Unknown Source) at java.util.TimerThread.run(Unknown Source) Caused by: java.io.InvalidClassException: org.jboss.util.id.GUID; local class incompatible: stream classdesc serialVersionUID = 3289509836244263718, local class serialVersionUID = 6926421946503004889 at java.io.ObjectStreamClass.initNonProxy(Unknown Source) at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source) at java.io.ObjectInputStream.readClassDesc(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at org.jboss.invocation.InvokerInterceptor.readExternal(InvokerInterceptor.java:125) at java.io.ObjectInputStream.readExternalData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at org.jboss.proxy.Interceptor.readExternal(Interceptor.java:66) at java.io.ObjectInputStream.readExternalData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at org.jboss.proxy.Interceptor.readExternal(Interceptor.java:66) at java.io.ObjectInputStream.readExternalData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at org.jboss.proxy.Interceptor.readExternal(Interceptor.java:66) at java.io.ObjectInputStream.readExternalData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at org.jboss.proxy.ClientContainer.readExternal(ClientContainer.java:111) at java.io.ObjectInputStream.readExternalData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.defaultReadFields(Unknown Source) at java.io.ObjectInputStream.readSerialData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at java.rmi.MarshalledObject.get(Unknown Source) at org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:51) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:552) ... 5 more Encerrando operação

No JBoss 3.2.6 essa rotina era executada normalmente se dar esse erro, já pesquisei mas não achei uma solução ainda…

Código da classe executada:

import javax.ejb.CreateException;
import javax.ejb.RemoveException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import flash.ejb.ServicosInternos;
import flash.ejb.ServicosInternosHome;

import java.rmi.RemoteException;
import java.util.Date;
import java.util.Hashtable;
import java.util.Timer;
import java.util.TimerTask;

public class CarregadorServicos extends TimerTask {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private ServicosInternos servicos = null;
	private Timer timer;
	
	public void run() {
		Hashtable<String, String> env = new Hashtable<String, String>();
        env.put(Context.INITIAL_CONTEXT_FACTORY,
                "org.jnp.interfaces.NamingContextFactory");
        env.put(Context.PROVIDER_URL, "localhost:1099");
        env.put("java.naming.factory.url.pkgs",
                "org.jboss.naming:org.jnp.interfaces");        
        try {
        	/*
        	 * Carregamento do EJB
        	 */
    		System.out.println("[" + new Date() + "] Carregando EJB do servidor local");

    		Context ctx = new InitialContext(env);

            Object obj = ctx.lookup("ServicosInternos");
            ServicosInternosHome home =
                    (ServicosInternosHome)javax.rmi.PortableRemoteObject.narrow(
                            obj, ServicosInternosHome.class );
            servicos = home.create();
            
            /*
             * Chamada dos métodos de negócio
             */
    		System.out.println("[" + new Date() + "] Executando serviços");
    		servicos.executarServicos();
            
            /*
             * Finalização da execução
             */
    		System.out.println("[" + new Date() + "] Finalizando execução");
        	servicos.remove();
        } catch (NamingException e) {
        	System.err.println(e.getClass().getName() + ": " + e.getMessage());
        	e.printStackTrace();
        	System.err.println("Encerrando operação");
        } catch (CreateException e) {
        	System.err.println(e.getClass().getName() + ": " + e.getMessage());
        	e.printStackTrace();
        	System.err.println("Encerrando operação");
        } catch (RemoteException e) {
        	System.err.println(e.getClass().getName() + ": " + e.getMessage());
        	e.printStackTrace();
        	System.err.println("Encerrando operação");
	    } catch (RemoveException e) {
	    	System.err.println(e.getClass().getName() + ": " + e.getMessage());
	    	e.printStackTrace();
	    	System.err.println("Encerrando operação");
        }
	}

	public static void main(String[] args) {
		CarregadorServicos carregador = new CarregadorServicos();
		
		carregador.timer = new Timer();
		carregador.timer.scheduleAtFixedRate(carregador, 1000, 300000);
		
		while (true) {
			try {
				Thread.sleep(10000);
			} catch (Exception e) {
				System.err.println(e.getMessage());
				e.printStackTrace();
				e.getCause();
			}
		}
	}
}

2 Respostas

dc.rec1

Não sou muito experiente no assunto mas tuas classes estão com versão diferente, a do servidor e a do cliente.

Se retirar as linhas que definem o serialVersionUID acho que o erro não vai acontecer mais.

Se precisar mesmo de aquele serialVersionUID, as duas classes devem estar com o atributo com o mesmo valor.

Espero ter ajudado.

Juliano_Pedroso_da_S

A solução foi trocar 3 libs do meu projeto a jbossal-client.jar, log4j.jar e a commons-collection.jar

Criado 28 de janeiro de 2008
Ultima resposta 6 de fev. de 2008
Respostas 2
Participantes 2