Can Seam 2.0.2sp1 apps run on Tomcat 5.5.9 with JBoss Embedded?
Question
I'm trying to run the Tomcat with JBoss Embedded jpa booking example. I run the build and deploy the war. I then get the following error:
ERROR [catalina.core.ContainerBase.[Catalina].[localhost].[/jboss-seam-jpa]] Error configuring application listener of class com.sun.faces.config.ConfigureListener java.lang.NoClassDefFoundError: javax/el/CompositeELResolver at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357) at java.lang.Class.getConstructor0(Class.java:2671) at java.lang.Class.newInstance0(Class.java:321) at java.lang.Class.newInstance(Class.java:303) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3618) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4104
I find this class exists in el-api.jar which is not in the classpath. So I add el-api.jar to the WEB-INF/lib directory. I then get the following error:
INFO: JSF1048: PostConstruct/PreDestroy annotations present. ManagedBeans methods marked with these annotations will have said annotations processed. Sep 19, 2008 5:37:50 PM com.sun.faces.config.ConfigureListener installExpressionFactory SEVERE: Error Instantiating ExpressionFactory java.lang.ClassNotFoundException: com.sun.el.ExpressionFactoryImpl at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1332) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1181) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:164) at com.sun.faces.config.ConfigureListener.installExpressionFactory(ConfigureListener.java:1521)
This library appears to be in el-ri.jar or JSP 2.1 jar. Am I doing something wrong? Is there a place that explains how to run seam applications on tomcat 5.5.x? Any help is greatly appreciated!
Solution
I got this to work. I ran ant tomcat55 under the seam/examples/jpa example. This included the el-.jars needed. I then ran 'ant clean' and 'ant jboss-embeded' and manually copied in all of the el-.jars from the tomcat55 make. This got past my problem above. Now I'm able to start tomcat 5.5.9 with embedded JBoss. I can run the booking example now with no problems.
OTHER TIPS
have you looked at the docs, there's also some pretty good info on the forums at www.seamframework.org and also the old forums at www.jboss.org.