Attached code working in tomcat 7 but not in was liberty 8.5 server

UI Components for JSF
Post Reply
Niteen
Posts: 6
Joined: 19 Jan 2018, 15:33

14 Feb 2018, 12:55

In Tomcat - PostConstruct called exactly once when I click on any functionality within page.
WAS Liberty server - PostConstruct called every time when I click on any functionality within page.


JSF Code->

<?xml version="1.0" encoding="UTF-8" ?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:p="http://primefaces.org/ui" template="/templates/template.xhtml">

<ui:define name="horiz_nav">
<ui:include src="/private/common/horiz_nav_mng.xhtml" />
</ui:define>

<ui:define name="canvas">
<ui:decorate template="/templates/contentWithoutLHS.xhtml">
<ui:define name="legendName">
</ui:define>
<ui:define name="content">
<h:form id="listOfEmployeesForm">
<b>2.Managing Employees</b>
<br />
<b>2.4.List Of Employees </b>

<center>

<table>
<tr>

<td> <B> COUNTRY </B> </td>
<td>
<h:selectOneMenu value="#{listOfEmployeesBean.country}">
<f:selectItem itemValue="BE" itemLabel="BE" />
<f:selectItem itemValue="NL" itemLabel="NL" />
</h:selectOneMenu>
</td>
</tr>

<tr>

</tr>

<tr>

<td> <B> LAST NAME </B> </td>
<td>
<h:inputText type="text" value="#{listOfEmployeesBean.lastName}" />
</td>
</tr>
<tr>

</tr>

<tr>
<td> <B> UID </B> </td>
<td>
<h:inputText type="text" value="#{listOfEmployeesBean.puid}" />
</td>
</tr>
<tr>

</tr>
<tr>
</tr>
<tr>
</tr>
<tr>
</tr>
<tr>
</tr>

<tr>
<td>
<p:commandButton value="Search" update="@form"
action="#{listOfEmployeesBean.displayListOfEmployees}" />
</td>
<td>

<p:commandButton process="multiplePuidSelect" update=":listOfEmployeesForm:multiPuidDetail" value="Apply" oncomplete="PF('multiPuidDialog').show()" />
</td>

</tr>

</table>
</center>
<br/>
<br/>
<p:dataTable id="multiplePuidSelect" value="#{listOfEmployeesBean.sacPeopleList}"
var="sacPeopleList" widgetVar="sacPeopleTable" selection="#{listOfEmployeesBean.selectedPuidsList}" rowKey="#{sacPeopleList.puid}"


emptyMessage="No Records found"
style="text-align:center;" >




<p:column headerText="BLOCK (SEC)" width="5%">

<h:selectBooleanCheckbox id="blockEnable" disabled="false"
value="#{listOfEmployeesBean.blockedMapSEC[sacPeopleList]}"
styleClass="benefSelection"
rendered="#{sacPeopleList.blockedState eq 'Blocked (CDS)' or sacPeopleList.blockedState eq 'Free' or sacPeopleList.blockedState eq 'To Unblock'}"
partialSubmit='true'/>


<h:selectBooleanCheckbox id="blockDisable" disabled="true"
value="#{listOfEmployeesBean.blockedMapSEC[sacPeopleList]}"
styleClass="benefSelection"
rendered="#{sacPeopleList.blockedState eq 'Blocked (SEC)' or sacPeopleList.blockedState eq 'Blocked (SEC)(CDS)' or sacPeopleList.blockedState eq 'Blocked (CDS)(SEC)'}"
partialSubmit='true'/>


</p:column>


<p:column headerText="UNBLOCK (SEC)" width="5%">

<h:selectBooleanCheckbox id="unblockEnable" disabled="false"
value="#{listOfEmployeesBean.blockedMapFREE[sacPeopleList]}"
styleClass="benefSelection"
rendered="#{sacPeopleList.blockedState eq 'Blocked (SEC)' or sacPeopleList.blockedState eq 'Blocked (SEC)(CDS)' or sacPeopleList.blockedState eq 'Blocked (CDS)(SEC)'}" />

<h:selectBooleanCheckbox id="unblockDisable" disabled="true"
value="#{listOfEmployeesBean.blockedMapSEC[sacPeopleList]}"
styleClass="benefSelection"
rendered="#{sacPeopleList.blockedState eq 'Blocked (CDS)' or sacPeopleList.blockedState eq 'Free' or sacPeopleList.blockedState eq 'To Unlock'}" />


</p:column>


<p:column headerText="Corp. Key" width="5%">
<h:outputText value="#{sacPeopleList.puid}" />
</p:column>

<p:column headerText="Country" width="5%">
<h:outputText value="#{sacPeopleList.c}" />
</p:column>

<p:column headerText="Last Name" width="10%">
<h:outputText value="#{sacPeopleList.sn}" />
</p:column>

