Salut,
J'ai un problème d'accès concurrent à mon programme. C'est une application développé en Icefaces, quand je lance mon application toute seule, je teste toutes les structures il y a aucun problème.
En gros j'ai des structures qui gére l'affichage d'une dataTable. Chaque ligne de la dataTable peut ouvrir une popup ou avoir des childs, qu'on peut développer grâce au +.
L'utilisateur peut aussi ouvrir la même fenêtre en full screen grâce à un bouton adéquat. C'est là où les problèmes commencent. en effet, de temps en temps qu'on je clique sur un champs de ma dataTable pour ouvrir une popup, j'ai ce genre d'exception
le code qui correspond à cette exception est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part javax.faces.FacesException: Problem in renderResponse: /OrderBook.jspx @272,80 rendered="#{orderBook.expandedable}": Error getting property 'expandedable' from bean of type com.ulnet.memberarea.web.OrderBook.OrderBookBean: java.lang.IllegalArgumentException
J'ai essayé de rajoute des synchronized dans toutes les méthodes susceptibles d'accès concurrents mais le problème persiste. A vrai dire je comprend même pas pour quoi il y aurait problème d'accès concurrent, car je me contente de lire des données ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public boolean getExpandedable() { if ( rowDataModel != null && rowDataModel.getRowData() instanceof Tblorder) { Tblorder order = (Tblorder)rowDataModel.getRowData(); if ( order != null) return order.isExpanded(); } return false; }
Aussi j'ai un autre probléme cette fois avec le dataPaginator, qui marche plus, (dans la fenêtre full screen) .
Voici le code de ma popup qui me cause le plus de problèmes
Ah oui j'ai déja le concurrentDOMViews à true dans mon 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 <ice:panelPopup visible="#{orderBook.visiblePopupTrade}" draggable="true" styleClass="icePnlPop3" modal="false"> <f:facet name="header"> <ice:panelGrid style = "text-align : right;" width = "100%" cellpadding = "0" cellspacing="0" columns = "1" > <ice:commandButton image="img/closePopup.gif" action = "#{orderBook.closeTradePopup}" title = "Close this draggable popup" immediate = "true" /> </ice:panelGrid> </f:facet> <f:facet name="body"> <ice:panelGroup > <ice:panelGroup style="width:710px"> <ice:panelGrid width="200px" cellpadding="0" cellspacing="0"> <ice:dataTable value="#{orderBook.rowDataModelTrades}" var="trade" id="tradeTable" rows="10" cellpadding="0" styleClass="tradeTable" > <ice:columns value="#{orderBook.headerNameTrades}" var="column" rendered="true"> <f:facet name="header"> <ice:outputText style="text-decoration:underline;color:gray; " value="#{column}" /> </f:facet> <ice:panelGroup > <ice:outputText value="#{orderBook.cellValueTrades}" /> </ice:panelGroup> </ice:columns> </ice:dataTable> </ice:panelGrid> </ice:panelGroup> <center> <br/> <ice:dataPaginator id="tradepaginator" for="tradeTable" binding="#{orderBook.tradePaginator}" paginator="true" fastStep="3" paginatorMaxPages="4" renderFacetsIfSinglePage="false" styleClass="OLPgr"> <f:facet name="first"> <ice:graphicImage url="/img/first_btn.jpg" styleClass="OLPgrScrBtn" title="First Page" /> </f:facet> <f:facet name="last"> <ice:graphicImage url="/img/last_btn.jpg" styleClass="OLPgrScrBtn" title="Last Page" /> </f:facet> <f:facet name="previous"> <ice:graphicImage url="/img/previous_btn.jpg" styleClass="OLPgrScrBtn" title="Previous Page" /> </f:facet> <f:facet name="next"> <ice:graphicImage url="/img/next_btn.jpg" styleClass="OLPgrScrBtn" title="Next Page" /> </f:facet> </ice:dataPaginator> </center> </ice:panelGroup> </f:facet> </ice:panelPopup>
Si vous avez des remarques n'hésitez à me faire part.
Merci beaucoup
Partager