2012-07-03 6 views
1

Spring JPA와 Hibernate를 사용하여 응용 프로그램을 개발 한 경험이 있습니다. "<cloud:data-source ...""BasicDataSource에서 지원하지 않습니다."cloudfoundry tomcat

을 XML 태그를 사용하여 http://blog.springsource.org/2011/11/04/using-cloud-foundry-services-with-spring-part-2-auto-reconfiguration/에 설명 된대로 내 데이터 소스를 설정 그리고 난 내 응용 프로그램을 배포 할 때 내가이 예외를 얻을 :

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is 
java.lang.UnsupportedOperationException: Not supported by BasicDataSource 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
root cause 

org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is java.lang.UnsupportedOperationException: Not supported by BasicDataSource 
    org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:427) 
    org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371) 
    org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335) 
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105) 
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 
    $Proxy19.getRecipeList(Unknown Source) 
    com.exigen.common.service.RecipeServiceImpl.getRecipeList(RecipeServiceImpl.java:14) 
    com.exigen.common.web.HelloController.index(HelloController.java:25) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    java.lang.reflect.Method.invoke(Method.java:597) 
    org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) 
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436) 
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
root cause 

java.lang.UnsupportedOperationException: Not supported by BasicDataSource 
    org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1062) 
    org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:68) 
    org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446) 
    org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167) 
    org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:160) 
    org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:81) 
    org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473) 
    org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:60) 
    org.springframework.orm.jpa.DefaultJpaDialect.beginTransaction(DefaultJpaDialect.java:70) 
    org.springframework.orm.jpa.vendor.HibernateJpaDialect.beginTransaction(HibernateJpaDialect.java:59) 
    org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:377) 
    org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371) 
    org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335) 
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105) 
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 
    $Proxy19.getRecipeList(Unknown Source) 
    com.exigen.common.service.RecipeServiceImpl.getRecipeList(RecipeServiceImpl.java:14) 
    com.exigen.common.web.HelloController.index(HelloController.java:25) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    java.lang.reflect.Method.invoke(Method.java:597) 
    org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) 
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436) 
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

나는 내 문제를 해결하기 위해 구글을 사용하려하고 '

https://confluence.atlassian.com/display/CONF28/Fix+'Not+supported+by+BasicDataSource'+Setup+or+Startup+Error

이 그래서 내가 구름 바람둥이에 추가 구성이 필요하다는 것하지만 난 돈 : 검색 결과로이 게시물을 얻을 그것에 액세스 할 수 있습니다.

내가 놓친 것이 있습니다. 어떤 해결책과 작업 코드 예제를 조언 해 주시겠습니까?

P. jdbc 템플릿에 대해 알고 있습니다. 실제로는 JPA로 작업하기 때문에 좋은 해결책이 아닙니다.

답변

1

응용 프로그램에 하나의 RDBMS 서비스 유형 만있는 경우 <cloud> 네임 스페이스를 사용해야 할 필요조차 없습니다. 다음 문서 페이지 : http://docs.cloudfoundry.com/frameworks/java/spring/spring.html 을보고 "관계형 데이터베이스 (MySQL 및 vFabric Postgres)"을 보면 자동 재구성의 작동 방식을 알 수 있습니다.

+0

logart 이봐, 업데이트를 packagesToScan을 추가? –

0

이 솔루션은 클라우드와 관련이없는 나를 위해 작동합니다. 내 dataSource를 mancat 대신 응용 프로그램에서 생성하고 동일한 오류가 발생하는 대신 Tomcat으로 옮깁니다. 여기 discribed으로이 문제를 해결하기 위해 숙소에 hibernate.connection.username 및 hibernate.connection.password 도움 제거 :

Fix 'Not supported by BasicDataSource' Setup or Startup Error

0

당신의 EntityManagerFactory 구성에

<bean id="entityManagerFactory" 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="com.example.domain" /> 
관련 문제