Some questions about view duration/life time - jsf-2

In my web project, most of the pages are using View Scoped managed beans.
It's working great, but sometimes, i notice that if i get away from the page for a time, like, 10 minutes, when i return back to the page, everything in the page stops working, and no console errors are shown in the server.
I think this is due to the life of a view, but have found nothing about it.
Where can i find info about it?
Is there a way to configure the life time of a view?
I'm using apache tomcat 7.
Below is my web.xml configuration file:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>AtualyGestao</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>index.jsf</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>home</param-value>
</context-param>

You should see it if you have paid attention to the HTTP response of the ajax request in browser's developer toolset (press F12 in Chrome/Firebug/IE9):
Indeed, the session has expired. An elaborate explanation about why this is a problem for JSF can be found in this answer: javax.faces.application.ViewExpiredException: View could not be restored.
JSF ajax requests have by default no form of feedback in case of exceptions. How to fix this is already answered here: Session timeout and ViewExpiredException handling on JSF/PrimeFaces ajax request.

Related

vaadin 7 missing web.xml file change default page

im new to vaadin but noticed that you can in vaadin 6 set the default page in the web.xml file but in vaadin 7 this has been done away with.
how do i change the default page ?
Thanks
I am not quite sure what you mean by "default page", so I have to make some guesses.
As you say that you are missing the web.xml, you probably mean a project created by Vaadin Plugin for Eclipse or the Maven archetype. By default, the wizard (or Maven archetype) creates a project stub that uses Servlet API 3.0 deployment with #WebServlet annotation for the servlet class, which is a static class nested in the UI class. It can also be a regular (non-nested and non-static) class, but that's how it is in the application stub.
If you choose Servlet API 2.4 for the new Vaadin 7 Eclipse project, it will use web.xml to define the servlet and UI class, as well as their parameters.
You can mix #WebServlet and web.xml deployment, in which case settings done in web.xml override the ones given with #WebServlet annotation.
Default page to serve is not actually a need to be defined since the framwork handles everything, especially with 3.0 servlet implementation.
But sometimes one may need such file (like, for example, to add context listeners for Spring).
So you can either select the option to generate it during project creation or just make a blank web.xml file in WebContent/WEB-INF.
The autogenerated plugin file looks like:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>YOUR_APP_NAME</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

How to handle static content in OrbeonForms 3.9

I trying to upgrade from OrbeonForms version 3.8 to 3.9. I'm using PriorityResourceManagerFactory as follows:
<context-param>
<param-name>oxf.resources.factory</param-name>
<param-value>org.orbeon.oxf.resources.PriorityResourceManagerFactory</param-value>
</context-param>
<!-- Uncomment this for the filesystem resource manager -->
<context-param>
<param-name>oxf.resources.priority.1</param-name>
<param-value>org.orbeon.oxf.resources.FilesystemResourceManagerFactory</param-value>
</context-param>
<context-param>
<param-name>oxf.resources.priority.1.oxf.resources.filesystem.sandbox-directory</param-name>
<param-value>d:/Sources/esb-repository/user-interface</param-value>
</context-param>
<context-param>
<param-name>oxf.resources.priority.2</param-name>
<param-value>org.orbeon.oxf.resources.WebAppResourceManagerFactory</param-value>
</context-param>
<context-param>
<param-name>oxf.resources.priority.2.oxf.resources.webapp.rootdir</param-name>
<param-value>/WEB-INF/resources</param-value>
</context-param>
<context-param>
<param-name>oxf.resources.priority.3</param-name>
<param-value>org.orbeon.oxf.resources.FilesystemResourceManagerFactory</param-value>
</context-param>
<context-param>
<param-name>oxf.resources.priority.3</param-name>
<param-value>org.orbeon.oxf.resources.ClassLoaderResourceManagerFactory</param-value>
</context-param>
I have entry in page-flow.xml:
<files path-info=".+\.(gif|css|pdf|json|js|png|jpg|xsd|ico)"
matcher="oxf:perl5-matcher"/>
Within my directory I keep whole application code and I have file theme/styles/layout.css. In Orbeon 3.8 server path /orbeon/theme/styles/layout.css works perfectly, but not in 3.9.
How to configure it to keep backward compatibility?
I'll assume /orbeon is the context on which you deployed the Orbeon Forms web app.
If you're using Orbeon Forms PE, starting with 3.9 versioned resources are enabled by default, the path requested by the browser needs to be /orbeon/3.14/theme/styles/layout.css, where 3.14 is the app version. If you write /theme/styles/layout.css in your code, Orbeon Forms will automatically rewrite it for you, adding the version number in the HTML it sends to the browser.
Since 3.9, the default app path is prepended when looking up resources. So a request for /orbeon/3.14/theme/styles/layout.css, with versioned resources, or /orbeon/theme/styles/layout.css without versioned resources, will look for the file app/theme/styles/layout.css in your resource directory. So you need to either:
Move your CSS to a different place on disk (move theme under the app directory).
Add theme as a platform path, by adding it to the oxf.url-rewriting.platform-paths property. Most likely this is the option that makes the most sense for you.

JSF 2 error handling doesn't work

I'm trying to do a simple forwarding to an error page in a JSF 2 application. The instructions everywhere seem simple enough but it just doesn't work for me. This is what I tried. I put the following in web.xml:
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/pages/error.jsf</location>
</error-page>
I tried an exception-type java.lang.Exception, and I tried using error-code instead of the exception-type. I also tried to name the page (in the above snippet) error.xhtml, and I tried all this with an error.jsp page. Nothing works.
I'm testing this by simply disconnecting the database server so any attempt to log in causes an exception. And it's being displayed on the screen instead of the error page.
I'm using eclipse, tomcat 7, and myfaces 2.1.4. Also in my WEB-INF/lib I have primefaces-3.0.RC2 and prettyfaces-jsf2-3.3.2.
What am I doing wrong / not doing?
Have you shut down the error mechanisms of Facelets? In you web.xml file, you may need to have the following context-param:
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>false</param-value>
</context-param>
If you also use MyFaces, you need this additional context-param:
<context-param>
<param-name>org.apache.myfaces.ERROR_HANDLING</param-name>
<param-value>false</param-value>
</context-param>
This article may be useful to you.
Did you use any managed bean to process the error? If so, have you declared them? Check out this article.

JSF 2.0 Lifecycle listner

How will i write My custom lifecycle listner for jsf 2
For jsf 1.2 BalusC has provided good tutorial but in JSF2 we do not have faces-config.xml
can we use faces-config.xml.if yes can you please provide me sample..If no then how do we register listners in jsf 2.0
Thanks A Lot
You can still create the file faces-config.xml and put in WEB-INF folder. The header of your faces-config.xml should look like this:
<?xml version='1.0' encoding='UTF-8'?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
// Your configuration here
</faces-config>
Notice that the version is now 2.0.

Spring filters working flow

i am using spring mvc. for login whenever request comes it passes through various Filters to get the flow(as different flow for different types of users). please suggest me a good reference to Spring Filters. or a good example on it. how to configure context.xml,web.xml
Do you need something other than the spring security docs ?
This is the page from the official docs related to filters.
Filters need to be configured in both the application context.xml and the web.xml file in your project. Here are examples of each of these files and also a Login filter that I wrote for my application... Hope it helps.
Web.xml
<filter>
<filter-name>randomFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
</filter>
Filter mappings also need to be specified in this file and the order in which these mappings occur decide which filter is called first.
<filter-mapping>
<filter-name>randomFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
In the application context.xml, we mention the filter path, for example:
<bean id="randomFilter" class="folderPath.RandomFilter"/>

Resources