2010-06-18 2 views
2

내가 쓰기에게 시험 자바 응용 프로그램을 열고 바로 작동하지만 "다른 이름으로 저장을 누르면이 웹 응용 프로그램은 동일한 cfg.xml 파일최대 절전 모드 + PostgreSQL은 JDBCConnectionException를 던졌습니다 : 연결

<property name="hibernate.bytecode.use_reflection_optimizer">false</property> 
<property name="hibernate.connection.autocommit">true</property> 
<property name="hibernate.connection.release_mode">auto</property> 
<property name="hibernate.current_session_context_class">thread</property> 
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property> 
<property name="hibernate.connection.password">1234</property> 
<property name="hibernate.connection.url">jdbc:postgresql://localhost/postgres</property> 
<property name="hibernate.connection.username">postgres</property> 
<property name="hibernate.default_schema">public</property> 
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> 

<property name="hibernate.ejb.discard_pc_on_close">false</property> 
<property name="hibernate.query.jpaql_strict_compliance">true</property> 
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property> 
<property name="hibernate.transaction.flush_before_completion">false</property> 
<property name="hibernate.show_sql">false</property> 
<property name="hibernate.generate_statistics">false</property> 
<property name="hibernate.use_sql_comments">false</property> 
<property name="hibernate.connection.pool_size">100</property> 

에와 같은 예외를 throw 할 수 없습니다

javax.servlet.ServletException: org.hibernate.exception.JDBCConnectionException: Cannot open connection 
javax.faces.webapp.FacesServlet.service(FacesServlet.java:325) 

root cause 

javax.faces.el.EvaluationException: org.hibernate.exception.JDBCConnectionException: Cannot open connection 
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102) 
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) 
javax.faces.component.UICommand.broadcast(UICommand.java:315) 
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:775) 
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267) 
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82) 
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:312) 

root cause 

org.hibernate.exception.JDBCConnectionException: Cannot open connection 
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:98) 
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) 
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52) 
org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449) 
org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167) 
org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142) 
org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85) 
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
java.lang.reflect.Method.invoke(Unknown Source) 
org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:344) 
$Proxy108.beginTransaction(Unknown Source) 
com.yemex.beans.CompanyBean.saveOrUpdate(CompanyBean.java:52) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
java.lang.reflect.Method.invoke(Unknown Source) 
org.apache.el.parser.AstValue.invoke(AstValue.java:196) 
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) 
com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:98) 
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:775) 
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267) 
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82) 
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:312) 

root cause 

java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost/postgres 
java.sql.DriverManager.getConnection(Unknown Source) 
java.sql.DriverManager.getConnection(Unknown Source) 
org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133) 
org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446) 
org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167) 
org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142) 
org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85) 
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
java.lang.reflect.Method.invoke(Unknown Source) 
org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:344) 
$Proxy108.beginTransaction(Unknown Source) 
com.yemex.beans.CompanyBean.saveOrUpdate(CompanyBean.java:52) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
java.lang.reflect.Method.invoke(Unknown Source) 
org.apache.el.parser.AstValue.invoke(AstValue.java:196) 
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) 
com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:98) 
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:775) 
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267) 
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82) 
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:312) 

인용문 문제는 여기에 무엇

답변

0

"버튼을 나는 다음과 같은 예외가?

예외는 꽤 명시 적입니다 :

org.hibernate.exception.JDBCConnectionException 열 수 없습니다 연결

구성이 것을, 당신은 당신이 연결되어있는 데이터베이스에 연결할 수 있는지 확인 올바른지, 연결을 방해하는 네트워크 문제가 없다는 것을 의미합니다.

+0

