SpringMVC + Maven + Hibernate + MySQL アプリ用の .war ファイルを生成しました。これは、localhost とローカル MySQL データベースで完全に正常に動作していました。データベースを構成する方法は、application.properties ファイルを見て適切な情報を取得する WebAppConfig.java ファイルを使用することです。
次に、OpenShift アカウントを作成し、その .war ファイルをデプロイしました。データベースを維持できるように、MySQL および PHPMyAdmin カートリッジを追加しました。アプリケーションから情報を取得したり、データベースにプッシュしようとすると、このエラーが発生します。
HTTP ステータス 500 - リクエストの処理に失敗しました。ネストされた例外は org.springframework.transaction.CannotCreateTransactionException: トランザクションの Hibernate セッションを開けませんでした。ネストされた例外は org.hibernate.exception.JDBCConnectionException: 接続を開けませんでした
message要求の処理に失敗しました。ネストされた例外は org.springframework.transaction.CannotCreateTransactionException: トランザクションの Hibernate セッションを開けませんでした。ネストされた例外は org.hibernate.exception.JDBCConnectionException: 接続を開けませんでした
例外org.springframework.web.util.NestedServletException: リクエストの処理に失敗しました。ネストされた例外は org.springframework.transaction.CannotCreateTransactionException: トランザクションの Hibernate セッションを開けませんでした。ネストされた例外は org.hibernate.exception.JDBCConnectionException: 接続 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) を開けませんでした) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) )
プロパティファイルにデータベースの適切な情報を既に追加しているので、それが問題だとは思いません。
アプリケーションのプロパティ
#DB
db.driver = com.mysql.jdbc.Driver
db.url = jdbc:mysql://{OPENSHIFT_MYSQL_DB_HOST}:{OPENSHIFT_MYSQL_DB_PORT}/springmvc
db.username = {OPENSHIFT_MYSQL_DB_USERNAME}
db.password = {OPENSHIFT_MYSQL_DB_PASSWORD}
#Hibernate
hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
hibernate.show_sql = true
entitymanager.packages.to.scan = org.example.app.model
hibernate.cache.provider_class = org.hibernate.cache.NoCacheProvider
注: 私の実際のコードでは、これらのプレースホルダーではなく、実際の OPENSHIFT_MYSQL_DB_HOST と OPENSHIFT_MYSQL_DB_PORT の値があります!