Spring MVC webapp (Hibernate および JPA) を Cloudbees の Tomcat 7 ClickStack にデプロイしようとしていますが、データベース接続を適切に構成できないようです。複数のチュートリアル (多くの解決策を提供しています) に従ってみましたが、どれもうまくいきませんでした。誰かが以下の私の構成ファイルを見て、何か問題があれば教えていただければ幸いです。
エラー:
java.lang.NullPointerException
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
最初に、cloudbees cli を使用してデータベースをアプリにバインドし、cloudbees-web.xml でデータベースを宣言する必要がないようにしました。
bees app:bind -a myapp/app -db mydatabase
application - myapp/app bound to cb-db:myapp/mydatabase as mydatabase
(データベースのバインドを解除し、cloudbees-web.xml と context.xml でも定義しようとしましたが、成功しませんでした)
春-data.xml:
<jee:jndi-lookup id="datasource" jndi-name="jdbc/mydatabase"
lookup-on-startup="false" proxy-interface="javax.sql.DataSource"
cache="true" resource-ref="true" />
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="hibernate-jpa"/>
<property name="dataSource" ref="dataSource"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect"/>
<property name="showSql" value="false"/>
<property name="generateDdl" value="true"/>
</bean>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
<property name="jpaDialect">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/>
</property>
</bean>
web.xml:
<resource-ref>
<res-ref-name>jdbc/mydatabase</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Maven ファイルからコネクタへのすべての参照を削除し、lib
フォルダーからすべての jar を削除しました。エラーメッセージを検索すると、通常はドライバーが見つからないことに関係していることがわかります...しかし、データベースはコンテナーによって提供されるため、なぜそれについて心配する必要があるのでしょうか?
-- 編集: META-INF/context.xml ファイルの作業 --
多くのドキュメントで参照されている com.cloudbees.jdbc.Driver が機能しなかった (classnotfound 例外がスローされた) ため、mysql-connector-java.jar ファイルを lib フォルダーにパッケージ化する必要があったことに注意してください。また、今のところ、システム プロパティを使用するように設定する代わりに、URL、ユーザー名、およびパスワードをハードコードしただけです。
<Context>
<Loader delegate="true"/>
<Resource
name="jdbc/mydatabase"
auth="Container"
type="javax.sql.DataSource"
maxActive="5"
maxIdle="2"
username="USERNAME"
maxWait="5000"
driverClassName="com.mysql.jdbc.Driver"
password="PASSWORD"
url="jdbc:mysql://MY_EC2_DB_URL:3306/mydatabase"/>
</Context>