Context:

JSF application running on a Tomcat server

Symptoms:

When you try to access a resource in your appplication- you are greeted with a 404 error

Investigation

Check your error log.

If your exception trace is similar to one of the exceptions mentioned below mentioned below- you are missing one or both of these libraries: Commons-Digester or Commons- BeanUtils. (Note: You need both since Digister is dependent upon BeanUtils.)

SEVERE: Error configuring application listener of class com.sun.faces.config.ConfigureListener
java.lang.NoClassDefFoundError: org.apache.commons.digester.RuleSet

 

OR

SEVERE: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener
java.lang.NoClassDefFoundError: org.apache.commons.beanutils.MethodUtils

Resolution

Download Digister from here http://commons.apache.org/digester/

and BeanUtils from here http://commons.apache.org/beanutils/

You will need to put these libraries under the WEB-INF\lib folder of your application.

PS: If this fixes your problem  – please leave a note here or  if it doesn’t let me know either way

Good luck !!!

 

The error message

Named query not known: my.simple.query
    [junit] org.hibernate.MappingException: Named query not known: relationship.delete_by_userId
    [junit]  at org.hibernate.impl.AbstractSessionImpl.getNamedQuery(AbstractSessionImpl.java:93)
    [junit]  at org.hibernate.impl.SessionImpl.getNamedQuery(SessionImpl.java:1287)

The context

You are using a named query in your application. Named queries are externalized and are coded in the hibernate mapping files rather than the application code

Possible reason(s) for this error

1) The name of the query in the hibernate file doesnt match with what you have in the code. Both should match exactly

2) You have defined the query inside the class definition. A hibernate mapping file can have multiple class definitions (not a recomended or much practised approach though). A named query must exist outside the class definition.

Example(s)

<query name=”my.simple.query”>delete from Users as user where user.id =?</query

Session session = sessionFactory.openSession();
Query query = session.getNamedQuery(“my.simple.query”);
query.setInteger(0,userId);
session.beginTransaction();
query.executeUpdate ();
session.getTransaction().commit();

Did this solve your problem ?

Please let me know. Thanks !!!

© 2011 Technology Cafe Suffusion theme by Sayontan Sinha