2008. december 17., szerda

Compacting a Virtualbox (Sun xVM) hard disk - freeing up space

I've just realized that my virtualbox install takes up 25 gigs, however, while checking out the filesystem in the VM, only 17gigs of space is used. It seems that virtualbox will not automatically free up this space, you have to do it manually, by issuing the following command:

 VBoxManage modifyvdi <name of the .vdi file> compact

Here is the output:

modifyvdi NewHardDisk1.vdi compact
VirtualBox Command Line Management Interface Version 2.0.6
(C) 2005-2008 Sun Microsystems, Inc.
All rights reserved.

Shrinking '/media/sdb1/innotek/NewHardDisk1.vdi': 0%...........10%..........20%..........30%..........40%..........

50%..........60%..........70%..........80%..........90%..........100%
 
That's it, however, don't expect too much size reduction (it only freed up 700MB on a 25G hard disk...)

PS: actually to make it work, I had to create a symlink to the .vdi file in ~/.VirtualBox/VDI/, maybe you'll need this, too.

Update: In order to get a greater file size reduction, you need to zero all the space on the hard disk (the compacting algorithm works by eliminating all parts of the hard disk image which contain zeros. Some advice on doing this can be found here.

2008. november 30., vasárnap

Disappearing desktop icons in Ubuntu Hardy and Intrepid

Check two things:
  1. Start gconf-editor and search for the Apps ->Nautilus -> Preferences -> Show desktop key. Uncheck and check the checkbox a few times. If this does not help, proceed to step 2.
  2. Probably for some reason nautilus did not start properly. Press ALT+F2, type nautilus and press ENTER.

2008. október 30., csütörtök

1001 ways to serve static content for your java web application

Okay, not 1001. That was the marketing part :) But here you can find a few.
 The problem originated from a job, where I had to handle uploading of user files.
  • Simply use the servlet container to serve up the content. This requires that the static content is at the top level of the WAR structure (or can be reached from there). Remember, anything inside WEB-INF won't be served as per the specification. There are two cons of this solution: one is that the content can be only located within the war, the second is that the user cannot upload new content (because of the WAR's read-only nature).
  • You create a new context called let's say "/files" and point this context to the directory where the content is located (remember to create a dummy WEB-INF/web.xml too).
  • You write a custom servlet to hand out the content. You have to be careful about server side caching, client side caching (http headers!) and proper checking of the servlet parameters, so your new servlet won't be a new way to display /etc/passwd remotely.
  • You place a symlink within the unextracted WAR structure to the real directory, where content is stored.
  • You configure the DefaultServlet of your container to serve up your content. This servlet is responsible for serving your static content inside the WAR, however, can be sometimes reconfigured to serve content from outside directories. Unfortunately this servlet is not standardized, which means your web.xml won't be cross-container.
  • You let your http server (apache) serve static content, and only dynamic pages go to your servlet container. (Obviously this will only work if you've got a http server in front of the servlet container).
Happy coding!

2008. augusztus 3., vasárnap

Wondering why M2_REPO classpath variable is not set in eclipse when using maven?

.. cause you have not run eclipse:configure-workspace :)


see here.

2008. június 10., kedd

Forcing awstats to ignore directories

Awstats is a pretty basic web statistics package, it displays nice graphs of the usage of your website.

However, sometimes you want to exclude certain parts of the site (for example, the awstats directory itself..) Here is how you do it.

Search for the respective config file of awstats in the /etc folder, and append this line at the end of the file:

SkipFiles="REGEX[^\\/awstats]"

This will make awstats skip every request starting with /awstats.

2008. június 2., hétfő

Batch conversion of image files

Many times, I need to batch convert some files from one format into another. Usually this can be done with a nice one liner:

for i in `ls *.jpg|awk -F. '{print $1}'`; do convert $i.jpg $i.bmp; done

(converts all .jpg files into .bmp files in the current directory)

Note: you'll need imagemagick for this to work

