Vraptor + Hibernate erro no linux

10 respostas
G

Bom dia…

Não estou conseguindo entender o que esta acontecendo… no meu ambiente de desenvolvimento estou com win… tomcat…

Fiz uma aplicação bem simples que apenas busca no meu banco um dado…
o usuario digita o cod e ele retorna dados deste codig… apenas isso…

Utilizei Vraptor 2.2.3 + Hibernate 3.2.0

no win tudo ok… mas quando fui jogar no servidor linux… ele me da o seguinte erro qd mando buscar um codigo:

exception

javax.servlet.ServletException: Servlet.init() for servlet vraptor2 threw exception
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)
	org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
	org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:748)
	org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:678)
	org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:870)
	org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	java.lang.Thread.run(Thread.java:595)

root cause

java.lang.TypeNotPresentException: Type org.vraptor.annotations.Component not present
	sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:98)
	sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:107)
	sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:31)
	sun.reflect.annotation.AnnotationParser.parseSig(AnnotationParser.java:351)
	sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:175)
	sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:69)
	sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:52)
	java.lang.Class.initAnnotationsIfNecessary(Class.java:2998)
	java.lang.Class.getAnnotation(Class.java:2958)
	java.lang.Class.isAnnotationPresent(Class.java:2970)
	org.vraptor.config.Configuration.classIsComponent(Configuration.java:49)
	org.vraptor.config.Configuration.readDirectory(Configuration.java:113)
	org.vraptor.config.Configuration.readDirectory(Configuration.java:110)
	org.vraptor.config.Configuration.readDirectory(Configuration.java:110)
	org.vraptor.config.Configuration.readDirectory(Configuration.java:110)
	org.vraptor.config.Configuration.readDirectory(Configuration.java:110)
	org.vraptor.config.Configuration.readDirectory(Configuration.java:82)
	org.vraptor.webapp.DefaultWebApplication.init(DefaultWebApplication.java:83)
	org.vraptor.core.ControllerFactory.configure(ControllerFactory.java:34)
	org.vraptor.VRaptorServlet.init(VRaptorServlet.java:40)
	javax.servlet.GenericServlet.init(GenericServlet.java:211)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)
	org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
	org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:748)
	org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:678)
	org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:870)
	org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	java.lang.Thread.run(Thread.java:595)

meu componente esta assim:

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.vraptor.annotations.Component;
import org.vraptor.annotations.Out;

import br.com.unimedsudoestemg.hibernate.DAO.SadtDAO;
import br.com.unimedsudoestemg.modelo.Sadt;

@Component
public class SadtLogic {

	@Out
	private Sadt sadt;

	// pega sadt pelo codigo
	public void pega(Sadt sadt) {
		try {
			this.sadt = new SadtDAO().pega(sadt.getAmb());
			this.sadt.getAmb();
		} catch (Exception e) {
			// TODO: handle exception
			this.sadt = sadt;

		}

	}

}

alguem sabe o que esta acontecendo?

[]'s

Geraldo

10 Respostas

G

a mensagem de cima eu restartei o tomcat e deu certo.. porem agora é o seguinte:

tentei fazer a procura e esta me dando um erro.

