surfzera 7 de nov. de 2012
surfzera:
Pessoal fiz metodo que instancia uma classe abstrata, quando rodo uma classe de Test em modo desktop ela funciona perfeitamente. Quando utilizo ela em modo Web a classe não é instanciada corretamente;
vejam:
Metodo dentro da classe Pessoa:
public final VinculoPessoa criarVinculo ( int cdVinculo ) {
Map < Integer , Class <? >> vMap = new HashMap < Integer , Class < ?> > ();
vMap . put ( Administrador . CD_VINCULO , Administrador . class );
vMap . put ( Prestador . CD_VINCULO , Prestador . class );
vMap . put ( Colaborador . CD_VINCULO , Colaborador . class );
vMap . put ( Cliente . CD_VINCULO , Cliente . class );
vMap . put ( VinculoCNU . CD_VINCULO , VinculoCNU . class );
vMap . put ( VinculoFornecedor . CD_VINCULO , VinculoFornecedor . class );
vMap . put ( VinculoParticipacoes . CD_VINCULO , VinculoParticipacoes . class );
VinculoPessoa vp = null ;
try {
final Class < VinculoPessoa > clazz = ( Class < VinculoPessoa > ) vMap . get ( cdVinculo );
Constructor < VinculoPessoa > constructor = clazz . getConstructor ( Pessoa . class );
vp = constructor . newInstance ( new Object []{ this });
vinculosPortal . add ( vp );
} catch ( NoSuchMethodException e ) {
conf . Log . logControlMsg ( this , conf . Log . LEVEL_ERRO , e );
} catch ( InvocationTargetException e ) {
conf . Log . logControlMsg ( this , conf . Log . LEVEL_ERRO , e );
} catch ( IllegalAccessException e ) {
conf . Log . logControlMsg ( this , conf . Log . LEVEL_ERRO , e );
} catch ( InstantiationException e ) {
conf . Log . logControlMsg ( this , conf . Log . LEVEL_ERRO , e );
}
return vp ;
}
Erro:
br.com.unimed.portal.pessoa.colaborador.Colaborador.(Colaborador.java:145)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
Hebert_Coelho 7 de nov. de 2012
Você ta tentando utilizar essa classe com algum framework?
surfzera 8 de nov. de 2012
Não tentei… qual framework posso utilizar ?
Hebert_Coelho 8 de nov. de 2012
surfzera:
Não tentei… qual framework posso utilizar ? Eu digo, na view. Você está tentando utilizar esse objeto em alguma página? Em algum framework? Quando acontece esse erro?
Rodrigo_Sasaki 8 de nov. de 2012
surfzera:
Erro:
br . com . unimed . portal . pessoa . colaborador . Colaborador .( Colaborador . java : 145 )
sun . reflect . NativeConstructorAccessorImpl . newInstance0 ( Native Method ) </ blockquote >
Isso não é o erro , poste a stacktrace completa .
Você sabe que não pode instanciar uma classe abstrata, correto?
wagnerfrancisco 8 de nov. de 2012
Posta a parte relevante da classe Colaborador também. Principalmente o construtor.
surfzera 8 de nov. de 2012
Segue
Construtor da Classe Colaborador:
public Colaborador ( Pessoa pessoa ) {
super ( pessoa );
}
surfzera 8 de nov. de 2012
Segue Erro completo:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax . servlet . ServletException
org . apache . jasper . runtime . PageContextImpl . doHandlePageException ( PageContextImpl . java : 848 )
org . apache . jasper . runtime . PageContextImpl . handlePageException ( PageContextImpl . java : 781 )
org . apache . jsp . uploadCSV_jsp . _jspService ( org . apache . jsp . uploadCSV_jsp : 94 )
org . apache . jasper . runtime . HttpJspBase . service ( HttpJspBase . java : 97 )
javax . servlet . http . HttpServlet . service ( HttpServlet . java : 810 )
org . apache . jasper . servlet . JspServletWrapper . service ( JspServletWrapper . java : 322 )
org . apache . jasper . servlet . JspServlet . serviceJspFile ( JspServlet . java : 314 )
org . apache . jasper . servlet . JspServlet . service ( JspServlet . java : 264 )
javax . servlet . http . HttpServlet . service ( HttpServlet . java : 810 )
org . jboss . web . tomcat . filters . ReplyHeaderFilter . doFilter ( ReplyHeaderFilter . java : 81 )
root cause
java . lang . ExceptionInInitializerError
br . com . unimed . portal . pessoa . colaborador . Colaborador . ( Colaborador . java : 145 )
sun . reflect . NativeConstructorAccessorImpl . newInstance0 ( Native Method )
sun . reflect . NativeConstructorAccessorImpl . newInstance ( NativeConstructorAccessorImpl . java : 39 )
sun . reflect . DelegatingConstructorAccessorImpl . newInstance ( DelegatingConstructorAccessorImpl . java : 27 )
java . lang . reflect . Constructor . newInstance ( Constructor . java : 513 )
br . com . unimed . portal . pessoa . Pessoa . criarVinculo ( Pessoa . java : 248 )
br . com . unimed . portal . colaborador . CargaColaborador . popularPessoaFisica ( CargaColaborador . java : 125 )
br . com . unimed . portal . colaborador . CargaColaborador . lerArquivoCsv ( CargaColaborador . java : 86 )
org . apache . jsp . uploadCSV_jsp . _jspService ( org . apache . jsp . uploadCSV_jsp : 77 )
org . apache . jasper . runtime . HttpJspBase . service ( HttpJspBase . java : 97 )
javax . servlet . http . HttpServlet . service ( HttpServlet . java : 810 )
org . apache . jasper . servlet . JspServletWrapper . service ( JspServletWrapper . java : 322 )
org . apache . jasper . servlet . JspServlet . serviceJspFile ( JspServlet . java : 314 )
org . apache . jasper . servlet . JspServlet . service ( JspServlet . java : 264 )
javax . servlet . http . HttpServlet . service ( HttpServlet . java : 810 )
org . jboss . web . tomcat . filters . ReplyHeaderFilter . doFilter ( ReplyHeaderFilter . java : 81 )
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.
Hebert_Coelho 8 de nov. de 2012
O que tem nessa linha?
br.com.unimed.portal.pessoa.colaborador.Colaborador.(Colaborador.java:145)
surfzera 8 de nov. de 2012
Hebert
Esta sendo usado Refletion utilizando a classe Contructor, não entendi bem se é isso que você quis dizer:
import java.lang.reflect.Constructor;
final Class < VinculoPessoa > clazz = ( Class < VinculoPessoa > ) vMap . get ( cdVinculo );
Constructor < VinculoPessoa > constructor = clazz . getConstructor ( Pessoa . class );
vp = constructor . newInstance ( new Object []{ this });
surfzera 8 de nov. de 2012
Linha 145 classe Colaborador:
144 - public static final int CD_VINCULO = 3 ;
145 - private static TipoVinculoPessoa tp_vinculo = TipoVinculoPessoa . get InstanceOf ( CD_VINCULO );
Hebert_Coelho 8 de nov. de 2012
Eu ACHO que o seu servidor está se perdendo na hora de instanciar a classe. Creio que a solução seria criar um classloader próprio, mas não sei te falar ao certo como seria.
surfzera 8 de nov. de 2012
Então aproveitando o gancho estou usando o JBOSS 4.0.2
thiago_pco 8 de nov. de 2012
Só uma pergunta.
Sua classe Colaborador tem um contrutor default?
Vi que existe um construtor recebendo uma Pessoa, o que a deixa sem o construtor default.
surfzera 8 de nov. de 2012
Sim a classe Colaborador tem um Contrutor:
public Colaborador ( Pessoa pessoa ) {
super ( pessoa );
}
surfzera 8 de nov. de 2012
[email removido] - Não entendi oque você que dizer! Pode me explicar melhor ?
thiago_pco 8 de nov. de 2012
Alguns frameworks utilizam o contrutor default ou padrão para inicializar classes. Por padrão toda classe java sem um construtor explícito possui um construtor default.
Porém quando criamos um construtor com parâmetros diferentes o default deixa de existir.
Como sua classe possui um construtor recebendo uma Pessoa, provavelmente não possui mais o construtor padrão(Caso não seja adicionado explicitamente), que seria algo do tipo: