I was recently asked by Packt Publishing to review their new book "JBoss EAP6 High Availability".
I have to admit I have little experience with clusters and have only been running JBoss EAP6 in standalone mode, so this book was exciting to read and I picked up A LOT of good tips and learned about a whole new field of computing.
Now, if I only had a couple of extra servers laying around so I could test this information out in practice! ;)
Buy the book directly from Packt: bit.ly/1dcbNEi
My review on amazon.
IT, computer and programming tutorials and tips that i couldnt find anywhere else using google, from my daily work as a Senior Developer of solutions using Java and Linux.
20140126
20140120
[SOLVED] eclipse deleted svn:ignore for folder tmp, still can't import folder
i had previously added a custom svn:ignore entry for "tmp", but today i wanted to undo that so i deleted the entire svn:ignore entry for my project:
then just right-clicked on the svn:ignore property at the bottom right there and chose "delete property".
but i was still unable to import a folder called "tmp" from svn.
eventually i found out that there was some kind of exclude entry for "tmp" as well in the project properties:
right click on project in eclipse > properties > resource > resource filters > delete the exclude entry for "tmp"
then just right-clicked on the svn:ignore property at the bottom right there and chose "delete property".
but i was still unable to import a folder called "tmp" from svn.
eventually i found out that there was some kind of exclude entry for "tmp" as well in the project properties:
right click on project in eclipse > properties > resource > resource filters > delete the exclude entry for "tmp"
20140117
[SOLVED] primefaces click on p:commandLink doesn't work, nothing happens. firebug helped me easily find the error.
In firefox, i clicked on the magnifying glass (top left in above image) icon link that seemed to not be working. When i clicked on the image, nothing happened.
I originally tried a (bad and risky) workaround for this by setting the p:commandLink's "immediate" attribute to "true":
<p:commandLink
actionListener="#{lrdm.openTRQDetails(trq.id)}"
update=":growl :panelContent" immediate="true">
<h:graphicImage value="/images/search.gif" style="border:0" />
</p:commandLink>
this "worked", but simply hid the error, so this isn't a solution.
Eventually, I found out that it was a hidden error: java.lang.NullPointerException
Here's how i found that:
In firebug > Console > All
i expanded the POST line and could see a clue about the error in the Response tab:
<?xml version='1.0' encoding='UTF-8'?>
<partial-response><error><error-name>class javax.faces.component.UpdateModelException</error-name><error-message><![CDATA[/path/to/inplaceInputText.xhtml @16,60 value="#{inputValue}": /path/to/tripRow.xhtml @53,69 value="#{backingBean.description}": java.lang.NullPointerException]]></error-message></error></partial-response>
here's the problem code in "backingBean"
...
public void setDescription(String description) {
this.description = description.toUpperCase();
}
...
the error was occurring when "description" was null--toUpperCase() will obviously throw an error.
to fix this, i changed the code to this:
public void setDescription(String description) {
if(description != null)
this.description = description.toUpperCase();
else this.description = description;
}
Once that was fixed, the form submitted properly :)
blogger: how to add social media icons/image links with consistent design/style theme using normal HTML "a"-tag and "img"-tag code
was searching for a while to find a standard way to add a line of 16x16 social media icons to my blogger, and finally ended up using the logo pack from "addthis":
http://www.addthis.com/logos
direct link to icon pack:
http://cache.addthiscdn.com/site/logos/addthis_social_icon_pack.zip
source of the soundcloud logo:
https://w.soundcloud.com/icon/assets/images/orange_white_16-94fc761.png
i've uploaded the images below to an album of mine on picasa called "social media icons"
here are direct links to the different icons:
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRlMnfmunAhm6QemEvSvMYeZQf0S0YOflf0dyN1sH1AjIRV10OGzobKBxzI7IB2CMLzrHNfMLbXAiYop4VbboDjMhI46vz_YIatkcpVa8xJmP13tOuyI4vXiuxhiOMz_sE8k4YgSaOeI4/s16-no/facebook.gif
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbIIXgMQ3zjkjRgezKky-zVWsaN-O6LnxiOXmlgBkYXqyTERYtNB6C8WPwym_iNl5MhMKA-_2YsyIQRv8N7xlqZy2YNbn_-eIXwLqJgNuLDwqaPWuusdacTD6JK4Pv1txnI8y5WtYI-7A/s16-no/twitter.gif
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4Dq6idjMTWMQzHDtoxtHDMpghtqr291Vv0-QVTilwLa1dmYvv5DQj4IEas2lHRw76asqMug0G9M84LE_B3ga9W7yVM5v_n22AWE5FSfNSsY9VVHrJaMUBnhPREOU-uzUyPXVMUpf1Twc/s16-no/linkedin.gif
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg52RjjN01eSPujkQM3Q-x8El2cDCz0e8eSDXeJISRgcrdIvouGOZveoGO52ZFFbdyuJ7lxOJFTlNOlPz-M_2UYtG4BAdmpABw4gzBCt4Al9onFyRxhaexbvSXQSKfmDIZoSXVBYHuyecc/s16-no/soundcloud-orange_white_16-94fc761.png
HTML CODE "TEMPLATE"
<a href="" title=""><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRlMnfmunAhm6QemEvSvMYeZQf0S0YOflf0dyN1sH1AjIRV10OGzobKBxzI7IB2CMLzrHNfMLbXAiYop4VbboDjMhI46vz_YIatkcpVa8xJmP13tOuyI4vXiuxhiOMz_sE8k4YgSaOeI4/s16-no/facebook.gif" /></a>
<a href="" title=""><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbIIXgMQ3zjkjRgezKky-zVWsaN-O6LnxiOXmlgBkYXqyTERYtNB6C8WPwym_iNl5MhMKA-_2YsyIQRv8N7xlqZy2YNbn_-eIXwLqJgNuLDwqaPWuusdacTD6JK4Pv1txnI8y5WtYI-7A/s16-no/twitter.gif" /></a>
<a href="" title=""><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg52RjjN01eSPujkQM3Q-x8El2cDCz0e8eSDXeJISRgcrdIvouGOZveoGO52ZFFbdyuJ7lxOJFTlNOlPz-M_2UYtG4BAdmpABw4gzBCt4Al9onFyRxhaexbvSXQSKfmDIZoSXVBYHuyecc/s16-no/soundcloud-orange_white_16-94fc761.png" /></a>
<a href="" title=""><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4Dq6idjMTWMQzHDtoxtHDMpghtqr291Vv0-QVTilwLa1dmYvv5DQj4IEas2lHRw76asqMug0G9M84LE_B3ga9W7yVM5v_n22AWE5FSfNSsY9VVHrJaMUBnhPREOU-uzUyPXVMUpf1Twc/s16-no/linkedin.gif" /></a>
EXAMPLE
<a href="https://www.facebook.com/nickleus.artist" title="Nickleus on Facebook"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRlMnfmunAhm6QemEvSvMYeZQf0S0YOflf0dyN1sH1AjIRV10OGzobKBxzI7IB2CMLzrHNfMLbXAiYop4VbboDjMhI46vz_YIatkcpVa8xJmP13tOuyI4vXiuxhiOMz_sE8k4YgSaOeI4/s16-no/facebook.gif" /></a>
<a href="https://twitter.com/nickleus" title="Nickleus on Twitter"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbIIXgMQ3zjkjRgezKky-zVWsaN-O6LnxiOXmlgBkYXqyTERYtNB6C8WPwym_iNl5MhMKA-_2YsyIQRv8N7xlqZy2YNbn_-eIXwLqJgNuLDwqaPWuusdacTD6JK4Pv1txnI8y5WtYI-7A/s16-no/twitter.gif" /></a>
<a href="https://soundcloud.com/nickleus" title="Nickleus on SoundCloud"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg52RjjN01eSPujkQM3Q-x8El2cDCz0e8eSDXeJISRgcrdIvouGOZveoGO52ZFFbdyuJ7lxOJFTlNOlPz-M_2UYtG4BAdmpABw4gzBCt4Al9onFyRxhaexbvSXQSKfmDIZoSXVBYHuyecc/s16-no/soundcloud-orange_white_16-94fc761.png" /></a>
<a href="http://www.linkedin.com/in/nickleus" title="Nickleus on LinkedIn"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4Dq6idjMTWMQzHDtoxtHDMpghtqr291Vv0-QVTilwLa1dmYvv5DQj4IEas2lHRw76asqMug0G9M84LE_B3ga9W7yVM5v_n22AWE5FSfNSsY9VVHrJaMUBnhPREOU-uzUyPXVMUpf1Twc/s16-no/linkedin.gif" /></a>
http://www.addthis.com/logos
direct link to icon pack:
http://cache.addthiscdn.com/site/logos/addthis_social_icon_pack.zip
source of the soundcloud logo:
https://w.soundcloud.com/icon/assets/images/orange_white_16-94fc761.png
i've uploaded the images below to an album of mine on picasa called "social media icons"
here are direct links to the different icons:
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRlMnfmunAhm6QemEvSvMYeZQf0S0YOflf0dyN1sH1AjIRV10OGzobKBxzI7IB2CMLzrHNfMLbXAiYop4VbboDjMhI46vz_YIatkcpVa8xJmP13tOuyI4vXiuxhiOMz_sE8k4YgSaOeI4/s16-no/facebook.gif
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbIIXgMQ3zjkjRgezKky-zVWsaN-O6LnxiOXmlgBkYXqyTERYtNB6C8WPwym_iNl5MhMKA-_2YsyIQRv8N7xlqZy2YNbn_-eIXwLqJgNuLDwqaPWuusdacTD6JK4Pv1txnI8y5WtYI-7A/s16-no/twitter.gif
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4Dq6idjMTWMQzHDtoxtHDMpghtqr291Vv0-QVTilwLa1dmYvv5DQj4IEas2lHRw76asqMug0G9M84LE_B3ga9W7yVM5v_n22AWE5FSfNSsY9VVHrJaMUBnhPREOU-uzUyPXVMUpf1Twc/s16-no/linkedin.gif
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg52RjjN01eSPujkQM3Q-x8El2cDCz0e8eSDXeJISRgcrdIvouGOZveoGO52ZFFbdyuJ7lxOJFTlNOlPz-M_2UYtG4BAdmpABw4gzBCt4Al9onFyRxhaexbvSXQSKfmDIZoSXVBYHuyecc/s16-no/soundcloud-orange_white_16-94fc761.png
HTML CODE "TEMPLATE"
<a href="" title=""><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRlMnfmunAhm6QemEvSvMYeZQf0S0YOflf0dyN1sH1AjIRV10OGzobKBxzI7IB2CMLzrHNfMLbXAiYop4VbboDjMhI46vz_YIatkcpVa8xJmP13tOuyI4vXiuxhiOMz_sE8k4YgSaOeI4/s16-no/facebook.gif" /></a>
<a href="" title=""><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbIIXgMQ3zjkjRgezKky-zVWsaN-O6LnxiOXmlgBkYXqyTERYtNB6C8WPwym_iNl5MhMKA-_2YsyIQRv8N7xlqZy2YNbn_-eIXwLqJgNuLDwqaPWuusdacTD6JK4Pv1txnI8y5WtYI-7A/s16-no/twitter.gif" /></a>
<a href="" title=""><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg52RjjN01eSPujkQM3Q-x8El2cDCz0e8eSDXeJISRgcrdIvouGOZveoGO52ZFFbdyuJ7lxOJFTlNOlPz-M_2UYtG4BAdmpABw4gzBCt4Al9onFyRxhaexbvSXQSKfmDIZoSXVBYHuyecc/s16-no/soundcloud-orange_white_16-94fc761.png" /></a>
<a href="" title=""><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4Dq6idjMTWMQzHDtoxtHDMpghtqr291Vv0-QVTilwLa1dmYvv5DQj4IEas2lHRw76asqMug0G9M84LE_B3ga9W7yVM5v_n22AWE5FSfNSsY9VVHrJaMUBnhPREOU-uzUyPXVMUpf1Twc/s16-no/linkedin.gif" /></a>
EXAMPLE
<a href="https://www.facebook.com/nickleus.artist" title="Nickleus on Facebook"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRlMnfmunAhm6QemEvSvMYeZQf0S0YOflf0dyN1sH1AjIRV10OGzobKBxzI7IB2CMLzrHNfMLbXAiYop4VbboDjMhI46vz_YIatkcpVa8xJmP13tOuyI4vXiuxhiOMz_sE8k4YgSaOeI4/s16-no/facebook.gif" /></a>
<a href="https://twitter.com/nickleus" title="Nickleus on Twitter"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbIIXgMQ3zjkjRgezKky-zVWsaN-O6LnxiOXmlgBkYXqyTERYtNB6C8WPwym_iNl5MhMKA-_2YsyIQRv8N7xlqZy2YNbn_-eIXwLqJgNuLDwqaPWuusdacTD6JK4Pv1txnI8y5WtYI-7A/s16-no/twitter.gif" /></a>
<a href="https://soundcloud.com/nickleus" title="Nickleus on SoundCloud"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg52RjjN01eSPujkQM3Q-x8El2cDCz0e8eSDXeJISRgcrdIvouGOZveoGO52ZFFbdyuJ7lxOJFTlNOlPz-M_2UYtG4BAdmpABw4gzBCt4Al9onFyRxhaexbvSXQSKfmDIZoSXVBYHuyecc/s16-no/soundcloud-orange_white_16-94fc761.png" /></a>
<a href="http://www.linkedin.com/in/nickleus" title="Nickleus on LinkedIn"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4Dq6idjMTWMQzHDtoxtHDMpghtqr291Vv0-QVTilwLa1dmYvv5DQj4IEas2lHRw76asqMug0G9M84LE_B3ga9W7yVM5v_n22AWE5FSfNSsY9VVHrJaMUBnhPREOU-uzUyPXVMUpf1Twc/s16-no/linkedin.gif" /></a>
20140114
[SOLVED] primefaces p:rowToggler and p:rowExpansion not working, not toggling
i was near pulling my hair out when i couldn't get a simple table row toggle (DataTable row expansion) working. nothing was happening when i clicked on the toggle icon image. my colleague took a look at it and finally discovered the problem:
the p:rowToggler was inside an embedded p:column:
<p:dataTable...>
<p:column...>
<h:panelGrid...>
<p:column...>
<p:rowToggler />
...
</p:column>
</h:panelGrid>
</p:column>
...
<p:rowExpansion>
<p:dataTable...>
<p:column...>
...
<p:column>
...
<p:rowExpansion>
</p:dataTable>
the solution was easy--just remove the embedded p:column:
<p:dataTable...>
<p:column...>
<h:panelGrid...>
<p:rowToggler />
...
</h:panelGrid>
</p:column>
...
<p:rowExpansion>
<p:dataTable...>
<p:column...>
...
<p:column>
...
<p:rowExpansion>
</p:dataTable>
the p:rowToggler was inside an embedded p:column:
<p:dataTable...>
<p:column...>
<h:panelGrid...>
<p:column...>
<p:rowToggler />
...
</p:column>
</h:panelGrid>
</p:column>
...
<p:rowExpansion>
<p:dataTable...>
<p:column...>
...
<p:column>
...
<p:rowExpansion>
</p:dataTable>
the solution was easy--just remove the embedded p:column:
<p:dataTable...>
<p:column...>
<h:panelGrid...>
<p:rowToggler />
...
</h:panelGrid>
</p:column>
...
<p:rowExpansion>
<p:dataTable...>
<p:column...>
...
<p:column>
...
<p:rowExpansion>
</p:dataTable>
20140109
how to convert richfaces a4j:actionparam tags (that don't use "assignTo" attribute) to primefaces
during our migration from richfaces to primefaces, i stumbled across the richfaces tag a4j:actionparam (demo), e.g.:
<p:menuitem value="#{msg['label.showTrackAndTrace']}"
...
actionListener="#{listTRQDataModel.fetchCurrentRow}">
<a4j:actionparam name="row" value="{currentRowNo}" />
<a4j:actionparam name="actionName" value="viewTNTListTrips" />
</p:menuitem>
luckily, since it doesn't use the assignTo attribute, the conversion of this tag to primefaces is pretty simple:
<p:menuitem value="#{msg['label.showTrackAndTrace']}"
...
actionListener="#{listTRQDataModel.fetchCurrentRow}">
<f:param name="row" value="{currentRowNo}" />
<f:param name="actionName" value="viewTNTListTrips" />
</p:menuitem>
NOTE: f:param would have worked just as fine in richfaces, but for some reason, whoever coded the old version used a4j:actionparam instead (overkill and unnecessary).
see also the great f:param tutorial by mkyong.
<p:menuitem value="#{msg['label.showTrackAndTrace']}"
...
actionListener="#{listTRQDataModel.fetchCurrentRow}">
<a4j:actionparam name="row" value="{currentRowNo}" />
<a4j:actionparam name="actionName" value="viewTNTListTrips" />
</p:menuitem>
luckily, since it doesn't use the assignTo attribute, the conversion of this tag to primefaces is pretty simple:
<p:menuitem value="#{msg['label.showTrackAndTrace']}"
...
actionListener="#{listTRQDataModel.fetchCurrentRow}">
<f:param name="row" value="{currentRowNo}" />
<f:param name="actionName" value="viewTNTListTrips" />
</p:menuitem>
NOTE: f:param would have worked just as fine in richfaces, but for some reason, whoever coded the old version used a4j:actionparam instead (overkill and unnecessary).
see also the great f:param tutorial by mkyong.
20140103
[SOLVED] JBoss EAP6, JSF, Primefaces: "Unable to find matching navigation case with from-view-id..."
our company app is configured so that when a user clicks the login button from the front page, and index.html file redirects the user to the main page of the authenticated/authorized area of our app, index.xhmtl (rendered as index.jsf), but since the user hasn't logged in yet, they are shown the login page: login.xhml (rendered as login.jsf), BUT in the browser URI field it shows:
examples.com/index.jsf
my problem was trying to get a navigation rule working, so that if during the authentication/login process, if the app found out that the user needed to change his password, he would be redirected to /newPassword.xhtml
but it wasn't working and i was getting this error:
"Unable to find matching navigation case with from-view-id login.xhtml..."
i found out eventually that the from-view-id needed to be the page that was shown in the browser URI field, namely index.xhtml, and not login.xhtml.
here are the relevant code and configurations.
#############
/login.xhtml
#############
<p:commandButton value="Login" update="checkPassword" action="#{loginBean.login}" ... />
#############
LoginBean.java
#############
...
private String changePass = "newPassword";
...
public String login() {
...
if(mustChangePassword) {
...
return changePass;
}
}
...
#############
WEB-INF/faces-config.xml
#############
<faces-config ... >
<navigation-rule>
<from-view-id>/index.xhtml</from-view-id>
<navigation-case>
<from-action>#{loginBean.login()}</from-action>
<from-outcome>newPassword</from-outcome>
<to-view-id>/newPassword.xhtml</to-view-id>
<redirect />
</navigation-case>
...
</navigation-rule>
</faces-config>
examples.com/index.jsf
my problem was trying to get a navigation rule working, so that if during the authentication/login process, if the app found out that the user needed to change his password, he would be redirected to /newPassword.xhtml
but it wasn't working and i was getting this error:
"Unable to find matching navigation case with from-view-id login.xhtml..."
i found out eventually that the from-view-id needed to be the page that was shown in the browser URI field, namely index.xhtml, and not login.xhtml.
here are the relevant code and configurations.
#############
/login.xhtml
#############
<p:commandButton value="Login" update="checkPassword" action="#{loginBean.login}" ... />
#############
LoginBean.java
#############
...
private String changePass = "newPassword";
...
public String login() {
...
if(mustChangePassword) {
...
return changePass;
}
}
...
#############
WEB-INF/faces-config.xml
#############
<faces-config ... >
<navigation-rule>
<from-view-id>/index.xhtml</from-view-id>
<navigation-case>
<from-action>#{loginBean.login()}</from-action>
<from-outcome>newPassword</from-outcome>
<to-view-id>/newPassword.xhtml</to-view-id>
<redirect />
</navigation-case>
...
</navigation-rule>
</faces-config>
Subscribe to:
Posts (Atom)