Imprimi a Exception e.getMessage():
could not load an entity: [br.com.unimedsudoestemg.modelo.Sadt#14010038]

Alguem sabe o que pode ser?

segue o objeto Sadt:

package br.com.unimedsudoestemg.modelo;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Sadt {

    @Id
    private Long amb;

    private String descamb;

    private int qtdut;

    private String inc;

    private String vtprocedimento;

    private int qtdutmedicoexame;

    private String ValorHonoMedExame;

    private String QtdUtCustoOperacional;

    private String ValorCustoOperacional;

    private String filme;

    private String PorteAnest;

    private String Auxiliares;

    private int CodigoRolProcMedUni;

    private String DesRolProcMedUni;

    private String ValProcInteNac;

    private String UCO;

    private String inc2;

    private String NumeroAuxi;

    private String PorteANes;

    private String Filme2;

    public Long getAmb() {
        return amb;
    }

    public void setAmb(Long amb) {
        this.amb = amb;
    }

    public String getAuxiliares() {
        return Auxiliares;
    }

    public void setAuxiliares(String auxiliares) {
        Auxiliares = auxiliares;
    }

    public int getCodigoRolProcMedUni() {
        return CodigoRolProcMedUni;
    }

    public void setCodigoRolProcMedUni(int codigoRolProcMedUni) {
        CodigoRolProcMedUni = codigoRolProcMedUni;
    }

    public String getDescamb() {
        return descamb;
    }

    public void setDescamb(String descamb) {
        this.descamb = descamb;
    }

    public String getDesRolProcMedUni() {
        return DesRolProcMedUni;
    }

    public void setDesRolProcMedUni(String desRolProcMedUni) {
        DesRolProcMedUni = desRolProcMedUni;
    }

    public String getFilme() {
        return filme;
    }

    public void setFilme(String filme) {
        this.filme = filme;
    }

    public String getFilme2() {
        return Filme2;
    }

    public void setFilme2(String filme2) {
        Filme2 = filme2;
    }

    public String getInc() {
        return inc;
    }

    public void setInc(String inc) {
        this.inc = inc;
    }

    public String getInc2() {
        return inc2;
    }

    public void setInc2(String inc2) {
        this.inc2 = inc2;
    }

    public String getNumeroAuxi() {
        return NumeroAuxi;
    }

    public void setNumeroAuxi(String numeroAuxi) {
        NumeroAuxi = numeroAuxi;
    }

    public String getPorteANes() {
        return PorteANes;
    }

    public void setPorteANes(String porteANes) {
        PorteANes = porteANes;
    }

    public String getPorteAnest() {
        return PorteAnest;
    }

    public void setPorteAnest(String porteAnest) {
        PorteAnest = porteAnest;
    }

    public int getQtdut() {
        return qtdut;
    }

    public void setQtdut(int qtdut) {
        this.qtdut = qtdut;
    }

    public String getQtdUtCustoOperacional() {
        return QtdUtCustoOperacional;
    }

    public void setQtdUtCustoOperacional(String qtdUtCustoOperacional) {
        QtdUtCustoOperacional = qtdUtCustoOperacional;
    }

    public int getQtdutmedicoexame() {
        return qtdutmedicoexame;
    }

    public void setQtdutmedicoexame(int qtdutmedicoexame) {
        this.qtdutmedicoexame = qtdutmedicoexame;
    }

    public String getUCO() {
        return UCO;
    }

    public void setUCO(String uco) {
        UCO = uco;
    }

    public String getValorCustoOperacional() {
        return ValorCustoOperacional;
    }

    public void setValorCustoOperacional(String valorCustoOperacional) {
        ValorCustoOperacional = valorCustoOperacional;
    }

    public String getValorHonoMedExame() {
        return ValorHonoMedExame;
    }

    public void setValorHonoMedExame(String valorHonoMedExame) {
        ValorHonoMedExame = valorHonoMedExame;
    }

    public String getValProcInteNac() {
        return ValProcInteNac;
    }

    public void setValProcInteNac(String valProcInteNac) {
        ValProcInteNac = valProcInteNac;
    }

    public String getVtprocedimento() {
        return vtprocedimento;
    }

    public void setVtprocedimento(String vtprocedimento) {
        this.vtprocedimento = vtprocedimento;
    }

}
Paulo_Silveira

de o e.printStackTrace

mas provavelmente é porque nao existe o objeto com esse id no banco

G

O objeto existe no banco… o mesmo banco que esta na estacao de desenvolvimento é o mesmo do servidor.

Sera que pode ser algum detalhe que o hibernate nao esta realmente conectando e fazendo as consultas no banco??

coloquei na minha logica um gera tabela… e percebi que a tabela continua com os dados… entao o hibernate nao gerou tabela alguma… acho q nem conectou ao banco…

ta muito estranho… vou ver se atualizo o meu mysql… mas isso so vou poder fazer no fds… :frowning:

se tiver alguma outra suspeita aceito…

versao do meu mysql: Your MySQL connection id is 103 to server version: 5.0.21-Debian_4-log

versao do connector: mysql-connector-java-5.0.4

minha logica:

@Component
public class SadtLogic {

	@Out
	private Sadt sadt;
	@Out 
	private String me;
	// gera tabela sadt
	public void pega(Sadt sadt) {
		AnnotationConfiguration conf = new AnnotationConfiguration();
		conf.addAnnotatedClass(Sadt.class);
		new SchemaExport(conf).create(true, true);
		me = "ok";
	}
}
G

bom usei o PreparedStatement ao inves de usar o Hibernate… só pra saber se o problema era no banco ou algo assim… e com o PreparedStatement ele funciona ok… ele pega o registro…

Só nao esta funcionando com o hibernate… :shock:

Nao quero usar o PreparedStatement, estou tentando achar o problema…

aguardo alguma ajuda…

abraços

Lembrando: Na minha maquina de desenvolvimento funciona no hibernate ok… so no servidor de produção que nao esta funcionando.

L

Tu chegaste a ver se o Hibernate está subindo o contexto? Carregando os mapeamentos e tal…

Chegaste a fazer algum teste simples com o hibernate no servidor? Talvez nem esteja conectando mesmo com o servidor.

No hibernate.cfg está tudo correto?

Tem como pegar o printStackTrace?

G

tou usando o hibernate3, esta certo as configuracoes…

pra pegar o e.printStackTrace, é só chamar o metodo? :oops:

[]'s

L

Verifica o arquivo de log do tomcat.

Paulo_Silveira

chame o metodo dentro do catch e veja o log do tomcat!

G
12:52:02,605 DEBUG [VRaptorServlet      ] new request to /unimed2/sadt/sadt.pega.logic
12:52:02,609 DEBUG [DefaultURLManager   ] Requested url (request wrapped): /unimed2/sadt/sadt.pega.logic
12:52:02,612 DEBUG [DefaultURLManager   ] requested uri: sadt.pega.logic
12:52:02,614 DEBUG [DefaultURLManager   ] request info extracted: [RequestInfo: sadt, pega, null]
12:52:02,619 DEBUG [VRaptorExecution    ] Calling execute on [RequestInfo: sadt, pega, null]
12:52:02,685 DEBUG [InterceptorType     ] creating interceptor type for class org.vraptor.interceptor.RegisterAttributesInteceptor
12:52:02,690 DEBUG [InterceptorsLogicFlow] Calling interceptor: org.vraptor.interceptor.RegisterAttributesInteceptor@ac06d4
12:52:02,695 DEBUG [InterceptorType     ] creating interceptor type for class org.vraptor.interceptor.ComponentLookupInterceptor
12:52:02,696 DEBUG [InterceptorsLogicFlow] Calling interceptor: org.vraptor.interceptor.ComponentLookupInterceptor@82d603
12:52:02,697 DEBUG [DefaultComponentType] Instantiating class br.com.unimedsudoestemg.logic.SadtLogic
12:52:02,697 DEBUG [InterceptorType     ] creating interceptor type for class org.vraptor.interceptor.InjectionInterceptor
12:52:02,698 DEBUG [InterceptorsLogicFlow] Calling interceptor: org.vraptor.interceptor.InjectionInterceptor@162ba99
12:52:02,698 DEBUG [InterceptorType     ] creating interceptor type for class org.vraptor.interceptor.SettingAndValidationInterceptor
12:52:02,699 DEBUG [InterceptorsLogicFlow] Calling interceptor: org.vraptor.interceptor.SettingAndValidationInterceptor@1b7b407
12:52:02,708 DEBUG [BasicIntrospector   ] Parameter sadt.amb will be used on field sadt
12:52:02,709 DEBUG [JPathExecutor       ] ready to use parameter [sadt, amb]
12:52:02,712 DEBUG [SimpleConverterManager] Found converter org.vraptor.converter.basic.SimpleLongConverter
12:52:02,712 DEBUG [BasicIntrospector   ] Parameter not used: submit
12:52:02,718 DEBUG [ValidatorEngine     ] loading resource bundle: messages for locale pt_BR
12:52:02,738 DEBUG [ValidatorEngine     ] Resource bundle not found: messages
12:52:02,740 DEBUG [InterceptorType     ] creating interceptor type for class org.vraptor.interceptor.ExecuteLogicInterceptor
12:52:02,741 DEBUG [InterceptorsLogicFlow] Calling interceptor: org.vraptor.interceptor.ExecuteLogicInterceptor@9abce9
12:52:02,741 DEBUG [ExecuteLogicInterceptor] executing business logic org.vraptor.component.DefaultLogicMethod@e8a0cd
12:52:03,044  WARN [JDBCExceptionReporter] SQL Error: 1146, SQLState: 42S02
12:52:03,045 ERROR [JDBCExceptionReporter] Table 'site.Sadt' doesn't exist
org.hibernate.exception.SQLGrammarException: could not load an entity: [br.com.unimedsudoestemg.modelo.Sadt#14010038]
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.loader.Loader.loadEntity(Loader.java:1798)
	at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:48)
	at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:42)
	at org.hibernate.loader.entity.BatchingEntityLoader.load(BatchingEntityLoader.java:82)
	at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:2977)
	at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:393)
	at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:374)
	at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:137)
	at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:96)
	at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
	at org.hibernate.impl.SessionImpl.immediateLoad(SessionImpl.java:836)
	at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:66)
	at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)
	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:172)
	at br.com.unimedsudoestemg.modelo.Sadt$$EnhancerByCGLIB$$405a4050.getAmb(<generated>)
	at br.com.unimedsudoestemg.logic.SadtLogic.pega(SadtLogic.java:23)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.vraptor.reflection.ReflectionUtil.invoke(ReflectionUtil.java:75)
	at org.vraptor.reflection.JavaMethod.invoke(JavaMethod.java:31)
	at org.vraptor.component.DefaultLogicMethod.execute(DefaultLogicMethod.java:94)
	at org.vraptor.interceptor.ExecuteLogicInterceptor.intercept(ExecuteLogicInterceptor.java:37)
	at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:82)
	at org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:133)
	at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:82)
	at org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:45)
	at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:82)
	at org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:43)
	at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:82)
	at org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:57)
	at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:82)
	at org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:91)
	at org.vraptor.core.VRaptorController.execute(VRaptorController.java:59)
	at org.vraptor.VRaptorServlet.service(VRaptorServlet.java:53)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)
	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:748)
	at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:678)
	at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:870)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:595)
Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'site.Sadt' doesn't exist
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:3176)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1153)
	at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1266)
	at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
	at org.hibernate.loader.Loader.getResultSet(Loader.java:1668)
	at org.hibernate.loader.Loader.doQuery(Loader.java:662)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
	at org.hibernate.loader.Loader.loadEntity(Loader.java:1784)
	... 51 more
