Integrando Spring + JPA(Hibernate) + Tomcat

2 respostas
ffranceschi

Estou com problemas na integracao do Spring + JPA no tomcat. Como implementacao da JPA estou usando o Hibernate, motivado por nao precisar iniciar a JVM com parametros (javaagent, informacao conseguida na propria documentacao do Spring http://static.springframework.org/spring/docs/2.0.x/reference/orm.html#orm-jpa).

usando um applicationContext.xml

<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url" value="jdbc:mysql://localhost/bancoDeDados" />
		<property name="username" value="root" />
		<property name="password" value="" />
	</bean>

    <bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="jpaVendorAdapter">
            <bean
                class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="database" value="MYSQL" />
                <property name="showSql" value="true" />
            </bean>
        </property>
    </bean>

Acontece o erro abaixo na criacao do entityManagerFactory (quando coloco apenas o Datasource funciona

Trace do erro (as ultimas 2 linhas do erro se repentem umas 80 vezes, e causa um overflow do erro, pelo menos acho que seja isso :slight_smile: )

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.StackOverflowError
Caused by: 
java.lang.StackOverflowError
	at java.lang.Character.toLowerCase(Character.java:4208)
	at java.lang.Character.toLowerCase(Character.java:4175)
	at java.lang.String.toLowerCase(String.java:2409)
	at java.lang.String.toLowerCase(String.java:2497)
	at org.apache.xerces.util.URI.setScheme(URI.java:908)
	at org.apache.xerces.util.URI.initializeScheme(URI.java:576)
	at org.apache.xerces.util.URI.initialize(URI.java:400)
	at org.apache.xerces.util.URI.<init>(URI.java:211)
	at org.apache.xerces.util.URI.<init>(URI.java:195)
	at org.apache.xerces.impl.XMLEntityManager.expandSystemId(XMLEntityManager.java:1140)
	at org.apache.xerces.impl.XMLEntityManager.resolveEntity(XMLEntityManager.java:581)
	at org.apache.xerces.impl.xs.XMLSchemaLoader.xsdToXMLInputSource(XMLSchemaLoader.java:625)
	at org.apache.xerces.impl.xs.XMLSchemaLoader.processJAXPSchemaSource(XMLSchemaLoader.java:580)
	at org.apache.xerces.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.java:489)
	at org.apache.xerces.impl.xs.XMLSchemaLoader.processJAXPSchemaSource(XMLSchemaLoader.java:588)
	at org.apache.xerces.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.java:489)
	at org.apache.xerces.impl.xs.XMLSchemaLoader.processJAXPSchemaSource(XMLSchemaLoader.java:588)
	at org.apache.xerces.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.java:489)
	at org.apache.xerces.impl.xs.XMLSchemaLoader.processJAXPSchemaSource(XMLSchemaLoader.java:588)

Seguindo a documentacao do spring, coloquei a propriedade abaixo no entityManagerFactory do arquivo applicationContext.xml
Colocando a opcao

<property name="loadTimeWeaver">
    <bean class="org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver"/>
  </property>

Adicionei o arquivo spring-tomcat-weaver-2.0.5.jar no tomcat/server/lib
e no server.xml inclui no contexto

<Context path="/exemplo-0.0.1">
	<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/>
</Context>

Depois de ter feito isso, só dá erro 404 nas paginas :frowning:

Alguem já passou por isso ou tem alguma dica pra me ajudar?
Alguem poderia me dizer como fez para funcionar isso?

Abracos
Fernando

2 Respostas

ffranceschi

Um detalhe, estou usando JDK 6.0 e tomcat 5.5.

S

Boa tarde.

Cara, recentemente tive um problema deste tipo e no meu caso, eu tinha feito uma m… com cascade.
Removi os cascades desnecessários e parou.
Dá uma olhada pra ver se é isso.

Criado 11 de junho de 2007
Ultima resposta 13 de out. de 2009
Respostas 2
Participantes 2