Re:Separar classe

3 respostas
andrepestana

Diogo,

desculpe a curiosidade, mas qual JVM tem essa limitação?

Abraço,

3 Respostas

D

Pessoal,

Gostaria da ajuda de vcs para poder dividir a classe DataServerImpl. Não vejo como separá-la, pois o compilador, pára gerar os Stubs e Skels (dessa DataServerImpl) requisita que a mesma extenda java.util.remote ou que implemente uma classe que extenda Remote -me corrijam se eu estiver errado.
A necessidade é devido a limitação (da jvm) do tamanho da classe/método, que é de 64k,.

Tenho uma classe DataServer que extende java.rmi.Remote. Essa classe tem 890 linhas, com métodos parecidos com os abaixo:

public interface DataServer extends Remote {
   public List<M01APGDOM > findM01APG(M01APGDOM apgDom) throws Exception;
   public List<M01PCGDOM > findM01PCG(M01PCGDOM pcgDom) throws Exception;
   //...
   public M01APGDOM inserir(M01APGDOM apgDom) throws Exception;
   public M01PCGDOM inserir(M01PCGDOM pcgDom) throws Exception;
   //...
   public void alterar(M01APGDOM apgDom) throws Exception;
   public void alterar(M01PCGDOM pcgDom) throws Exception;
   //...
   public void remover(M01APGDOM apgDom) throws Exception;
   public void remover(M01PCGDOM pcgDom) throws Exception;

E a bandida, DataServerImpl, com 2052 linhas.

public class DataServerImpl extends UnicastRemoteObject implements DataServer {
   private M01APGDAO M01APGDAO = new M01APGDAO();
   private M01PCGDAO M01PCGDAO = new M01PCGDAO();
   //...
   public DataServerImpl() throws RemoteException {
      super();
   }

   public List<M01APGDOM > findM01APG(M01APGDOM apgDom) throws Exception {
       return M01APGDAO.findM01APG(empDom);
   }

   public List<M01PCGDOM> findM01PCG(M01PCGDOM pcgDom) throws Exception {
       return M01PCGDAO.findM01PCG(pcgDom);
   }
   //...
   public M01APGDOM inserir(M01APGDOM apgDom) throws Exception {
      return M01APGDAO.inserir(ajudaDom);
   }
   public M01PCGDOM inserir(M01PCGDOM pcgDom) throws Exception {
       return M01PCGDAO.inserir(pcgDom);
   }
   //...
   public void alterar(M01APGDOM apgDom) throws Exception {
      M01APGDAO.alterar(ajudaDom);
   }
   public void alterar(M01PCGDOM pcgDom) throws Exception {
      M01PCGDAO.alterar(pcgDom);
   }
   //...
   public void remover(M01APGDOM apgDom) throws Exception {
      M01APGDOM.remover(apgDom);
   }
   public void remover(M01PCGDOM pcgDom) throws Exception {
      M01PCGDAO.remover(pcgDom);
   }

Obrigado!

D

andrepestana:
Diogo,

desculpe a curiosidade, mas qual JVM tem essa limitação?

Abraço,

O que parece é que a especificação ocorreu desde a primeira versão do Java.
4.10 Limitations of the Java Virtual Machine

Java Primeira Edição
http://java.sun.com/docs/books/jvms/first_edition/html/ClassFile.doc.html#6253

Java Segunda Edição
http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#88659

D

É uma interface DataServer e uma classe DataServerImpl que implementa o DataServer.

Eu preciso “quebrar” esta DataServerImpl separando seus métodos, por exemplo, para métodos de consulta, eu criaria uma DataFindImpl.

Valeu

Criado 22 de outubro de 2008
Ultima resposta 23 de out. de 2008
Respostas 3
Participantes 2