12:52:03,076 DEBUG [InterceptorType     ] creating interceptor type for class org.vraptor.interceptor.OutjectionInterceptor
12:52:03,077 DEBUG [InterceptorsLogicFlow] Calling interceptor: org.vraptor.interceptor.OutjectionInterceptor@11a5fd0
12:52:03,078 DEBUG [BasicIntrospector   ] Outjecting key sadt at REQUEST
12:52:03,078 DEBUG [BasicIntrospector   ] Outjecting key me at REQUEST
12:52:03,078 DEBUG [InterceptorType     ] creating interceptor type for class org.vraptor.interceptor.ViewInterceptor
12:52:03,079 DEBUG [InterceptorsLogicFlow] Calling interceptor: org.vraptor.interceptor.ViewInterceptor@1de007d
12:52:03,079 DEBUG [ViewInterceptor     ] last interception: ready to forward with result ok
12:52:03,079 DEBUG [OverridableViewManager] overriden view found sadt.pega.ok : /sadt/index.jsp
12:52:03,080 DEBUG [RegexViewManager    ] Server-side redirect to: /sadt/index.jsp

reparei isso:

12:52:03,045 ERROR [JDBCExceptionReporter] Table 'site.Sadt' doesn't exist

mas a tabela sadt existe no banco sim… nao sei o q esta acontecendo :frowning:

G

carambola…

o erro estava realmente aqui:

12:52:03,045 ERROR [JDBCExceptionReporter] Table 'site.Sadt' doesn't exist

a tabela tava com nome minusculo no banco :oops:
hehehehe
obrigado Paulo e Lucas…

bao q nisso aprendi a usar esse printStackTrace.

[]'s
Geraldo

Criado 21 de dezembro de 2006
Ultima resposta 27 de dez. de 2006
Respostas 10
Participantes 3