Pessoal é o seguinte, estou precisando muito de um ajuda, meu caso é o seguinte:
Tenho uma aplicação utilizando JSF,Spring,Hibernate…
nela tenho um arquivo persistence.xml onde coloco as configurações do meu banco de dados, no caso postgree. Tenho também um arquivo applicationContext que contém as configurações do Spring e contém também o entityManagerFactory apontando para esse meu persistence.
Vamos lá…eu utilizava então só o banco postgree só que agora em um cadastro na minha aplicação preciso fazer uma consulta em um banco oracle para validar um campo.
Adicionei as configurações desse banco no meu persistence.xml mas no applicationContext não sei como proceder.
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="cogerhPostgresDesenvolvimento" /> [b]<--- AQUI TENHO APENAS UM BANCO, GOSTARIA DE DECLARAR O OUTRO.[/b]
</bean>
<!-- Classe responsavel pela gestao das transacoes -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<!-- Marcacao de transacoes atraves de anotacoes -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- Identifica os beans anotados com @Service, @Repository, @Controller -->
<context:component-scan base-package="*" />
<!-- Habilita a configuracao do bena via anotacoes sem a necessidade de usar PersistenceAnnotationBeanPostProcessor -->
<context:annotation-config />
<!-- Faz a injecao de dependencia automaticamente -->
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<!-- Permite tratar exceções conhecidas do JPA para Spring -->
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
<bean class="org.springframework.orm.jpa.support.OpenEntityManagerInViewInterceptor"/>
Cara estou conseguindo sim levantar minha aplicação, o unico problema é que não consigo utilizar dois bancos distintos na minha aplicação. A solução que tive temporária para utilizar dois bancos foi criar uma classe que faz a conexão via jdbc puro, porém gostaria de um solução melhor, seguindo esse mesmo caminho que já faço para utilizar um banco.
Cara, eu não estou conseguindo levantar a aplicação. O Spring não consegue “enxergar” uma persistence-unit no persistence.xml (que encontra-se dentro da pasta META-INF).
[quote]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.IllegalArgumentException: No persistence unit with name ‘developer’ found
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:423)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.IllegalArgumentException: No persistence unit with name ‘developer’ found
at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.obtainPersistenceUnitInfo(DefaultPersistenceUnitManager.java:379)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.determinePersistenceUnitInfo(LocalContainerEntityManagerFactoryBean.java:244)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:196)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:291)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
… 30 more[/quote]
Vale lembrar que estou usando o Maven, dentro do Eclipse, mas está tudo sendo enviado corretamente para o servidor de aplicação. Ainda não instalei a base dados, mas acredito que o Srping não venha a tentar fazer uma conexão com a base assim que a aplicação está sendo iniciada.