0

I'm trying to create a web application based on MVC structure using Hibernate JPA in model layer but I've encountered this error.

15-Dec-2018 10:55:40.681 SEVERE [http-nio-8080-exec-7] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [manager] in context with path [] threw exception [Servlet execution threw an exception] with root cause
javax.persistence.PersistenceException: No Persistence provider for EntityManager named MyConnection
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:84)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at util.JPAProvider.<clinit>(JPAProvider.java:13)
at model.bl.PersonManager.addUser(PersonManager.java:33)
at controller.Manager.service(Manager.java:83)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

persistence.xml:

   <?xml version="1.0" encoding="UTF-8" standalone="no"?>
   <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         version="1.0"
         xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="MyConnection" transaction-type="RESOURCE_LOCAL">

<provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>

        <!--<property name="hibernate.transaction.flush_before_completion" value="true"/>-->
        <!--<property name="hibernate.format_sql" value="true"/>-->

        <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
        <property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="hibernate.connection.username" value="midas"/>
        <property name="hibernate.connection.password" value="midas123"/>
        <property name="hibernate.connection.url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
        <property name="hibernate.hbm2ddl.auto" value="update"/>
        <property name="show_sql" value="true"></property>
        <!-- <property name="hibernate.globally_quoted_identifiers" value="true"/>-->
    </properties>
</persistence-unit>
</persistence>

I tried to change the META-INF location in my class path to fix the problem, but I did not succeed.

My project structure is:

project structure image

I use Tomcat 8 & intellij idea

I don't use maven or spring! Just hibernate jpa.

How to solve this problem?

Farzane Sadeghi
  • 39
  • 2
  • 13
  • 1
    Is that the full content of the `persistence.xml`? If so, it isn't a valid `persistence.xml`, as it is missing the required root `persistence` element. – Mark Rotteveel Dec 15 '18 at 07:57
  • 2
    Possible duplicate of [No Persistence provider for EntityManager named X](https://stackoverflow.com/questions/19322827/no-persistence-provider-for-entitymanager-named-x) – Mark Rotteveel Dec 15 '18 at 07:59
  • would you share your hibernate classpath plz check if hibernate-entitymanager.jar exists . – Omid P Dec 15 '18 at 08:09
  • @MarkRotteveel No , Not all content . I edited question . – Farzane Sadeghi Dec 15 '18 at 10:11
  • @OmidP Yes it is exists . – Farzane Sadeghi Dec 15 '18 at 16:08
  • Well as all other answers to this same question say ... this can mean only one of two things : either the `persistence.xml` is not found in the standard location (META-INF at the root of the classpath), or the JPA provider is not found. That's all it will ever be –  Dec 15 '18 at 18:03
  • @BillyFrost That confuses me ، is that when I write code of saving Data in main method and run main (without Tomcat) , data is stored correctly !but if delete main and call saving method in servlet and run by Tomcat , displays the above error . – Farzane Sadeghi Dec 16 '18 at 09:50

1 Answers1

0

I understand my mistake.

I forget add hibernate library to tomcat lib ! I did it and the problem was solved

Farzane Sadeghi
  • 39
  • 2
  • 13