하지만 그 llike 최대 절전 모드 cfg.xml을을 구성; \t <속성 명 = "hibernate.connection.driver_class"> org.postgresql.Driver \t <속성 명 = "hibernate.connection.password"> 1,234 \t <속성 명 = "hibernate.connection.url" > JDBC : PostgreSQL의 : // localhost를/포스트 그레스 \t <속성 이름 = "hibernate.connection.username"> 포스트 그레스 \t <속성 이름 = "hibernate.default_schema"> 공공 <속성 이름 = "hibernate.dialect "> org.hibernate.dialect.PostgreSQLDialect –

+0

Ok, 당신은 postgres 데이터베이스를 가지고 있습니까? 기본 포트에서 localhost를 실행하고 있고 postgres라는 이름의 데이터베이스가 있으며 postgres라는 이름의 사용자와 postgres라는 암호가 있습니까? –

+0

예 postgres라는 이름의 데이터베이스가 있으며 기본 포트 인 이 데이터베이스에는 이름이 postgres이고 패스가 '1234'인 사용자가 있습니다. –

1

설정 파일을 보지 못했지만 스택 추적이 th를 나타 내기 때문에 적절히 구성했다고 가정합니다. 그것은 localhost JDBC url에서 postgres 데이터베이스에 연결하려고합니다.

그것은 큰 문제처럼 보인다

는 포스트그레스 JDBC 드라이버를 찾을 수 있다는 것입니다 :

근본 원인

은 java.sql.SQLException : PostgreSQL의 : JDBC에 대한 찾을 수 없습니다 적합 드라이버// 로컬 호스트/포스트 그레스 java.sql.DriverManager.getConnection (알 소스) java.sql.DriverManager.getConnection (알 소스) org.hibernate.connection.DriverManagerConnectionProvider.getConnection (DriverManagerConnectionProvider.java:133)

,321 0 JAR 파일이 클래스 경로에 있는지 확인하십시오. 아직 가지고 있지 않다면 여기에서 다운로드 할 수 있습니다 : http://jdbc.postgresql.org/
+0

테스트 Java 응용 프로그램을 작성하고 올바르게 작동하지만이 웹 응용 프로그램에 문제가 있다고 생각합니다. 그리고 난 JDBC 드라이버를 제어하고 그것은 바로 –

6

예외가 발생하면 stacktrace에서 맨 밑의 근본 원인을 확인하는 것이 좋습니다. 이 경우는 다음과 같습니다

java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost/postgres 

이것은 단지 URL이 잘못 않거나, 원하는 드라이버가 현재 런타임 클래스 경로에 존재하지 않는 것을 의미한다. PostgreSQL JDBC documentation에 따라 URL이 잘 보이기 때문에 현재 런타임 클래스 경로에 드라이버가 누락 된 것입니다.

이 문제를 해결하려면 JDBC 드라이버 JAR 파일을 webapp의 런타임 클래스 경로에 넣어야합니다. /WEB-INF/lib은 webapp의 기본 런타임 클래스 경로로 덮여있는 폴더 중 하나입니다. PostgreSQL JDBC 드라이버 JAR 파일을 거기에 놓고 다시 배포하면됩니다.

+0

드라이버 경로는 이미/WEB-INF/lib이지만 동일한 문제가 계속 발생합니다. –

+1

분명히 다른 클래스 로더가 사용되었습니다. 'Tomcat/lib'를 넣거나 JAR 파일의 루트 경로를'Tomcat/conf/catalina.properties'의'shared.loader'에 추가하십시오. – BalusC

0

클래스 경로에 데이터베이스 드라이버의 jar 파일이 있는지 확인하십시오. 드라이버 클래스 이름이 올바른지 확인하십시오. connection.url이 올바른지 확인하십시오. 동일한 오류가 발생했습니다. 유일한 차이점은 Oracle 11g를 사용하고 있다는 것입니다. 클래스 경로에 ojdbc14.jar가 있는데 드라이버 클래스 이름은 정확했지만 connection.url 속성은 잘못되었습니다.오라클 : 얇은 : @localhost : 1521 : 오라클 11g의 경우 올바른 형식은

JDBC이다 global_dsn_name