Swing already provides a mature way to automatically update the GUI based solely on the internal data status, but JSF does not have good support for refreshing the GUI based on a request from the server side.If you check the standard life cycle of JSF, you will find that the user normally needs to produce an event on the Web page (by clicking a button, for example) to invoke the GUI refresh.
Using the methods outlined in Listing 1 through Listing 3, you establish a framework for a managed bean to monitor changes of the server-side data.
Yes you have to implement a polling mechanism using Xml Http (the original techie term for Ajax), which can create an illusion of content being pushed from the Server.
Say you can poll/Invoke a servlet/JSP on the server, and query for any changes in the DB, and if found.. FYI, If you are using something like MS SQL Server 2005, their is a facility to have triggers send JMS / Web Service Requests in response to updates / inserts to a table in the database.
You could simply have the database post updates to the app server and then poll the app server via ajax for items in a queue of some sort.