Bonjour,
j'essaie de récupérer un service dans mon bean avec:
@EJB
private SuiviService suiviService;
Mais je récupère un objet null or la partie des services est normalement fonctionnelle car c'était ok avec JSF
Merci de votre aide
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
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 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <display-name>Stripes Filter</display-name> <filter-name>StripesFilter</filter-name> <filter-class>net.sourceforge.stripes.controller.StripesFilter</filter-class> <init-param> <param-name>ActionResolver.Packages</param-name> <param-value>net.sourceforge.stripes.examples</param-value> </init-param> <!--init-param> <param-name>Extension.Packages</param-name> <param-value>com.samaxes.stripes.ejb3</param-value> </init-param> <init-param> <param-name>Extension.Packages</param-name> <param-value>com.samaxes.stripes.inject</param-value> </init-param> <init-param> <param-name>Interceptor.Classes</param-name> <param-value>com.samaxes.stripes.ejb3.EJBInterceptor</param-value> </init-param> <init-param> <param-name>MultipartWrapperFactory.Class</param-name> <param-value>com.myco.CustomMultipartWrapperFactory</param-value> </init-param> <init-param> <param-name>MultipartWrapper.Class</param-name> <param-value>net.sourceforge.stripes.controller.multipart.CommonsMultipartWrapper</param-value> </init-param!--> </filter> <filter-mapping> <filter-name>StripesFilter</filter-name> <url-pattern>*.jsp</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping> <filter-mapping> <filter-name>StripesFilter</filter-name> <servlet-name>StripesDispatcher</servlet-name> <dispatcher>REQUEST</dispatcher> </filter-mapping> <servlet> <servlet-name>StripesDispatcher</servlet-name> <servlet-class>net.sourceforge.stripes.controller.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>StripesDispatcher</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping> <!-- or <init-param> <param-name>Interceptor.Classes</param-name> <param-value>com.samaxes.stripes.ejb3.EJBInterceptor</param-value> </init-param> <init-param> <param-name>Extension.Packages</param-name> <param-value>com.samaxes.stripes.ejb3</param-value> </init-param--> </web-app>
CalculatorActionBean
SuiviService
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 package net.sourceforge.stripes.examples.quickstart; import fr.mgi.facturation.service.SuiviService; import javax.ejb.EJB; import net.sourceforge.stripes.action.DefaultHandler; import net.sourceforge.stripes.action.Resolution; import net.sourceforge.stripes.action.ForwardResolution; import net.sourceforge.stripes.action.ActionBean; import net.sourceforge.stripes.action.ActionBeanContext; public class CalculatorActionBean implements ActionBean { private ActionBeanContext context; private double numberOne; private double numberTwo; private double result; @EJB private SuiviService suiviService; public ActionBeanContext getContext() { return context; } public void setContext(ActionBeanContext context) { this.context = context; } public double getNumberOne() { return numberOne; } public void setNumberOne(double numberOne) { this.numberOne = numberOne; } public double getNumberTwo() { return numberTwo; } public void setNumberTwo(double numberTwo) { this.numberTwo = numberTwo; } public double getResult() { return result; } public void setResult(double result) { this.result = result; } @DefaultHandler public Resolution addition() { result = getNumberOne() + getNumberTwo(); if(suiviService != null) result = suiviService.get(1).getPoids(); else{ System.out.println("grr"); } return new ForwardResolution("/index.jsp"); } }
SuiviServiceImpl
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 package fr.mgi.facturation.service; import fr.mgi.facturation.entity.Suivi; public interface SuiviService { Suivi get(int suiviId); Suivi save(Suivi newSuivi); }
SuiviDao
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 package fr.mgi.facturation.service.impl; import fr.mgi.facturation.dao.SuiviDao; import fr.mgi.facturation.entity.Suivi; import fr.mgi.facturation.service.SuiviService; import javax.ejb.EJB; import javax.ejb.Local; import javax.ejb.Stateless; @Stateless @Local(SuiviService.class) public class SuiviServiceImpl implements SuiviService { @EJB SuiviDao suiviDao; @Override public Suivi get(int suiviId) { System.out.println("service impl"); return suiviDao.get(suiviId); } @Override public Suivi save(Suivi newSuivi) { return suiviDao.save(newSuivi); } }
GenericDao
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 package fr.mgi.facturation.dao; import fr.mgi.facturation.entity.Suivi; public interface SuiviDao extends GenericDao<Suivi, Integer> { Suivi get(int suiviId); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 package fr.mgi.facturation.dao; import java.io.Serializable; import java.util.List; public interface GenericDao <T, Pk extends Serializable>{ T save(T entite); void remove(Pk id); T get(Pk id); boolean exist(Pk id); List<T> findAll(); List<T> findAll(String sortBy); }
GenericDaoImpl
SuiviDaoImpl
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104 package fr.mgi.facturation.dao.impl; import fr.mgi.facturation.dao.GenericDao; import java.io.Serializable; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.TransactionRequiredException; import org.apache.log4j.Logger; public abstract class GenericDaoImpl<T, Pk extends Serializable> implements GenericDao<T, Pk> { //la classe a manipuler private Class<T> persistentClass; //on manipule des EJB entity, besoin du persistence context. @PersistenceContext private EntityManager entityManager; private Logger log = Logger.getLogger(GenericDaoImpl.class); public GenericDaoImpl() { } public GenericDaoImpl(Class<T> persistentClass) { this.persistentClass = persistentClass; } @Override public T save(T entite) { log.debug(">" + this.getClass().getName() + " : save()"); T type = null; try { type = entityManager.merge(entite); } catch (IllegalStateException e) { log.error(e.getMessage()); } catch (IllegalArgumentException e) { log.error(e.getMessage()); } catch (TransactionRequiredException e) { log.error(e.getMessage()); } log.debug("<" + this.getClass().getName() + " : save()"); return type; } @Override public void remove(Pk id) { log.debug(">" + this.getClass().getName() + " : remove()"); try { entityManager.remove(entityManager.find(persistentClass, id)); } catch (IllegalStateException e) { log.error(e.getMessage()); } catch (IllegalArgumentException e) { log.error(e.getMessage()); } catch (TransactionRequiredException e) { log.error(e.getMessage()); } log.debug("<" + this.getClass().getName() + " : remove()"); } @Override public T get(Pk id) { log.debug(">" + this.getClass().getName() + " : get()"); T entite = null; try { entite = entityManager.find(persistentClass, id); } catch (IllegalStateException e) { log.error(e.getMessage()); } catch (IllegalArgumentException e) { log.error(e.getMessage()); } log.debug(">" + this.getClass().getName() + " : get()"); return entite; } @Override public boolean exist(Pk id) { log.debug(">" + this.getClass().getName() + " : exist()"); boolean ret = this.get(id) != null ? true : false; log.debug("<" + this.getClass().getName() + " : exist()"); return ret; } @Override public List<T> findAll(String sortBy) { log.debug(">" + this.getClass().getName() + " : findAll(String sortBy)"); if (!"".equals(sortBy)) { sortBy = "order By " + sortBy;//desc } StringBuilder queryString = new StringBuilder(); queryString.append("Select o from ").append(persistentClass.getName()).append(" As o ").append(sortBy); log.debug("<" + this.getClass().getName() + " : findAll(String sortBy)"); return entityManager.createQuery(queryString.toString()).getResultList(); } @Override public List<T> findAll() { return findAll(""); } }
persistence.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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 package fr.mgi.facturation.dao.impl; import fr.mgi.facturation.dao.SuiviDao; import fr.mgi.facturation.entity.Suivi; import javax.ejb.Local; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; /** * * @author dbg */ @Stateless @Local(SuiviDao.class) public class SuiviDaoImpl extends GenericDaoImpl<Suivi, Integer> implements SuiviDao { //on manipule des EJB entity, besoin du persistence context. @PersistenceContext private EntityManager entityManager; public SuiviDaoImpl() { super(Suivi.class); } @Override @SuppressWarnings("unchecked") public Suivi get(int suiviId) { StringBuilder query = new StringBuilder(); query.append("Select o from "). append(Suivi.class.getName()). append(" As o Where upper(o.id) = upper('"). append(suiviId). append("')"); System.out.println("Suivi get(String suiviId) "+query); Suivi booking; try { booking = (Suivi) entityManager.createQuery(query.toString()).getSingleResult(); } catch (Exception e) { booking = null; } return booking; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="FacturationEjbPU" transaction-type="JTA"> <jta-data-source>java:/facturationDevDataSource</jta-data-source> <properties> <!--property name="hibernate.hbm2ddl.auto">create</property--> <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/> <!--property name="hibernate.show_sql" value="true"/--> </properties> </persistence-unit> </persistence>
Partager