[jboss-user] [JBoss Seam] - How to use Seam without persistence?

Kragoth do-not-reply at jboss.com
Wed Oct 10 01:45:10 EDT 2007


Hi all,

I have a very unusual task at my work and I'm struggeling to find a way to accomplish what my team leader wants.

We are writing an app that is using Spring for transaction management and for some *unknown/stupid* reason they do not want seam to handle persistence. However, I am running into all sorts of problems at the moment trying to set seam up without any persistence information.

All we really want from seam is how much easier it makes writing the jsf side of things.

First problem I'm having. If i disable transactions in components.xml using:
<core:init transaction-management-enabled="false"/>

I get the following error on every request a browswer makes to a page.
2007-10-10 15:32:29,898 ERROR [http-8080-1] contexts.Contexts (Contexts.java:335) - could not discover transaction status

If I just put in the components.xml the following:
<core:init debug="true"/>

I get the following error:

  | 2007-10-10 15:38:08,993 ERROR [http-8080-1] jsf.SeamPhaseListener (SeamPhaseListener.java:122) - uncaught exception
  | java.lang.RuntimeException: exception invoking: getTransaction
  |         at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:135)
  |         at org.jboss.seam.Component.callComponentMethod(Component.java:2087)
  |         at org.jboss.seam.Component.unwrap(Component.java:2113)
  |         at org.jboss.seam.Component.getInstance(Component.java:1892)
  |         at org.jboss.seam.Component.getInstance(Component.java:1857)
  |         at org.jboss.seam.Component.getInstance(Component.java:1834)
  |         at org.jboss.seam.Component.getInstance(Component.java:1829)
  |         at org.jboss.seam.transaction.Transaction.instance(Transaction.java:36)
  |         at org.jboss.seam.jsf.SeamPhaseListener.handleTransactionsBeforePhase(SeamPhaseListener.java:301)
  |         at org.jboss.seam.jsf.SeamPhaseListener.beforeServletPhase(SeamPhaseListener.java:142)
  |         at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:116)
  |         at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:222)
  |         at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
  |         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  |         at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:307)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  |         at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
  |         at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
  |         at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  |         at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
  |         at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  |         at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
  |         at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  |         at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
  |         at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
  |         at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
  |         at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  |         at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
  |         at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  |         at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
  |         at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  |         at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:150)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  |         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  |         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
  |         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
  |         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
  |         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  |         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
  |         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
  |         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
  |         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  |         at java.lang.Thread.run(Thread.java:619)
  | Caused by: javax.naming.NamingException: Cannot create resource instance
  |         at org.apache.naming.factory.TransactionFactory.getObjectInstance(TransactionFactory.java:113)
  |         at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
  |         at org.apache.naming.NamingContext.lookup(NamingContext.java:793)
  |         at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
  |         at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
  |         at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
  |         at org.apache.naming.SelectorContext.lookup(SelectorContext.java:137)
  |         at javax.naming.InitialContext.lookup(InitialContext.java:392)
  |         at org.jboss.seam.transaction.Transaction.getUserTransaction(Transaction.java:79)
  |         at org.jboss.seam.transaction.Transaction.createUTTransaction(Transaction.java:71)
  |         at org.jboss.seam.transaction.Transaction.getTransaction(Transaction.java:44)
  |         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  |         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |         at java.lang.reflect.Method.invoke(Method.java:597)
  |         at org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
  |         at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:125)
  |         ... 46 more
  | 

I have looked at the Spring example and to be quite honest I'm relatively inexperienced in Java and am not sure if the Spring example is doing what I want to achieve. That is if it is even possible.

Could someone point me in the direction I should be going?

I'm pretty sure that it has something to do with components.xml but I'm confused as to what I have to put in there to make it all work.

Anyway here are my files.