<p:column headerText="First Name" width="10%">
<h:outputText value="#{sacPeopleList.givenName}" />
</p:column>

<p:column headerText="Matricule" width="5%">
<h:outputText value="#{sacPeopleList.employeeNumber}" />
</p:column>

<p:column headerText="Employee Type" width="5%">
<h:outputText value="#{sacPeopleList.employeeType}" />
</p:column>

<p:column headerText="Manager CK" width="5%">
<h:outputText value="#{sacPeopleList.manager}" />
</p:column>

<p:column headerText="Timestamp" width="10%">
<h:outputText value="#{sacPeopleList.timeStamp}" />
</p:column>

<p:column headerText="Action" width="5%">
<h:outputText value="#{sacPeopleList.action}" />
</p:column>

<p:column headerText="Blocked Comment" width="40%">
<h:outputText value="#{sacPeopleList.blockedComment}" />
</p:column>


<p:column headerText="Blocked State" width="5%">
<h:outputText value="#{sacPeopleList.blockedState}" />
</p:column>

</p:dataTable>
<br />
<br />

<p:dialog header="Confirmation Screen" widgetVar="multiPuidDialog" modal="true" showEffect="fade" hideEffect="fade" resizable="false" width="800" appendTo="@(body)">
<p:outputPanel id="multiPuidDetail" style="text-align:center;">


<p:dataTable value="#{listOfEmployeesBean.selectedPuidsList}"
var="sacPeopleList1" widgetVar="sacPeopleTable"
emptyMessage="No Records Selected"
style="text-align:center;" tableStyle="width:auto" resizableColumns="true">
<p:column headerText="PUID" width="80%">
<h:outputText value="#{sacPeopleList1.puid}" />
</p:column>
<p:column headerText="CN" width="80%">
<h:outputText value="#{sacPeopleList1.cn}" />
</p:column>


<p:column headerText= "Action To Perform" width="80%">
<h:outputText value="#{sacPeopleList1.action}" />
</p:column>

</p:dataTable>
<br>
</br>
<br/>
<center>
<table>
<tr><td>
<p:commandButton value="Update" update="@form"
action="#{listOfEmployeesBean.getUpdate}" /></td><td></td>
<td><p:commandButton process="multiplePuidSelect" update=":listOfEmployeesForm:multiPuidDetail" value="Cancel" oncomplete="PF('multiPuidDialog').hide()" /> </td>
</tr>
</table>
</center>
</p:outputPanel>
</p:dialog>

</h:form>
</ui:define>
</ui:decorate>
</ui:define>

</ui:composition>


-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