2008. május 27., kedd

DNS-313 troubles and a solution

I've bought a D-Link DNS-313 for backup purposes. This is a 1 disk network attached storage device, running embedded Linux. After unpacking the thing, inserting a HDD and turning it on, the installer refused to connect. I tried various installers without any success. After a couple of hours, I've decided to install everything manually.

Here is a list of things you need to do:
  1. Read the DSMG600 forum. 
  2. Mount the device using USB. And partition the drive according to this forum post.
  3. Install the embedded linux distro as described in this post.
  4. After that, you can boot the device in Ethernet mode, and log in using Telnet. This is a bit tricky though. You can login using name "admin" and an empty password. Or you can log in using "root" with the password "11111". In both cases however, you won't be given a login prompt. In order to get one, type: "5784468" and press enter.
  5. After all these, you still need to customize everything, set up samba properly, etc.

2008. május 25., vasárnap

NGI2008 in Krakow

I've recently been to Krakow to give a talk about some of our research and development at the NGI2008 conference. The conference was hosted by AGH University of Science and Technology which is a pretty large institution, having multiple campuses within Krakow.
After the conference, we've met in the city to do some sightseeing. What I've really liked in Krakow, was public transportation, which is cheap and pretty convenient.




It is also pretty easy to get around with a bicyle in town, though I had no chance to try it :(
A piece of polish technology:


 The famous building on Market Square:


Krakow Castle:

The conference banquet:
Guess why was everyone so happy?

2008. április 4., péntek

Troubleshooting JSF pages

Anyone who has tried JavaServer Faces development using the Sun Reference Implementation knows that trouble shooting can be a real pain. Many times rendering simply stops at a given point in the page, without any exception or error message. Here are some tips to get you started in troubleshooting your application.
  • Keep in mind that any changes you make to faces-config.xml will take effect only if you restart(redeploy) your application.
  • Check out the HTML generated. If you see that tags are not closed, or some tags are completely missing, try to remove some of the JSF code to see exactly which part causes the problem.
  • Increase the JSF loglevel. This depends on the particular JSF implementation. If you are using the Sun RI, the following packages need to get their loglevel increased to level "FINE":

    com.sun.faces.application
    com.sun.faces.el
    com.sun.faces.lifecycle
    
    How you are doing this depends on the environment you are workin in. If you are using the Glassfish application server, go the the admin console, then "Application server", "Logging", "Loglevels". However, you can also set the loglevel of these packages programmatically, using Logger.getLogger(..).setLevel(..). If you are successful with either of these methods, you should see log messages like this:

    parse(jndi:/server/TrainingLog-war/WEB-INF/faces-config.xml)
    added converter of type 'javax.faces.Long' and class 'javax.faces.convert.LongConverter'
    added converter of class type 'javax.faces.convert.LongConverter'
    added converter of type 'javax.faces.Short' and class 'javax.faces.convert.ShortConverter'
    added converter of class type 'javax.faces.convert.ShortConverter'
    Unknown entity, deferring to superclass.
    Unknown entity, deferring to superclass.
    added converter of class type 'javax.faces.convert.BigDecimalConverter'
    addManagedBean(SessionBean1)
    addManagedBean(Login)
    addManagedBean(ApplicationBean1)
    addManagedBean(RequestBean1)
    addManagedBean(ViewMyUsers)
    addManagedBean(ViewMyTrainings)
    addManagedBean(ViewMyParts)
    addNavigationRule(/ViewMyUsers.jsp)
    addNavigationRule(/Login.jsp)
    addManagedBean(init)
    addNavigationRule(/init.jsp)
    Created Default Lifecycle
    Defined editorClass class com.sun.faces.application.ConverterPropertyEditorFor_java_math_BigInteger
    added converter of class type 'javax.faces.convert.BigIntegerConverter'
    added converter of type 'javax.faces.BigDecimal' and class 'javax.faces.convert.BigDecimalConverter'
    added converter of type 'javax.faces.BigInteger' and class 'javax.faces.convert.BigIntegerConverter'
    getLifecycle: DEFAULT com.sun.faces.lifecycle.LifecycleImpl@b69761
    addedLifecycle: com.sun.faces.lifecycle.PARTIAL com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle@4e3bb0
    getLifecycle: com.sun.faces.lifecycle.PARTIAL com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle@4e3bb0
    addPhaseListener(ANY 0,com.sun.faces.lifecycle.ELResolverInitPhaseListener@15a4e36
    getLifecycle: DEFAULT com.sun.faces.lifecycle.LifecycleImpl@b69761
    addPhaseListener(ANY 0,com.sun.faces.lifecycle.ELResolverInitPhaseListener@177dde7
    added converter of type 'javax.faces.Boolean' and class 'javax.faces.convert.BooleanConverter'
    Created ApplicationFactory
    JSF1032: Resource injection ENABLED using InjectionProvider 'com.sun.faces.vendor.GlassFishInjectionProvider'.
    Created Application instance
    added converter of type 'javax.faces.Byte' and class 'javax.faces.convert.ByteConverter'
    Created Application instance 'com.sun.faces.application.ApplicationImpl@191b687'
    "JSF1016: Target class 'com.sun.faces.application.ActionListenerImpl' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    set ActionListener Instance to 'com.sun.faces.application.ActionListenerImpl'
    set ActionListener Instance to 'com.sun.rave.web.ui.appbase.faces.ActionListenerImpl'
    "JSF1016: Target class 'com.sun.faces.application.NavigationHandlerImpl' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    Created NavigationHandler instance
    set NavigationHandler Instance to 'com.sun.faces.application.NavigationHandlerImpl'
    added converter of type 'javax.faces.Character' and class 'javax.faces.convert.CharacterConverter'
    added converter of type 'javax.faces.DateTime' and class 'javax.faces.convert.DateTimeConverter'
    added converter of type 'javax.faces.Double' and class 'javax.faces.convert.DoubleConverter'
    added converter of type 'javax.faces.Float' and class 'javax.faces.convert.FloatConverter'
    added converter of type 'javax.faces.Integer' and class 'javax.faces.convert.IntegerConverter'
    "JSF1016: Target class 'com.sun.webui.jsf.faces.DataProviderELResolver' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    added converter of type 'javax.faces.Long' and class 'javax.faces.convert.LongConverter'
    added converter of type 'javax.faces.Number' and class 'javax.faces.convert.NumberConverter'
    "JSF1016: Target class 'com.sun.webui.jsf.faces.ThemeELResolver' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    "JSF1016: Target class 'com.sun.faces.application.StateManagerImpl' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    set StateManager Instance to 'com.sun.faces.application.StateManagerImpl'
    added converter of type 'javax.faces.Short' and class 'javax.faces.convert.ShortConverter'
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@e76ee6 for CurrentUser
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@137f1 for LoginPageBean
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@bb1db8 for MenuBean
    set StateManager Instance to 'com.sun.faces.extensions.avatar.application.DeferredStateManager'
    "JSF1016: Target class 'com.sun.faces.application.ViewHandlerImpl' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    Created ViewHandler instance
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@11c61fe for RegisterPageBean
    set ViewHandler Instance to 'com.sun.faces.application.ViewHandlerImpl'
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@baad4f for TransferListPageBean
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@b9f79a for TransferPageBean
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@149d4d for UserManagementPageBean
    set ViewHandler Instance to 'com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl'
    added component of type 'com.sun.faces.AjaxZone' and class 'com.sun.faces.extensions.avatar.components.AjaxZone'
    added component of type 'com.sun.faces.extensions.avatar.Scripts' and class 'com.sun.faces.extensions.avatar.components.ScriptsComponent'
    added component of type 'com.sun.rave.faces.Encoding' and class 'com.sun.rave.faces.component.EncodingComponent'

    <some stuff snipped>

    added component of type 'javax.faces.ViewRoot' and class 'com.sun.faces.extensions.avatar.components.PartialTraversalViewRootImpl'
    added converter of type 'javax.faces.Boolean' and class 'javax.faces.convert.BooleanConverter'

    <some stuff snipped>
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@13fe739 for ApplicationBean1
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@13e8c11 for Login
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@9e637e for RequestBean1
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@1986321 for SessionBean1
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@10f546e for ViewMyParts
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@622bff for ViewMyTrainings
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@b3ca83 for ViewMyUsers
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@15c46da for init
    Using client state buffer size of 4096
    added validator of type 'javax.faces.DoubleRange' class 'javax.faces.validator.DoubleRangeValidator'
    added validator of type 'javax.faces.Length' class 'javax.faces.validator.LengthValidator'
    added validator of type 'javax.faces.LongRange' class 'javax.faces.validator.LongRangeValidator'
    Completed initializing Sun's JavaServer Faces implementation (1.2_04-b20-p03) for context '/TrainingLog-war'
    getLifecycle: com.sun.faces.lifecycle.PARTIAL com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle@4e3bb0
    SMGT0007: Self Management Rules service is enabled
    Application server startup complete.
    contextDestroyed()
    CORE5022: All ejb(s) of [Micropayment-JSF] were unloaded successfully!
    TopLink, version: Oracle TopLink Essentials - 2.0 (Build b58g-fcs (09/07/2007))
    Server: unknown
    file:/home/surfk/sun/Micropayment-JSF/dist/gfdeploy/Micropayment-JSF-ejb_jar/-Micropayment-JSF-ejbPU login successful
    file:/home/surfk/sun/Micropayment-JSF/dist/gfdeploy/Micropayment-JSF-ejb_jar/-Micropayment-JSF-ejbPU logout successful
    JDO76609: Got SQLException executing statement "CREATE TABLE USERS (ID BIGINT NOT NULL, PASSWORD VARCHAR(50), BALANCE FLOAT, REALNAME VARCHAR(255), USERROLE INTEGER, LOGIN VARCHAR(50), PRIMARY KEY (ID))": java.sql.SQLException: Table/View 'USERS' already exists in Schema 'APP'.
    JDO76609: Got SQLException executing statement "CREATE TABLE TRANSFER (ID BIGINT NOT NULL, TRANSFERTIME TIMESTAMP, AMOUNT FLOAT, SENDER_ID BIGINT, RECIPIENT_ID BIGINT, PRIMARY KEY (ID))": java.sql.SQLException: Table/View 'TRANSFER' already exists in Schema 'APP'.
    JDO76609: Got SQLException executing statement "ALTER TABLE TRANSFER ADD CONSTRAINT TRANSFERRCIPIENTID FOREIGN KEY (RECIPIENT_ID) REFERENCES USERS (ID)": java.sql.SQLException: Constraint 'TRANSFERRCIPIENTID' already exists in Schema 'APP'.
    JDO76609: Got SQLException executing statement "ALTER TABLE TRANSFER ADD CONSTRAINT TRANSFER_SENDER_ID FOREIGN KEY (SENDER_ID) REFERENCES USERS (ID)": java.sql.SQLException: Constraint 'TRANSFER_SENDER_ID' already exists in Schema 'APP'.
    JDO76609: Got SQLException executing statement "CREATE TABLE SEQUENCE (SEQ_NAME VARCHAR(50) NOT NULL, SEQ_COUNT DECIMAL, PRIMARY KEY (SEQ_NAME))": java.sql.SQLException: Table/View 'SEQUENCE' already exists in Schema 'APP'.
    JDO76609: Got SQLException executing statement "INSERT INTO SEQUENCE(SEQ_NAME, SEQ_COUNT) values ('SEQ_GEN', 1)": java.sql.SQLIntegrityConstraintViolationException: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'SQL080109084126840' defined on 'SEQUENCE'.
    deployed with moduleid = Micropayment-JSF
    naming.bind
    POARemoteRefFactory checking if SFSBVersionPolicy need to be added
    EJBSCLookup:: sc.getEjbContainerAvailabilityEnabledFromConfig() ==> false
    POARemoteRefFactory addSFSBVersionPolicy? false
    POARemoteRefFactory checking if SFSBVersionPolicy need to be added
    EJBSCLookup:: sc.getEjbContainerAvailabilityEnabledFromConfig() ==> false
    POARemoteRefFactory addSFSBVersionPolicy? false
    **RemoteBusinessJndiName: micropayment.ejb.manager.UserManagerRemote; remoteBusIntf: micropayment.ejb.manager.UserManagerRemote
    naming.bind
    POARemoteRefFactory checking if SFSBVersionPolicy need to be added
    EJBSCLookup:: sc.getEjbContainerAvailabilityEnabledFromConfig() ==> false
    POARemoteRefFactory addSFSBVersionPolicy? false
    POARemoteRefFactory checking if SFSBVersionPolicy need to be added
    EJBSCLookup:: sc.getEjbContainerAvailabilityEnabledFromConfig() ==> false
    POARemoteRefFactory addSFSBVersionPolicy? false
    **RemoteBusinessJndiName: micropayment.ejb.manager.TransferManagerRemote; remoteBusIntf: micropayment.ejb.manager.TransferManagerRemote
    LDR5010: All ejb(s) of [Micropayment-JSF] loaded successfully!
    JSF1021: [/Micropayment-JSF-war] Configuration option 'com.sun.faces.displayConfiguration' - DISABLED
     <some stuff snipped>
    'com.sun.faces.vendor.GlassFishInjectionProvider'
    JSF1018: [/Micropayment-JSF-war] Configuration option 'com.sun.faces.responseBufferSize' set to '1024'
    JSF1018: [/Micropayment-JSF-war] Configuration option 'com.sun.faces.clientStateWriteBufferSize' set to '8192'
    Initializing Sun's JavaServer Faces implementation (1.2_04-b20-p03) for context '/Micropayment-JSF-war'
    contextInitialized()
    Attempting to configure Digester to perform document validation.
    addRenderer(javax.faces.Command,javax.faces.Button)

     <some stuff snipped>
    parse(jndi:/server/Micropayment-JSF-war/WEB-INF/faces-config.xml)
    Unknown entity, deferring to superclass.
    Unknown entity, deferring to superclass.
    addManagedBean(LoginPageBean)
    addManagedBean(MenuBean)
    addManagedBean(CurrentUser)
    addManagedBean(RegisterPageBean)
    addManagedBean(UserManagementPageBean)
    addManagedBean(TransferPageBean)
    addManagedBean(TransferListPageBean)
    addNavigationRule(*)
    addNavigationRule(/secure/owner/usermanagement.jsp)
    addNavigationRule(/secure/regular/newtransfer.jsp)
    Created Default Lifecycle
    getLifecycle: DEFAULT com.sun.faces.lifecycle.LifecycleImpl@19081e1
    addPhaseListener(ANY 0,com.sun.faces.lifecycle.ELResolverInitPhaseListener@184d505
    Created ApplicationFactory
    JSF1032: Resource injection ENABLED using InjectionProvider 'com.sun.faces.vendor.GlassFishInjectionProvider'.
    Created Application instance
    Created Application instance 'com.sun.faces.application.ApplicationImpl@a1ea7d'
    "JSF1016: Target class 'com.sun.faces.application.ActionListenerImpl' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    set ActionListener Instance to 'com.sun.faces.application.ActionListenerImpl'
    "JSF1016: Target class 'com.sun.faces.application.NavigationHandlerImpl' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    Created NavigationHandler instance
    set NavigationHandler Instance to 'com.sun.faces.application.NavigationHandlerImpl'
    "JSF1016: Target class 'com.sun.faces.application.StateManagerImpl' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    set StateManager Instance to 'com.sun.faces.application.StateManagerImpl'
    "JSF1016: Target class 'com.sun.faces.application.ViewHandlerImpl' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    Created ViewHandler instance
    set ViewHandler Instance to 'com.sun.faces.application.ViewHandlerImpl'
    added component of type 'javax.faces.Column' and class 'javax.faces.component.UIColumn'

     <some stuff snipped>

    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@17e1e5c for CurrentUser
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@3e6a94 for LoginPageBean
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@2146b2 for MenuBean
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@1bde842 for RegisterPageBean
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@19c30aa for TransferListPageBean
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@1988946 for TransferPageBean
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@1794a2d for UserManagementPageBean
    Using client state buffer size of 4096
    added validator of type 'javax.faces.DoubleRange' class 'javax.faces.validator.DoubleRangeValidator'
    added validator of type 'javax.faces.Length' class 'javax.faces.validator.LengthValidator'
    added validator of type 'javax.faces.LongRange' class 'javax.faces.validator.LongRangeValidator'
    Completed initializing Sun's JavaServer Faces implementation (1.2_04-b20-p03) for context '/Micropayment-JSF-war'
    getLifecycle: DEFAULT com.sun.faces.lifecycle.LifecycleImpl@19081e1
    execute(com.sun.faces.context.FacesContextImpl@13cbbb1)
    phase(RESTORE_VIEW 1,com.sun.faces.context.FacesContextImpl@13cbbb1)
    JSF1028: [/Micropayment-JSF-war] The ELResolvers for JSF successfully registered with the JSP container.
    Entering RestoreViewPhase
    New request: creating a view for /login.jsp
    Created component with component type of 'javax.faces.ViewRoot'
    servletPath /faces
    pathInfo /login.jsp
    URL pattern of the FacesServlet executing the current request /faces
    Created new view for /login.jsp
    Locale for this view as determined by calculateLocale en_US
    RenderKitId for this view as determined by calculateRenderKitId HTML_BASIC
    Exiting RestoreViewPhase
    TIMING: Exectution time for phase 'RESTORE_VIEW 1': 72
    getLifecycle: DEFAULT com.sun.faces.lifecycle.LifecycleImpl@19081e1
    removePhaseListener(ANY 0,com.sun.faces.lifecycle.ELResolverInitPhaseListener@184d505
    Skipping rest of execute() because of a reload
    render(com.sun.faces.context.FacesContextImpl@13cbbb1)
    phase(RENDER_RESPONSE 6,com.sun.faces.context.FacesContextImpl@13cbbb1)
    Entering RenderResponsePhase
    About to render view /login.jsp
    About to execute view /login.jsp
    Before dispacthMessage to viewId /login.jsp
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.NamingContainer'
    Created component with component type of 'javax.faces.HtmlForm'
    Created bean MenuBean successfully
    Created component with component type of 'javax.faces.HtmlDataTable'
    Created component with component type of 'javax.faces.Column'
    Created component with component type of 'javax.faces.HtmlCommandLink'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlForm'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlInputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlInputSecret'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlMessages'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlCommandButton'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    After dispacthMessage to viewId /login.jsp
    Completed building view for :
    /login.jsp
    About to render view /login.jsp
    component.getValue() returned
                <table>
                    <tr>
                        <td id="menucolumn">
                            
    Value to be rendered
                <table>
                    <tr>
                        <td id="menucolumn">
                            
    <some HTML output snipped>
           
    Begin creating serialized view for /login.jsp
    End creating serialized view /login.jsp
    Client State: total number of characters written: 2108
    Exiting RenderResponsePhase
    TIMING: Exectution time for phase 'RENDER_RESPONSE 6': 1489
    execute(com.sun.faces.context.FacesContextImpl@1914c67)
    phase(RESTORE_VIEW 1,com.sun.faces.context.FacesContextImpl@1914c67)
    Entering RestoreViewPhase
    servletPath /faces
    pathInfo /login.jsp
    URL pattern of the FacesServlet executing the current request /faces
    Created bean MenuBean successfully
    Postback: Restored view for /login.jsp
    Exiting RestoreViewPhase
    TIMING: Exectution time for phase 'RESTORE_VIEW 1': 27
    phase(APPLY_REQUEST_VALUES 2,com.sun.faces.context.FacesContextImpl@1914c67)
    Entering ApplyRequestValuesPhase
    Set submitted value erger on component
    new value after decodingerger
    Set submitted value erg on component
    new value after decodingerg
    No decoding necessary since the component j_id_id49 is not an instance or a sub class of UIInput
    This command resulted in form submission  ActionEvent queued javax.faces.event.ActionEvent[ source=javax.faces.component.html.HtmlCommandButton@1d6fc09]
    Exiting ApplyRequestValuesPhase
    TIMING: Exectution time for phase 'APPLY_REQUEST_VALUES 2': 12
    phase(PROCESS_VALIDATIONS 3,com.sun.faces.context.FacesContextImpl@1914c67)
    Entering ProcessValidationsPhase
    Created bean LoginPageBean successfully
    No conversion necessary for ergerand converterType class java.lang.String while decoding component j_id_id35
    No conversion necessary for ergand converterType class java.lang.String while decoding component j_id_id43
    Exiting ProcessValidationsPhase
    TIMING: Exectution time for phase 'PROCESS_VALIDATIONS 3': 18
    phase(UPDATE_MODEL_VALUES 4,com.sun.faces.context.FacesContextImpl@1914c67)
    Entering UpdateModelValuesPhase
    TIMING: Exectution time for phase 'UPDATE_MODEL_VALUES 4': 2
    phase(INVOKE_APPLICATION 5,com.sun.faces.context.FacesContextImpl@1914c67)
    Entering InvokeApplicationsPhase
    processAction(j_id_id54)
    TopLink, version: Oracle TopLink Essentials - 2.0 (Build b58g-fcs (09/07/2007))
    Server: unknown
    file:/home/surfk/sun/Micropayment-JSF/dist/gfdeploy/Micropayment-JSF-ejb_jar/-Micropayment-JSF-ejbPU login successful
    Adding Message[sourceId=<<NONE>>,summary=Bad username or password)
    "JSF1013: Unable to find matching navigation case from view ID '/login.jsp' for outcome '' and action '#{LoginPageBean.loginAction}'
    Exiting InvokeApplicationsPhase
    TIMING: Exectution time for phase 'INVOKE_APPLICATION 5': 9512
    render(com.sun.faces.context.FacesContextImpl@1914c67)
    phase(RENDER_RESPONSE 6,com.sun.faces.context.FacesContextImpl@1914c67)
    Entering RenderResponsePhase
    About to render view /login.jsp
    About to execute view /login.jsp
    Before dispacthMessage to viewId /login.jsp
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    After dispacthMessage to viewId /login.jsp
    Completed building view for :
    /login.jsp
    About to render view /login.jsp
    component.getValue() returned
                <table>
                    <tr>
                        <td id="menucolumn">
                            
    Value to be rendered
                <table>
                    <tr>
                        <td id="menucolumn">

    <some HTML output snipped>
           
    Begin creating serialized view for /login.jsp
    End creating serialized view /login.jsp
    Client State: total number of characters written: 2112
    Exiting RenderResponsePhase
    TIMING: Exectution time for phase 'RENDER_RESPONSE 6': 101
  • If you think that the problem you are having is somehow connected to the JSF lifecycle (eg. you are developing custom components, etc.), you can also write a custom debugger class based the on the PhaseListener interface. This is nicely detailed here.
  • Study the JSF framework in detail. If you happen to be Hungarian, you can read the book I've co-authored: Software development on the Java EE platform.
Happy coding!