As soon as I start using Shale 1.0.4, Ajax4Jsf stops working. I believe the issue is as follows:
1.) Ajax4Jsf depends upon the javax.faces.ViewRoot being an instance of AjaxViewRoot. 2.) Shale depends upon the javax.faces.ViewRoot being an instance of ShaleViewRoot. I believe I am correct in saying that my application can only use one implementation of javax.faces.ViewRoot; the one being used in my case is simply the last jar that is being loaded, which happens to be Shale (I could also specify my own ViewRoot in my WEB-INF faces-config and then niether AjaxViewRoot or ShaleViewRoot will be used). That being the case, is it even possible to use both Ajax4Jsf and Shale in the same application? Can anyone shed some light on my confusion? Why does Shale override the ViewRoot implementation when that immediately stops me from using other 3rd party products that override ViewRoot? A bit of extra information: Shale 1.0.3 does not provide it's own implementation of javax.faces.ViewRoot; that being the case, I can successfully use it with ajax4jsf. Also, I can use ajax4jsf with Shale 1.0.4 if I specify in the following in my own WEB-INF faces-config <component> <component-type>javax.faces.ViewRoot</component-type> <component-class>org.ajax4jsf.framework.ajax.AjaxViewRoot</component-cla ss> <component-extension> <component-family>javax.faces.ViewRoot</component-family> </component-extension> </component> I believe this works simply because my copy of faces-config.xml is the last configuration loaded, so my override takes precedence. However, this can break Shale because now Shale sees an instance of AjaxViewRoot rather than ShaleViewRoot. So I am stuck with not knowing how to make both products work simultaneously.