@ManagedBean(name = "listOfEmployeesBean")
@RequestScoped
public class ListOfEmployeesBean implements Serializable {

private static final long serialVersionUID = 1L;

private static final Log LOG = Log.getLog(ListOfEmployeesBean.class);

private List<SacPeople> sacPeopleList;

@ManagedProperty(value = "#{sacPeopleService}")
private SacPeopleService sacPeopleService;

@ManagedProperty(value = "#{securityBean}")
private SecurityBean securityBean;

private Map<SacPeople, Boolean> blockedMapSEC;
private Map<SacPeople, Boolean> blockedMapFREE;

private String country ;
private String lastName;
private String puid ;
private SacPeople sacPeople;

@PostConstruct
public void init() {
System.out.println("init-------"+this.getClass().hashCode());
/*LOG.info("> init");
LOG.info("- user " + securityBean.getUser());

try {
blockedMapSEC = new HashMap<SacPeople, Boolean>();
blockedMapFREE = new HashMap<SacPeople, Boolean>();
country = new String();
lastName = new String();
puid = new String();

} catch (SacException sacE) {
LOG.error("SacException", sacE);
} catch (Exception e) {
LOG.error("Exception", e);
}*/
}

@PreDestroy
public void destroy() {
System.out.println("destroy-------"+this.getClass().hashCode());
}

public void getUpdate() {
LOG.info("> getUpdate");
LOG.debug("- country " + country);
LOG.debug("- lastname " + lastName);
LOG.debug("- corp key " + puid);

LOG.debug("- blockedMapSEC.size " + blockedMapSEC.size());
LOG.debug("- blockedMapFREE.size " + blockedMapFREE.size());

try {
final String user = securityBean.getUser();

if (blockedMapSEC != null && !blockedMapSEC.isEmpty()) {
final Set<SacPeople> keys = blockedMapSEC.keySet();
for (SacPeople sacPeople : keys) {
final Boolean blockBoolean = blockedMapSEC.get(sacPeople);
if (blockBoolean == true) {
if (sacPeople.getBlockedState().equalsIgnoreCase(
SacPeopleConstant.BLOCKED_CDS)) {
sacPeopleService.updateBlockedSec(
sacPeople.getPuid(),
SacPeopleConstant.BLOCKED_CDS_SEC, user);
}
if (sacPeople.getBlockedState().equalsIgnoreCase(
SacPeopleConstant.FREE)
|| (sacPeople.getBlockedState()
.equalsIgnoreCase(SacPeopleConstant.TO_UNBLOCK))) {

sacPeopleService.updateBlockedSec(
sacPeople.getPuid(),
SacPeopleConstant.BLOCKED_SEC, user);
}
}
}
}
if (blockedMapFREE != null && !blockedMapFREE.isEmpty()) {
final Set<SacPeople> keys = blockedMapFREE.keySet();
for (SacPeople sacPeople : keys) {
final Boolean blockBoolean = blockedMapFREE.get(sacPeople);
if (blockBoolean == true) {
if (sacPeople.getBlockedState().equalsIgnoreCase(
SacPeopleConstant.BLOCKED_SEC)) {
sacPeopleService.updateBlockedSec(
sacPeople.getPuid(),
SacPeopleConstant.FREE, user);
}
if (sacPeople.getBlockedState().equalsIgnoreCase(
SacPeopleConstant.BLOCKED_SEC_CDS)
|| sacPeople
.getBlockedState()
.equalsIgnoreCase(
SacPeopleConstant.BLOCKED_CDS_SEC)) {

sacPeopleService.updateBlockedSec(
sacPeople.getPuid(),
SacPeopleConstant.BLOCKED_CDS, user);
}
}
}
}

blockedMapSEC = new HashMap<SacPeople, Boolean>();
blockedMapFREE = new HashMap<SacPeople, Boolean>();

displayListOfEmployees();

} catch (SacException sacE) {
LOG.error("SacException ", sacE);

} catch (Exception e) {
LOG.error("Exception", e);
}
}

public void displayListOfEmployees() {
LOG.info(" Entering method displayListOfEmployees() of ListOfEmployeesBean");

LOG.info("PUID:" + puid);
LOG.info("LASTNAME:" + lastName);
LOG.info("Country:" + country);

blockedMapSEC = new HashMap<SacPeople, Boolean>();
blockedMapFREE = new HashMap<SacPeople, Boolean>();
try {

this.sacPeopleList = sacPeopleService.extractListOfEmployees(
country, lastName, puid);

}

catch (SacException sacE) {

LOG.error(
"SacException in displayListOfEmployees() method of ListOfEmployeesBean:"
+ sacE.getStackTrace(), sacE);

} catch (Exception e) {

LOG.error(
"Exception in displayListOfEmployees() method of ListOfEmployeesBean:"
+ e, e);

}

LOG.info(" Exit from method displayListOfEmployeees() of ListOfEmployeesBean");

}

public SacPeopleService getSacPeopleService() {
return sacPeopleService;
}

public void setSacPeopleService(SacPeopleService sacPeopleService) {
this.sacPeopleService = sacPeopleService;
}

public List<SacPeople> getSacPeopleList() {
return sacPeopleList;
}

public void setSacPeopleList(List<SacPeople> sacPeopleList) {
this.sacPeopleList = sacPeopleList;
}

public Map<SacPeople, Boolean> getBlockedMapFREE() {
return blockedMapFREE;
}

public Map<SacPeople, Boolean> getBlockedMapSEC() {
return blockedMapSEC;
}

public void setBlockedMapFREE(Map<SacPeople, Boolean> blockedMapFREE) {
System.out.println("In setBlockedMapFREE");
this.blockedMapFREE = blockedMapFREE;
}

public void setBlockedMapSEC(Map<SacPeople, Boolean> blockedMapSEC) {
this.blockedMapSEC = blockedMapSEC;
}

public void setCountry(String country) {
this.country = country;
}

public String getCountry() {
return country;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

public String getPuid() {
return puid;
}

public void setPuid(String puid) {
this.puid = puid;
}

public void onRowSelect(SelectEvent event) {
System.out.println("In onRowSelect");
FacesMessage msg = new FacesMessage("Puid Selected",
((SacPeople) event.getObject()).getPuid());
FacesContext.getCurrentInstance().addMessage(null, msg);
}

public void onRowUnselect(UnselectEvent event) {
System.out.println("In onRowUnselect");
FacesMessage msg = new FacesMessage("Puid UnSelected",
((SacPeople) event.getObject()).getPuid());
FacesContext.getCurrentInstance().addMessage(null, msg);
}

private List<SacPeople> selectedPuidsList;

public List<SacPeople> getSelectedPuidsList() {

return selectedPuidsList;
}

public void setSelectedPuidsList(List<SacPeople> selectedPuidsList) {
System.out.println("In setSelectedPuidsList");
selectedPuidsList = new ArrayList<SacPeople>();
try {
System.out.println("blockedMapSEC ::> " + blockedMapSEC);
if (blockedMapSEC != null && !blockedMapSEC.isEmpty()) {
Set<SacPeople> keys = blockedMapSEC.keySet();

for (SacPeople sacPeople : keys) {

Boolean blockBoolean = blockedMapSEC.get(sacPeople);

if (blockBoolean == true) {

sacPeople.setAction("BLOCK (SEC)");
selectedPuidsList.add(sacPeople);
System.out.println("sacPeople puid :::::> "
+ sacPeople.getPuid());

}
}
}

System.out.println("blockedMapFREE ::> " + blockedMapFREE);
if (blockedMapFREE != null && !blockedMapFREE.isEmpty()) {
Set<SacPeople> keys1 = blockedMapFREE.keySet();

for (SacPeople sacPeople : keys1) {

Boolean blockBoolean = blockedMapFREE.get(sacPeople);

if (blockBoolean == true) {

sacPeople.setAction("UNBLOCK (SEC)");
selectedPuidsList.add(sacPeople);
System.out.println("sacPeople puid :::::> "
+ sacPeople.getPuid());

}
}

}
}

catch (SacException sacE) {

LOG.error(
"SacException in setSelectedPuidsList() method of ListOfEmployeesBean:"
+ sacE.getStackTrace(), sacE);

} catch (Exception e) {

LOG.error(
"Exception in setSelectedPuidsList() method of ListOfEmployeesBean:"
+ e, e);

}

this.selectedPuidsList = selectedPuidsList;
System.out.println("Out setSelectedPuidsList");
}

public SacPeople getSacPeople() {
return sacPeople;
}

public void setSacPeople(SacPeople sacPeople) {
this.sacPeople = sacPeople;
}

public SecurityBean getSecurityBean() {
return securityBean;
}

public void setSecurityBean(SecurityBean securityBean) {
this.securityBean = securityBean;
}
}

Melloware
Posts: 3716
Joined: 22 Apr 2013, 15:48

14 Feb 2018, 14:20

Its because your bean is @RequestScoped.

See this post and answer #1: https://stackoverflow.com/questions/907 ... me-request

I am surprised it was working before in Tomcat 7.
PrimeFaces Developer | PrimeFaces Extensions Developer
GitHub Profile: https://github.com/melloware
PrimeFaces Elite 13.0.0 / PF Extensions 13.0.0
PrimeReact 9.6.1

Niteen
Posts: 6
Joined: 19 Jan 2018, 15:33

14 Feb 2018, 14:28

But what should i do?

Melloware
Posts: 3716
Joined: 22 Apr 2013, 15:48

14 Feb 2018, 14:38

Well a really simple solution is that it only gets called once per lifecycle is use an initialized flag.

Code: Select all

@ManagedBean(name = "listOfEmployeesBean")
@RequestScoped
public class ListOfEmployeesBean implements Serializable {

private boolean initialized = false;

@PostConstruct
public void init() {
   if (initialized) {
      return;
   }
   ...
   ...
   this.initialized = true;
}

}
PrimeFaces Developer | PrimeFaces Extensions Developer
GitHub Profile: https://github.com/melloware
PrimeFaces Elite 13.0.0 / PF Extensions 13.0.0
PrimeReact 9.6.1

Niteen
Posts: 6
Joined: 19 Jan 2018, 15:33

14 Feb 2018, 14:43

Thanks for the reply...i tried that solutions before also...but everytime postconstruct calls with that all object values are resetted to default...so isinitialized variable also resetted to default value.....

tandraschko
PrimeFaces Core Developer
Posts: 3979
Joined: 03 Dec 2010, 14:11
Location: Bavaria, DE
Contact:

14 Feb 2018, 14:43

@PostConstruct must only be called once for the defined lifetime. Everything else is a bug. Maybe you use the wrong @RequestScoped? Otherwise, ask the WAS guys ;)
Thomas Andraschko

PrimeFaces | PrimeFaces Extensions

Apache Member | OpenWebBeans, DeltaSpike, MyFaces, BVal, TomEE

Sponsor me: https://github.com/sponsors/tandraschko
Blog: http://tandraschko.blogspot.de/
Twitter: https://twitter.com/TAndraschko

Niteen
Posts: 6
Joined: 19 Jan 2018, 15:33

14 Feb 2018, 14:45

Yes that i know bro....thats the question i am asking ...why it is called exactly once in tomcat but multiple times in was

Melloware
Posts: 3716
Joined: 22 Apr 2013, 15:48

14 Feb 2018, 14:50

Yep this is a WAS question not a PF question.
PrimeFaces Developer | PrimeFaces Extensions Developer
GitHub Profile: https://github.com/melloware
PrimeFaces Elite 13.0.0 / PF Extensions 13.0.0
PrimeReact 9.6.1

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 20 guests