Bonjour à tous,
Je suis en train de créer des serveurs en micro-services spring boot.
Jusque là, rien à dire, les WS sont ok et tout va bien.
Par contre, ces serveurs doivent également fournir quelques interfaces permettant d'uploader des fichiers et de paramétrer certains downloads (par exemple).
Et là, un sérieux problème se pose à moi.
J'utilise des servlets pour faire ceci et tout va bien tant que ces dernières n'affichent que des exemples mais quand je leur demande d'afficher des choses dynamiques, à savoir le résultat issue des BDD, tout va mal.
Je reçois un NullPointerException dès que j'appel mon service.
J'ai bien cherché sur le net et je trouve des solutions mais aucune ne semble marcher. Il doit y avoir quelque chose qui m'a échappé mais je ne trouve pas quoi.
A l'aide!!!!
Voici mon code (je restreint les classes au strict nécessaire) :
-la classe general
-le service (trop grand donc en partie) :
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 @EnableJpaRepositories("xxx.yyy.zzz") @ComponentScan(basePackages = {"xxx.yyy.zzz"}) @EntityScan("xxx.yyy.zzz.entitys") @SpringBootApplication public class general extends SpringBootServletInitializer { public static void main(String[] args) throws Exception { SpringApplication.run(general.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(general.class); } @Bean public ServletRegistrationBean TheBeanServlet() { ServletRegistrationBean bean = new ServletRegistrationBean(new TheBeanServlet(), "/TheBeanServlet"); bean.setLoadOnStartup(1); return bean; } }
-la servlet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 @Service @Transactional public class PatchService { public List<PatchInstalleDto> getPatchsInstalled() { List<PatchInstalleDto> patchs = getListePatchs(); return patchs; } public List<PatchInstalleDto> getListePatchs() { ... } }
Voici également l'erreur que j'obtiens :
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 public class TheBeanServlet extends HttpServlet { @Autowired private PatchService patchService; @Override public void init() { SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setAttribute("patchs", patchService.getPatchsInstalled()); String patchName = request.getParameter("patch"); if (patchName != null) { request.setAttribute("patchDetails", patchService.getDetailsPatch(patchName)); } this.getServletContext().getRequestDispatcher("/theBeanServlet.jsp").forward(request, response); } protected String getContextParameter(String name) { return getServletContext().getInitParameter(name); } }
La ligne en cause est le premier appel au service, à savoir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 java.lang.NullPointerException: null at com.cegedim.clm.live.patchs.servlet.CrosswayPatchInfoServlet.processRequest(TheBeanServlet.java:33) ~[classes/:na] at com.cegedim.clm.live.patchs.servlet.CrosswayPatchInfoServlet.doGet(CrosswayPatchInfoServlet.java:24) ~[classes/:na] at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) ~[tomcat-embed-core-8.5.11.jar:8.5.11] at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) ~[tomcat-embed-core-8.5.11.jar:8.5.11]
request.setAttribute("patchs", patchService.getPatchsInstalled());
Après un debug, je me suis aperçu que c'est patchService qui est null.
Partager