Bonsoir,
je reprends ce post parce que le précédent que j'ai écrit ne s'affiche plus:
je suis novice dans le développement avec Spring. Pour me faire la main, je travaille sur un projet dont les technologies sont les suivantes: Spring, Hibernate, JPA, Tomcat. Actuellement, j'essaie de le déployer sur un serveur tomcat et à chaque fois, j'obtiens un NullPointerException sur le bean qui me permet d'accéder aux données.
Classe InitializeDAO :Pour qu'elle soit instanciée, je l'ai déclarée dans mon fichier applicationContext.xml, voici les déclarations que j'ai rajoutées:
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 @Transactional public class InitializeDAO { @PersistenceContext private EntityManager fieldEM; public InitializeDAO() { } public Map<String,String> getRegions() { final Map<String,String> lRegions = new LinkedHashMap<String, String>(); CcRegion r = new CcRegion(); final Query query = fieldEM.createQuery("select p from Ccion p"); for (Object p : query.getResultList()) { r =(CcRegion)p; lRegions.put(r.getId(), r.getLibelle()); } return lRegions; } public Map<String,Map<String,String>> getVillesByRegion(){ final Map<String,String> lRegions = getRegions(); final Map<String,Map<String,String>> lVillesByRegion = new LinkedHashMap<String, Map<String,String>>(); CcVille v = new CcVille (); if(!lRegions.isEmpty()){ Query query = fieldEM.createQuery("select p from CVle p where p.codeRon =?1"); for (Entry<String, String> entrySet : lRegions.entrySet()){ query.setParameter(1, entrySet.getKey()); final Map <String, String> lVilles = new LinkedHashMap<String, String>(); for (Object p : query.getResultList()) { v =(CcVille)p; lVilles.put(v.getId(), v.getLibelle()); } lVillesByRegion.put(entrySet.getKey(), lVilles); } } return lVillesByRegion; } public EntityManager getFieldEM() { return fieldEM; } public void setFieldEM(EntityManager fieldEM) { this.fieldEM = fieldEM; } }
Puis je l'ai appelé directement dans la classe où j'en avais besoin, ici, il s'agit de la classe FillData:
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 <!-- transaction <tx:annotation-driven />--> <tx:annotation-driven transaction-manager="txManager" /> <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /> </bean> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect" /> <!-- <property name="showSql" value="true" /> <property name="generateDdl" value="true" /> --> </bean> </property> </bean> <bean id="fInitDAO" class="connect.services.InitializeDAO" /> <!-- datasource --> <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close" lazy-init="false" p:driverClassName="com.mysql.jdbc.Driver" p:url="jdbc:mysql://xxxxxxxx/yyyyconnectdb" p:username="aaaaaaa" p:password="bbbbb" p:initialSize="1" p:maxActive="50" p:maxIdle="10" p:maxWait="1000" p:defaultAutoCommit="false" p:removeAbandoned="true" p:removeAbandonedTimeout="60"> </bean>
je joins à mon post, les logs générés à l'éxécution de l'appli (voir en pj)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 @ManagedBean @SessionScoped public class FillData implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private String fRegion; private String fVille; private InitializeDAO fInitDAO; private Map<String,String> fRegions = new LinkedHashMap<String, String>(); private Map<String,String> fVilles = new LinkedHashMap<String, String>(); private Map<String,Map<String,String>> fVillesParRegion = new HashMap<String, Map<String,String>>(); public FillData() { super(); fRegions = fInitDAO.getRegions(); fVillesParRegion = fInitDAO.getVillesByRegion(); } public String getfRegion() { return fRegion; } public void setfRegion(String fRegion) { this.fRegion = fRegion; } public String getfVille() { return fVille; } public void setfVille(String fVille) { this.fVille = fVille; } public Map<String, String> getfRegions() { return fRegions; } public void setfRegions(Map<String, String> fRegions) { this.fRegions = fRegions; } public Map<String, String> getfVilles() { return fVilles; } public void setfVilles(Map<String, String> fVilles) { this.fVilles = fVilles; } public Map<String, Map<String, String>> getfVillesParRegion() { return fVillesParRegion; } public void setfVillesParRegion( Map<String, Map<String, String>> fVillesParRegion) { this.fVillesParRegion = fVillesParRegion; } /***/ public void getVillesByRegion(){ if(fRegion !=null && !fRegion.equals("")) fVilles = fVillesParRegion.get(fRegion); } public InitializeDAO getfInitDAO() { return fInitDAO; } public void setfInitDAO(InitializeDAO fInitDAO) { this.fInitDAO = fInitDAO; }
Pourrez vous avoir une idée du problème?
Je vous remercie d'avance pour vos réactions
Partager