• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[Java EE] javax.servlet.ServletException

0 głosów
963 wizyt
pytanie zadane 13 maja 2018 w Java przez konopskyyy Nowicjusz (220 p.)
zmienione kategorie 13 maja 2018 przez konopskyyy

Witajcie,

Rozpocząłem naukę Javy EE: stworzyłem prosty servlet, podpiąłem do niego plik jsf i jedyne czego mi brakuje do rozpoczęcia to połaczenia się z bazą danych. 

1. Uzupełniłem plik persistance.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">

    <persistence-unit name="hotel">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <class>user</class>
        <properties>
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/kurs_javaee"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.connection.username" value="root"/>
            <property name="hibernate.connection.password" value="admin"/>
        </properties>
    </persistence-unit>
</persistence>

2. Zawartośc servletu:

import javax.persistence.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.text.html.parser.Entity;
import java.io.IOException;

@WebServlet(name = "Servlett")
public class Servlett extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("test");
        response.setContentType("text/html");
        //request.getRequestDispatcher("WEB-INF/test.jsp").forward(request, response); ;

        EntityManagerFactory emf = Persistence.createEntityManagerFactory("hotel");
        EntityManager em = emf.createEntityManager();
        user u = em.find(user.class, 1);
        response.getWriter().println(u.getUsername());
        emf.close();
        em.close();
    }
}

3. Plik user.java

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;

@Entity
@Table(name="user")
public class user implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    private int id;

    private String username = "";
    private String password = "";
    private String email = "";

    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }

}

4. Nie mam problemu połączyć się z bazą danych używając modułu intelij

5. Plik web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>Servlet</servlet-name>
        <servlet-class>Servlett</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Servlet</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
</web-app>

6. Drzewo projektu: 

Drzewo projektu - link z zapodaj.net

7. Exception z przeglądarki:

HTTP Status 500 - Servlet execution threw an exception
type Exception report

message Servlet execution threw an exception

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet execution threw an exception
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

java.lang.NoClassDefFoundError: javax/persistence/Persistence
	Servlett.doGet(Servlett.java:21)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.86 logs.

Już drugi dzień siedzę i nie mogę znaleźć odpowiedzi na pytanie: co robię źle?

komentarz 13 maja 2018 przez mbabane Szeryf (79,240 p.)
Jeśli używasz servletow 3.0 to Tomcat 8 co najmniej

3 odpowiedzi

0 głosów
odpowiedź 13 maja 2018 przez ShiroUmizake Nałogowiec (46,300 p.)
Środowisko rozruchowe?
0 głosów
odpowiedź 13 maja 2018 przez konopskyyy Nowicjusz (220 p.)
Był to Tomcat 7, spróbowałem Tomcata 8 i dostaję dokładnie tego samego exception'a
komentarz 13 maja 2018 przez mbabane Szeryf (79,240 p.)
komentarz 13 maja 2018 przez konopskyyy Nowicjusz (220 p.)
Z tego co widzę w intellij to entity manager zawarty jest w hibernate-jpa-2.1-api-1.0.0.Final.jar
komentarz 13 maja 2018 przez mbabane Szeryf (79,240 p.)
A próbowałeś to zrobić?  tzn. dodać?
0 głosów
odpowiedź 16 maja 2018 przez konopskyyy Nowicjusz (220 p.)
Cześć, sorki że po takim czasie odpowiadam. mbabane spróbowałem i to nie pomogło. Problemem było to że lib persistance'a nie chciał się wrzucić na tomcat'a. Trzeba było to dodać w opcjach deploymentu. Na szczęście wybito mi z głowy taki sposób budowania aplikacji i polecono mavena - potwierdzam że jest dużo prościej radzić sobie w libami

Podobne pytania

0 głosów
0 odpowiedzi 352 wizyt
pytanie zadane 3 marca 2017 w Java przez Azolt Nowicjusz (120 p.)
0 głosów
1 odpowiedź 420 wizyt
pytanie zadane 16 lipca 2017 w Java przez Blue Obywatel (1,180 p.)
0 głosów
1 odpowiedź 409 wizyt
pytanie zadane 16 grudnia 2015 w Java przez bajos Nowicjusz (120 p.)

93,757 zapytań

142,716 odpowiedzi

323,363 komentarzy

63,353 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...