Bonjour
Je travaille sur le développement d'une interface qui interagit avec une base de données Oracle. J'ai un soucis avec une page qui doit afficher des informations récupéré dans une table qui est aussi utilisée par une deuxième application. Il se trouve que quand j'appelle la page pour la première fois, et que j'exécute la méthode pour récupérer les valeurs de la table, elle affiche correctement les informations en base. Par la suite, la deuxième application modifie les valeurs dans notre table. Après que les modifications soient effectuées, lorsque j'appelle à nouveau ma page, et que j’exécute la méthode qui récupère les valeurs dans la table, c'est toujours les valeurs récupérées avant modification qui s'affiche. Pourriez vous m'aider à résoudre ce problème? Merci
Voici le code mis en œuvre pour l'interface sur laquelle je travaille
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
@Embeddable
public class NetworkPK implements Serializable {
    @Basic(optional = false)
    @Column(name = "APPSRC")
    private Long appSrc;
    @Basic(optional = false)
    @Column(name = "MTI")
    private String mti;
    @Basic(optional = false)
    @Column(name = "FUNCTIONCODE")
    private String functionCode;
 
    // Constructeurs
 
	// getter and setter
	...
	// hashCode 
	...
	// equals
	...
	// toString
 
}
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
@Entity
@Table(name = "NETWORK")
@NamedQueries({
  ....
})
public class Network implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected NetworkPK networkPK;
    @Column(name = "SYSDATETIME")
    @Temporal(TemporalType.TIMESTAMP)
    private Date sysDateTime;
    @Column(name = "NUMB")
    private Long numb;
 
    // Constructeurs
 
	// getter and setter
	...
	// hashCode 
	...
	// equals
	...
	// toString
 
}
Session
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
@Stateless
public class SuiviExploitationFacadeBean implements SuiviExploitationFacade {
 
    @PersistenceContext(unitName = "safeconnect-ejbPU")
    private EntityManager em;
 
    ...
 
    @Override
    public Network findById(Long appSrc, String mti, String functionCode) {
        return em.find(Network.class, new NetworkPK(appSrc, mti, functionCode));
    }
 
    ...
 
}
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
@Stateless
public class SuiviExploitationBean implements SuiviExploitation {
 
    @EJB SuiviExploitationFacade suiviEf;
 
    @Override
    public String etatSessionApplicative(Long appSrc, String mti, String functionCode){
		String esa = null;
        Network network = new Network();
		network = suiviEf.findById(appSrc, mti, functionCode);
        if (network.getNumb() == 1L)
            esa = "SIGN-OFF";
        else
            esa = "SIGN-ON";
        return esa;
    }
 
    @Override
    public Date dateHeure(Long appSrc, String mti, String functionCode){
        Network network = new Network();
		network = suiviEf.findById(appSrc, mti, functionCode);
        return network.getSysDateTime();
    }
 
    @Override
    public Long echoTest(Long appSrc, String mti, String functionCode){
        Network network = new Network();
		network = suiviEf.findById(appSrc, mti, functionCode);
        return network.getNumb();
    }
}
Managed Bean
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
@ManagedBean(name = "exploitationController")
@RequestScoped
public class ExploitationController {
 
    @EJB 
    private SuiviExploitation suiviE;
    private String etatSessApp;
    private Date dateTranRec;
    private Date dateRepEnv;
    private Date dateSignOn;
    private Date dateSignOff;
    private Date dateMsgEchoTest;
    private Long valeur;
 
    // Constructeurs
    // getter et setter
    // methode utilisé pour appeler la page JSF. J'initialise tous les champs de la page avec null;
    public String reinitConnexionApp() {
        etatSessApp = null;
        dateTranRec = null;
        dateRepEnv = null;
        dateSignOn = null;
        dateSignOff = null;
        dateMsgEchoTest = null;
        valeur = null;
 
        return "exploit_appconn_view";
    }
 
    // méthode exécutée pour afficher les valeurs présentent dans notre table
    public String executerConnexionApp() {
		appSrc = 1L;
        etatSessApp = suiviE.etatSessionApplicative(1L, "1804", "001");
        dateTranRec = suiviE.dateHeure(1L, "0002", "001");
       dateRepEnv = suiviE.dateHeure(1L, "0002", "000");
        dateSignOn = suiviE.dateHeure(1L, "1804", "001");
        dateSignOff = suiviE.dateHeure(1L, "1804", "002");
       dateMsgEchoTest = suiviE.dateHeure(1L, "1804", "270");
        valeur = suiviE.echoTest(1L, "1804", "270");
 
        return "exploit_appconn_view";
    }
}
Page JSF: exploit_appconn_view.xhtml
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
<ui:define name="content">
	<h1 class="title ui-widget-header ui-corner-all">
		<h:outputText value="#{language.caTitre}" />
	</h1>
	<div class="entry">
		<h:form prependId="false">
			<p:messages showDetail="true"/>
 
			<h:panelGrid columns="2">
				<h:outputText value="Application source"/>
				<h:inputText value="#{exploitationController.appSrc}" />
				<h:outputText value="Etat Session Applicative"/>
				<h:inputText value="#{exploitationController.etatSessApp}" />
				<h:outputText value="Date heure dernière transaction reçue"/>
				<h:inputText value="#{exploitationController.dateDernTranRec}">
					<f:convertDateTime pattern="dd/MM/yyyy HH:mm:ss"/>
				</h:inputText>
				<h:outputText value="Date heure dernière reponse envoyée"/>
				<h:inputText value="#{exploitationController.dateDernRepEnv}">
					<f:convertDateTime pattern="dd/MM/yyyy HH:mm:ss"/>
				</h:inputText>
				<h:outputText value="Date heure dernier sign-on"/>
				<h:inputText value="#{exploitationController.dateSignOn}">
					<f:convertDateTime pattern="dd/MM/yyyy HH:mm:ss"/>
				</h:inputText>
				<h:outputText value="Date et heure dernier sing-off"/>
				<h:inputText value="#{exploitationController.dateSignOff}">
					<f:convertDateTime pattern="dd/MM/yyyy HH:mm:ss"/>
				</h:inputText>
			</h:panelGrid>
			<h:panelGrid columns="4">
				<h:outputText value="Date heure dernier message echo test"/>
				<h:inputText value="#{exploitationController.dateDernMsgEchoTest}">
					<f:convertDateTime pattern="dd/MM/yyyy HH:mm:ss"/>
				</h:inputText>
				<h:outputText value="Valeur"/>
				<h:inputText value="#{exploitationController.valEchoTest}"/>
			</h:panelGrid>
		</h:form>
	</div>
</ui:define>
Si vous avez eventuellement besoin de savoir d'autres détails susceptibles de vous permettre de me donne un coup de main, n'hésitez pas à me le faire savoir.
Merci d'avance