2012-11-20 3 views
0

나는 Heroku에서 간단한 CRUD 앱을 배포하려고합니다. 그러나 나는 봄을 사용하고 싶지 않다. 내가 사용하고있는 것은 지속성을 위해 JSF (Primefaces)와 JPA (Hibernate)이다. 나는 dB로 연결하기 위해 노력하고 때 나는 다음과 같은 예외를 받고 있어요 :Spring을 사용하지 않고 Heroku에서 PostgreSQL에 어떻게 연결합니까?

java.lang.UnsupportedOperationException: The user must supply a JDBC connection 
org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54) 
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.Handlers.UserHandler.getAllUsers(UserHandler.java:31) 
org.tutorial.LoginBean.authenticate(LoginBean.java:52) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:616) 
org.apache.el.parser.AstValue.invoke(AstValue.java:264) 
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278) 
com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) 
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88) 
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) 
javax.faces.component.UICommand.broadcast(UICommand.java:315) 
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) 
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) 
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) 

내의 persistence.xml은 다음과 같습니다

<persistence-unit name="test"> 
<provider>org.hibernate.ejb.HibernatePersistence</provider> 
<properties> 
    <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> 
    <property name="driverClassName" value="${database.driverClassName}"/> 
    <property name="hibernate.show_sql" value="true"/> 
    <property name="url" value="#{ 'jdbc:postgresql://' + @dbUrl.getHost() + @dbUrl.getPath() }"/> 
    <property name="username" value="#{ @dbUrl.getUserInfo().split(':')[0] }"/> 
    <property name="password" value="#{ @dbUrl.getUserInfo().split(':')[1] }"/> 
    <property name="hibernate.max_fetch_depth" value="3"/> 
    <property name="hibernate.hbm2ddl.auto" value="update"/> 
</properties> 

은 내가 applicationcontext.xml 파일의 속성을 복사 한.

누구나 문제가있을 수 있습니다. ?? 유사한 게시물을 살펴 보았지만 해결책을 찾지 못했습니다.

내 pom.xml 파일은 다음

<dependencies> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.0.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>taglibs</groupId> 
     <artifactId>standard</artifactId> 
     <version>1.1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hsqldb</groupId> 
     <artifactId>hsqldb</artifactId> 
     <version>2.2.8</version> 
    </dependency> 
    <dependency> 
     <groupId>postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
     <version>9.1-901.jdbc4</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>commons-dbcp</groupId> 
     <artifactId>commons-dbcp</artifactId> 
     <version>1.4</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>3.6.10.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.0-api</artifactId> 
     <version>1.0.0.Final</version> 
     <classifier/> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>3.6.4.Final</version> 
     <classifier/> 
    </dependency> 
    <dependency> 
     <groupId>com.github.jsimone</groupId> 
     <artifactId>webapp-runner</artifactId> 
     <version>7.0.27.1</version> 
     <scope>provided</scope> 
    </dependency>      
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-web-api</artifactId> 
     <version>6.0</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 

답변

1

나 또한 당신과 같은 문제를 통해 지속성 단위의 국지적 위의 구성을 갔다와 pom.xml 파일이 올바르지 만의 ApplicationContext에 실수가있을 수 있습니다. 여기에 포함되지 않은 xml.

다음은 결함이있을 수있는 applictioncontext.xml의 일부입니다.

<bean class="java.net.URI" id="dbUrl"> 
     <constructor-arg value="#{systemEnvironment['DATABASE_URL']}" /> 
    </bean> 

    <bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="org.postgresql.Driver" />  
     <property name="url" value="#{ 'jdbc:postgresql://' + @dbUrl.getHost() + @dbUrl.getPath() }" /> 
     <property name="username" value="#{ @dbUrl.getUserInfo().split(':')[0] }" /> 
     <property name="password" value="#{ @dbUrl.getUserInfo().split(':')[1] }" /> 
    </bean> 

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

       <property name="databasePlatform" value="org.hibernate.dialect.PostgreSQLDialect" /> 
      </bean> 
     </property> 
    </bean> 

도움이 필요한 경우 알려 주시기 바랍니다.

관련 문제