web.xml

  | <?xml version="1.0" encoding="UTF-8"?>
  | <web-app version="2.5"
  |          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-app_2_5.xsd">
  | 
  |     <welcome-file-list>
  |         <welcome-file>web/blah.html</welcome-file>
  |     </welcome-file-list>
  |     
  |     <context-param>
  | 		<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
  | 		<param-value>com.sun.facelets.FaceletViewHandler</param-value>
  | 	</context-param>
  | 	
  | 	<context-param>
  | 		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  | 		<param-value>client</param-value>
  | 	</context-param>
  | 	
  | 	<context-param>
  | 		<param-name>facelets.DEVELOPMENT</param-name>
  | 		<param-value>true</param-value>
  | 	</context-param>
  | 	
  | 	<context-param>
  | 		<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
  | 		<param-value>.xhtml</param-value>
  | 	</context-param>
  | 	
  | 	<context-param>
  |         <param-name>contextConfigLocation</param-name>
  |         <param-value>
  |             classpath:spring-gekko/spring-gekko-services-context.xml
  |             classpath:spring-gekko/spring-gekko-web-context.xml
  |         </param-value>
  |     </context-param>
  |     
  |     <!-- Ajax4jsf (must come first!) -->
  | 	<filter>
  | 		<display-name>RichFaces Filter</display-name>
  | 		<filter-name>richfaces</filter-name>
  | 		<filter-class>org.ajax4jsf.Filter</filter-class>
  | 	</filter>
  | 	
  | 	<filter>
  | 		<filter-name>Seam Filter</filter-name>
  | 		<filter-class>org.jboss.seam.web.SeamFilter</filter-class>
  | 	</filter>
  | 	
  | 	<filter-mapping>
  | 		<filter-name>richfaces</filter-name>
  | 		<servlet-name>Faces Servlet</servlet-name>
  | 		<dispatcher>REQUEST</dispatcher>
  | 		<dispatcher>FORWARD</dispatcher>
  | 		<dispatcher>INCLUDE</dispatcher>
  | 	</filter-mapping>
  | 	
  | 	<filter-mapping>
  | 		<filter-name>Seam Filter</filter-name>
  | 		<url-pattern>/*</url-pattern>
  | 	</filter-mapping>
  | 
  | 	<!-- Spring -->
  |     <listener>
  |         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  |     </listener>
  |     
  |     <!-- Seam -->
  | 	<listener>
  | 		<listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
  | 	</listener>
  | 	
  | 	<!-- JSF -->
  | 	<listener>
  | 		<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
  | 	</listener>
  | 	
  | 	<servlet>
  | 		<servlet-name>Seam Resource Servlet</servlet-name>
  | 		<servlet-class>org.jboss.seam.servlet.ResourceServlet</servlet-class>
  | 	</servlet>
  | 	
  | 	<servlet>
  | 		<servlet-name>Faces Servlet</servlet-name>
  | 		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  | 		<load-on-startup>1</load-on-startup>
  | 	</servlet>
  | 
  |     <servlet>
  |         <servlet-name>Some Application Logic</servlet-name>
  |         <servlet-class>gekko.web.manualservlet.SomeApplicationLogicServlet</servlet-class>
  |         <load-on-startup>100</load-on-startup>
  |     </servlet>
  | 
  |     <servlet>
  |         <servlet-name>XmlRpcDispatcher</servlet-name>
  |         <servlet-class>gekko.web.remote.xmlrpc.XmlRpcDispatcher</servlet-class>
  |         <init-param>
  |             <description>Sets, whether the servlet supports vendor extensions for XML-RPC.</description>
  |             <param-name>enabledForExtensions</param-name>
  |             <param-value>false</param-value>
  |         </init-param>
  |         <init-param>
  |             <description>If the client is to receive the server exception message</description>
  |             <param-name>enabledForExceptions</param-name>
  |             <param-value>true</param-value>
  |         </init-param>
  |         <load-on-startup>1</load-on-startup>
  |     </servlet>
  |     
  |     <servlet-mapping>
  | 		<servlet-name>Seam Resource Servlet</servlet-name>
  | 		<url-pattern>/seam/resource/*</url-pattern>
  | 	</servlet-mapping>
  | 	
  | 	<servlet-mapping>
  | 		<servlet-name>Faces Servlet</servlet-name>
  | 		<url-pattern>*.jsf</url-pattern>
  | 	</servlet-mapping>
  | 
  |     <servlet-mapping>
  |         <servlet-name>XmlRpcDispatcher</servlet-name>
  |         <url-pattern>/xmlrpc</url-pattern>
  |     </servlet-mapping>
  | 
  |     <servlet-mapping>
  |         <servlet-name>Some Application Logic</servlet-name>
  |         <url-pattern>/someApplicationLogic</url-pattern>
  |     </servlet-mapping>
  | 
  |     <session-config>
  |         <session-timeout>10</session-timeout>
  |     </session-config>
  | 
  | </web-app>
  | 

faces-config.xml

  | <?xml version="1.0" encoding="UTF-8"?>
  | <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
  |  	xmlns:xi="http://www.w3.org/2001/XInclude"
  |  	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_1_2.xsd">
  | 
  | 	<!-- Facelets support -->
  |     <application>
  |         <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
  |         <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
  |     </application>
  | 	
  | </faces-config>
  | 

and last but not least
components.xml

  | <?xml version="1.0" encoding="UTF-8"?>
  | <components xmlns="http://jboss.com/products/seam/components"
  |             xmlns:core="http://jboss.com/products/seam/core"
  |             xmlns:security="http://jboss.com/products/seam/security"
  |             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  |             xmlns:web="http://jboss.com/products/seam/web"
  |             xsi:schemaLocation=
  |                 "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.0.xsd
  |                  http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.0.xsd
  |                  http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.0.xsd
  |                  http://jboss.com/products/seam/web http://jboss.com/products/seam/web-2.0.xsd">
  | 
  | 	<core:init debug="true"/>
  |     
  | </components>
  | 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4093262#4093262

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4093262



More information about the jboss-user mailing list