前提・実現したいこと
javaでDB(postgreSQL)連携のあるホームページを作っています。
Tomcatを使いローカル環境の動作ではしっかり動くのですが、herokuにデプロイをしたあとでwebを経由見ようととするとエラーが出ます。
このエラーを解決するためにはどうすればよいのでしょうか?
発生している問題・エラーメッセージ
HTTP Status 500 - No Persistence provider for EntityManager named #######(運用時には名前が入っています。)
エラーメッセージ type Exception report message No Persistence provider for EntityManager named #######(運用時には名前が入っています。) description The server encountered an internal error that prevented it from fulfilling this request. exception javax.persistence.PersistenceException: No Persistence provider for EntityManager named #######(運用時には名前が入っています。) javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85) javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) utils.DBUtil._getEntityManagerFactory(DBUtil.java:17) utils.DBUtil.createEntityManager(DBUtil.java:12) frontsideServlet.ToppageServlet.doGet(ToppageServlet.java:36) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) filters.EncodingFilter.doFilter(EncodingFilter.java:40) note The full stack trace of the root cause is available in the Apache Tomcat/8.0.44 logs. Apache Tomcat/8.0.44
該当のソースコード
java
1package utils; 2 3import javax.persistence.EntityManager; 4import javax.persistence.EntityManagerFactory; 5import javax.persistence.Persistence; 6 7public class DBUtil { 8 private static final String PERSISTENCE_UNIT_NAME = "#######(運用時には名前が入っています。)"; 9 private static EntityManagerFactory emf; 10 11 public static EntityManager createEntityManager() { 12 return _getEntityManagerFactory().createEntityManager(); 13 } 14 15 private static EntityManagerFactory _getEntityManagerFactory() { 16 if(emf == null) { 17 emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 18 } 19 20 return emf; 21 } 22}
試したこと
・Persistens.xmlに下記を追加
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/> <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://#######(運用時にはURLが入っています。)"/> <property name="javax.persistence.jdbc.user" value="#######(運用時にはユーザーネームが入っています。)"/> <property name="javax.persistence.jdbc.password" value="#######(運用時にはパスワードが入っています。)"/>
・pom.xmlの編集(下記 pom.xmlのソースコード)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>jp.example</groupId> <artifactId>#######(運用時には名前が入っています。)</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>copy</goal> </goals> <configuration> <artifactItems> <artifactItem> <groupId>com.github.jsimone</groupId> <artifactId>webapp-runner</artifactId> <version>8.0.44.0</version> <destFileName>webapp-runner.jar</destFileName> </artifactItem> </artifactItems> </configuration> </execution> </executions> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.0.0</version> <configuration> <warSourceDirectory>WebContent</warSourceDirectory> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.2.13.Final</version> </dependency> <dependency> <groupId>org.apache.taglibs</groupId> <artifactId>taglibs-standard-impl</artifactId> <version>1.2.5</version> </dependency> <dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>javax.servlet.jsp.jstl-api</artifactId> <version>1.2.1</version> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.2.5</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.1-api</artifactId> <version>1.0.2.Final</version> </dependency> <dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>eclipselink</artifactId> <version>2.5.0</version> </dependency> </dependencies> </project>
補足情報(FW/ツールのバージョンなど)
開発環境にはeclipseを使っています。
ローカルではtomcat-8.0.43を使用しています。
ローカル環境では問題なく動くのですが、herokuにデプロイするとToppageのみ上記のエラーメッセージが表示されてしまいます。
どなたかご回答よろしくおねがいいたします。
あなたの回答
tips
プレビュー