Pourfaites vous allusion à la config de la connexion dans jdev ou au niveau weblogic?la configuration de ton connecteur jdbc dans ton conteneur JSF
Pourfaites vous allusion à la config de la connexion dans jdev ou au niveau weblogic?la configuration de ton connecteur jdbc dans ton conteneur JSF
Je recapitule.
Je veux que chaque fois qu'un utilisateur se connecte, les infos le concernant s'affiche.
Pour ce faire, j'utilise une classe java qui est un bean dans laquelle se gère la connexion.
si les infos saisies (user et mot de passe) sont correctes alors dans
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 public String doLogin() { String un = userName; byte[] pw = password.getBytes(); FacesContext fctx = FacesContext.getCurrentInstance(); HttpServletRequest request = (HttpServletRequest)fctx.getExternalContext().getRequest(); try { Subject subject = Authentication.login(new URLCallbackHandler(un, pw)); weblogic.servlet.security.ServletAuthentication.runAs(subject, request); String viewId = fctx.getViewRoot().getViewId(); //System.out.println("Current page viewId: " + viewId); String loginUrl = "/adfAuthentication?success_url=/faces" + viewId; HttpServletResponse response = (HttpServletResponse)fctx.getExternalContext().getResponse(); sendForward(request, response, loginUrl);} catch (FailedLoginException fle) { FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Incorrect Username or Password", "An incorrect Username or Password was specified"); fctx.addMessage(null, msg); System.out.println("failed"); return "failed"; } catch (LoginException le) { reportUnexpectedLoginError("LoginException", le); System.out.println("failed"); return "failed"; } System.out.println("success"); return "success"; //return null; }UserInfoInSession(fctx);il va recuperer les infos sur l'utilisateurUserInfoInSession
concernant le code de la view object qui est executée:
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 private void UserInfoInSession(FacesContext fctx){ ExternalContext ectx = fctx.getExternalContext(); HttpSession userSession = (HttpSession) ectx.getSession(true); userSession.setAttribute("username", getUsername()); userSession.setAttribute("password", getPassword()); MenuModuleImpl menuAM = getAm(); EnteteViewImpl enteteView = (EnteteViewImpl)menuAM.getEnteteView(); if (enteteView != null){ System.out.println("ViewObject is not null"); //view.clearCache(); //view.setNamedWhereClauseParam("v_current_user", "demo"); enteteView.executeQuery(); EnteteViewRowImpl row = (EnteteViewRowImpl)enteteView.first(); //System.out.println("Current User: " + Utilities.getCurrentUser() ); System.out.println("View initialize parameter"); //this._username = (String)row.getLogin(); //this._password = (String)row.getPwd(); userSession.setAttribute("matricule", (String)row.getMatricule()); userSession.setAttribute("nom", (String)row.getNom()); userSession.setAttribute("PcCode", (String)row.getPcCode()); // this._code_poste = (String)row.getPcCode(); userSession.setAttribute("PcLib", (String)row.getPcLibelle()); //this._poste = (String)row.getPcCode()+'-'+(String)row.getPcLibelle(); userSession.setAttribute("Profil_Code", (String)row.getProfilCode()); //this._service = (String)row.getProfilLibelle()+"-"+row.getDateDebut()+"-"+row.getDateFin(); userSession.setAttribute("ProfilLib", (String)row.getProfilCode()+'-'+(String)row.getProfilLibelle()); //this._fonction = (String)row.getAttribute(getFonction()); userSession.setAttribute("agent", (String)row.getMatricule()+" - "+(String)row.getNom()); userSession.setAttribute("role", (String)row.getProfilRole()); userSession.setAttribute("dated", row.getDateDeb()); userSession.setAttribute("datef", row.getDateFin()); System.out.println("Poste: " + (String)row.getPcLibelle()); System.out.println("Agent: " + (String)row.getMatricule()+" - "+(String)row.getNom()); System.out.println("Profil: " + (String)row.getProfilCode()+'-'+(String)row.getProfilLibelle()); } else{ System.out.println("ViewObject is null"); } // Get Current Date and time //DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); java.util.Date date = new java.util.Date(); String dateStr = dateFormat.format(date); try{ java.util.Date date2 = dateFormat.parse (dateStr); java.sql.Date sqldate = new java.sql.Date(date2.getTime()); oracle.jbo.domain.Date daTime = new oracle.jbo.domain.Date(sqldate); //ectx.getSessionMap().put("datecourante", daTime); userSession.setAttribute("datecourante", daTime); System.out.println("Current Date Time : jbo " + daTime); }catch(ParseException pe){ pe.printStackTrace(); } //ectx.getSessionMap().put("username", getUsername()); //ectx.getSessionMap().put("password", getPassword()); }
et comme je le dis lorsque je clique sur
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 select b.agt_login login, b.agt_pwd pwd, b.agt_mat matricule, b.agt_nom nom, b.agt_lock_date lock_date, b.agt_expiry_date expiry_date, b.agt_created_date created_date, b.agt_status status, pc.pc_code, pc.pc_libc pc_libelle, p.profil_code, p.profil_libelle, p.profil_role, h.habil_date_deb date_deb, h.habil_date_fin date_fin from Tb_Agent b,Tb_Habilite h,Tb_Poste_Comptable pc,Tb_Profil p where upper(b.agt_login) = upper('demo') and h.agt_mat = b.agt_mat and h.pc_code = pc.pc_code and h.profil_code = p.profil_codepuistest and explainil me renvoie une ligne avec des valeurs.query result
Tu peux mettre les source du début du fichier EnteteView.xml ? Sans la déclaration des attributs. Tu utilises quelle version de JDev ?
version 12.1.2.0.0
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249 <?xml version="1.0" encoding="windows-1252" ?> <!DOCTYPE ViewObject SYSTEM "jbo_03_01.dtd"> <!----> <ViewObject xmlns="http://xmlns.oracle.com/bc4j" Name="EnteteView" Version="12.1.2.66.68" InheritPersonalization="merge" BindingStyle="OracleName" CustomQuery="true" RowClass="model.views.EnteteViewRowImpl" ComponentClass="model.views.EnteteViewImpl" PageIterMode="Full"> <DesignTime> <Attr Name="_codeGenFlag2" Value="Access|Coll|VarAccess"/> <Attr Name="_isExpertMode" Value="true"/> <Attr Name="_isCodegen" Value="true"/> </DesignTime> <Properties> <SchemaBasedProperties> <LABEL ResId="model.views.EnteteView_LABEL"/> </SchemaBasedProperties> </Properties> <SQLQuery><![CDATA[select b.agt_login login, b.agt_pwd pwd, b.agt_mat matricule, b.agt_nom nom, b.agt_lock_date lock_date, b.agt_expiry_date expiry_date, b.agt_created_date created_date, b.agt_status status, pc.pc_code, pc.pc_libc pc_libelle, p.profil_code, p.profil_libelle, p.profil_role, h.habil_date_deb date_deb, h.habil_date_fin date_fin from Tb_Agent b,Tb_Habilite h,Tb_Poste_Comptable pc,Tb_Profil p where upper(b.agt_login) = upper('demo') and h.agt_mat = b.agt_mat and h.pc_code = pc.pc_code and h.profil_code = p.profil_code]]></SQLQuery> <ViewAttribute Name="Login" IsUpdateable="false" IsPersistent="false" PrecisionRule="true" Precision="50" Type="java.lang.String" ColumnType="VARCHAR2" AliasName="LOGIN" Expression="LOGIN" SQLType="VARCHAR"> <DesignTime> <Attr Name="_DisplaySize" Value="50"/> </DesignTime> </ViewAttribute> <ViewAttribute Name="Pwd" IsUpdateable="false" IsPersistent="false" PrecisionRule="true" Precision="50" Type="java.lang.String" ColumnType="VARCHAR2" AliasName="PWD" Expression="PWD" SQLType="VARCHAR"> <DesignTime> <Attr Name="_DisplaySize" Value="50"/> </DesignTime> </ViewAttribute> <ViewAttribute Name="Matricule" IsUpdateable="false" IsPersistent="false" PrecisionRule="true" Precision="20" Type="java.lang.String" ColumnType="VARCHAR2" AliasName="MATRICULE" Expression="MATRICULE" SQLType="VARCHAR"> <DesignTime> <Attr Name="_DisplaySize" Value="20"/> </DesignTime> </ViewAttribute> <ViewAttribute Name="Nom" IsUpdateable="false" IsPersistent="false" PrecisionRule="true" Precision="301" Type="java.lang.String" ColumnType="VARCHAR2" AliasName="NOM" Expression="NOM" SQLType="VARCHAR"> <DesignTime> <Attr Name="_DisplaySize" Value="301"/> </DesignTime> </ViewAttribute> <ViewAttribute Name="LockDate" IsUpdateable="false" IsPersistent="false" PrecisionRule="true" Type="oracle.jbo.domain.Date" ColumnType="DATE" AliasName="LOCK_DATE" Expression="LOCK_DATE" SQLType="DATE"/> <ViewAttribute Name="ExpiryDate" IsUpdateable="false" IsPersistent="false" PrecisionRule="true" Type="oracle.jbo.domain.Date" ColumnType="DATE" AliasName="EXPIRY_DATE" Expression="EXPIRY_DATE" SQLType="DATE"/> <ViewAttribute Name="CreatedDate" IsUpdateable="false" IsPersistent="false" PrecisionRule="true" Type="oracle.jbo.domain.Date" ColumnType="DATE" AliasName="CREATED_DATE" Expression="CREATED_DATE" SQLType="DATE"/> <ViewAttribute Name="Status" IsUpdateable="false" IsPersistent="false" PrecisionRule="true" Precision="50" Type="java.lang.String" ColumnType="VARCHAR2" AliasName="STATUS" Expression="STATUS" SQLType="VARCHAR"> <DesignTime> <Attr Name="_DisplaySize" Value="50"/> </DesignTime> </ViewAttribute> <ViewAttribute Name="PcCode" IsUpdateable="false" IsPersistent="false" PrecisionRule="true" Precision="50" Type="java.lang.String" ColumnType="VARCHAR2" AliasName="PC_CODE" Expression="PC_CODE" SQLType="VARCHAR"> <DesignTime> <Attr Name="_DisplaySize" Value="50"/> </DesignTime> </ViewAttribute> <ViewAttribute Name="PcLibelle" IsUpdateable="false" IsPersistent="false" PrecisionRule="true" Precision="250" Type="java.lang.String" ColumnType="VARCHAR2" AliasName="PC_LIBELLE" Expression="PC_LIBELLE" SQLType="VARCHAR"> <DesignTime> <Attr Name="_DisplaySize" Value="250"/> </DesignTime> </ViewAttribute> <ViewAttribute Name="ProfilCode" IsUpdateable="false" IsPersistent="false" PrecisionRule="true" Precision="100" Type="java.lang.String" ColumnType="VARCHAR2" AliasName="PROFIL_CODE" Expression="PROFIL_CODE" SQLType="VARCHAR"> <DesignTime> <Attr Name="_DisplaySize" Value="100"/> </DesignTime> </ViewAttribute> <ViewAttribute Name="ProfilLibelle" IsUpdateable="false" IsPersistent="false" PrecisionRule="true" Precision="250" Type="java.lang.String" ColumnType="VARCHAR2" AliasName="PROFIL_LIBELLE" Expression="PROFIL_LIBELLE" SQLType="VARCHAR"> <DesignTime> <Attr Name="_DisplaySize" Value="250"/> </DesignTime> </ViewAttribute> <ViewAttribute Name="ProfilRole" IsUpdateable="false" IsPersistent="false" PrecisionRule="true" Precision="50" Type="java.lang.String" ColumnType="VARCHAR2" AliasName="PROFIL_ROLE" Expression="PROFIL_ROLE" SQLType="VARCHAR"> <DesignTime> <Attr Name="_DisplaySize" Value="50"/> </DesignTime> </ViewAttribute> <ViewAttribute Name="DateDeb" IsUpdateable="false" IsPersistent="false" PrecisionRule="true" Type="oracle.jbo.domain.Date" ColumnType="DATE" AliasName="DATE_DEB" Expression="DATE_DEB" SQLType="DATE"/> <ViewAttribute Name="DateFin" IsUpdateable="false" IsPersistent="false" PrecisionRule="true" Type="oracle.jbo.domain.Date" ColumnType="DATE" AliasName="DATE_FIN" Expression="DATE_FIN" SQLType="DATE"/> <ResourceBundle> <PropertiesBundle PropertiesFile="model.ModelBundle"/> </ResourceBundle> </ViewObject>
Bon j'avoue que j'ai pas trop d'idée sur l'origine de ton problème mais plusieurs points me viennent à l'esprit.
Pourquoi utilises-tu une vue experte ? Pourquoi ne laisses tu pas faire JDev plutôt ? Normalement lui il se trompe pas
Ensuite pourquoi est-ce que tu utilises une ViewObject dans une procédure de login ? Ça n'a pas vraiment de sens. Une ViewObject sert à stocker des ViewRow qui elles contiennent les données que tu souhaites présenter. Or toi tu t'en sert uniquement pour exécuter une requête et foutre tout ça dans une session. Tu devrais plutôt écrire la requête toi même ou appeler une procédure stockée pour faire le boulot. Mais je pense que déclarer une vue pour ça est une mauvaise idée.
Au passage tu pourrais créer un objet genre "UserCredential" dans lequel tu pourrais mettre tout ce que tu veux avec des getter/setter plutôt que de mettre ça en vrac dans ta session.
Cdt.
dans mes tentatives de solution, j'ai generé l'entité agent en utilisant new-> Business Component from Tables. Il a donc créer entity object mais au moment de l'utiliser il m'affiche la meme erreur qu'il ne voit pas la table.
En utilisant une procédure stockée je serai obligé d'avoir des parametres de type out pour recuperer les valeurs retournées par la requete; ce qui m'a l'air plus compliqué
Je ne maitrise pas l'objet UserCredential, comment on le créer et on s'en sert?
Si tu ne veux pas faire une procédure stockée, écris la requête à la main dans ce cas.
Pour le UserCredentials, c'est juste un nom comme ça, c'est pas une classe standard. L'idée c'est juste de créer une classe qui regroupe les infos de ton utilisateur. Au lieux de stocker en vrac des valeurs dans ta session, tu stockes un objet qui contient tes infos c'est tout.
oui c'est la configuration de ta connection jdevelopper, on vois bien qu'elle marche ell,e sur ta requête. Mais ta connection dans ton serveur weblogic qu'utilise ton application JSF, on peut la voir?
Bonjour , effectivement le problème est lié au schéma sur lequel pointe la data source de weblogic. Il pointait sur un schéma différent de celui de jdev. J'ai donc fait la modification et c'est passé.
Merci à tous ceux qui m'ont aidé dans la résolution de ce problème.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager