Bonjour à tous
J'ai réalisé un projet avec EJB / REST / JPA , les fonctionalités EJB / JPA marchent trés bien avecc la base de données, le probléme vient REST . Quand je lance une requéte Uri pour obtenir la liste des questions (http://localhost:8080/SurveyWeb/rest/stats/sujet ) , je reçois un message d'erreur HTTP 500 sur la page mais sans détailler les erreurs ni sur la console du serveur (Glassfish / eclipse ) donc je ne sais pas de quelle erreur s'agit-t-il.
Ci dessous mes codes simples
ENTITY
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 @Entity @Table(name = "Questionnaire") @NamedQueries({ @NamedQuery(name="Questionnaire.findByName", query="SELECT u from Questionnaire u where u.nom = :nom"), @NamedQuery(name="Questionnaire.findAllOrderById", query="SELECT u FROM Questionnaire u order by u.id"), }) @XmlRootElement(name = "questionnaire") public class Questionnaire implements Serializable{ /** * */ private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name = "ID_QUESTIONNAIRE") private int id; @Column(name = "NOM") private String nom; @Column(name = "DESCRIPTION") private String description; @OneToMany(mappedBy = "questionnaire", cascade = CascadeType.ALL) private Set<Question> question; public Questionnaire() { } public Questionnaire( String nom, String description) { this.nom = nom; this.description = description; } /** * les getters et setters */ }
DAO
SERVICE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 @Stateless public class QuestionnaireDao implements QuestionnaireLocal { @PersistenceContext private EntityManager em; public Questionnaire getQuestionnaire(int id) throws IOException,AppException{ return em.find(Questionnaire.class, id); } @SuppressWarnings("unchecked") public List<Questionnaire> list() throws IOException, AppException{ Query query=em.createQuery("select m from Questionnaire m"); return (List<Questionnaire>) query.getResultList(); } }
WEB.XML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 @Stateless @LocalBean @Path("/stats") public class SujetService { @EJB private QuestionnaireLocal customersDao; @EJB private QuestionLocal questionDao ; @GET @Path("/sujets") @Produces("application/json") @Consumes("application/json") public List<Questionnaire> sujets() throws IOException, AppException { for (Questionnaire ques : customersDao.list() ) { System.out.println(ques.getNom()); //--> affiche bien la liste des questions sur la console } return customersDao.list(); } }
Sans EJB , la requête marchait bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>SurveyWeb</display-name> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter> <filter-name>Tiles Filter</filter-name> <filter-class>org.apache.tiles.web.startup.TilesFilter</filter-class> <init-param> <param-name> org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG </param-name> <param-value> /WEB-INF/tiles.xml </param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>Jersey REST Service</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>fr.survey.service</param-value> </init-param> <init-param> <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey REST Service</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> </web-app>
Merci
Partager