[jbossseam-issues] [JBoss JIRA] Commented: (JBSEAM-3555) SeamMailAgain

Stephane Epardaud (JIRA) jira-events at lists.jboss.org
Fri Jun 5 10:21:15 EDT 2009


    [ https://jira.jboss.org/jira/browse/JBSEAM-3555?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12470806#action_12470806 ] 

Stephane Epardaud commented on JBSEAM-3555:
-------------------------------------------

I see this in the code of Seam 2.1.2.CR2:

       WeakReference<ClassLoader> ref = (WeakReference<ClassLoader>)ctx.getAttribute("seam.context.classLoader");
       if (ref == null || ref.get() == null) {
           log.warn("Failed to bootstrap context classloader. Facelets may not work properly from MDBs");
       } else {
           Thread.currentThread().setContextClassLoader(ref.get());
       }    

I think this is wrong because there is no guarantee that calling ref.get() two times will return the same non-null value.

I think weak references need to be made strong before one can decide whether they are still valid or not:

       WeakReference<ClassLoader> ref = (WeakReference<ClassLoader>)ctx.getAttribute("seam.context.classLoader");
       ClassLoader cl = ref == null ? null : ref.get();
       if (cl == null) {
           log.warn("Failed to bootstrap context classloader. Facelets may not work properly from MDBs");
       } else {
           Thread.currentThread().setContextClassLoader(cl);
       }    


> SeamMailAgain
> -------------
>
>                 Key: JBSEAM-3555
>                 URL: https://jira.jboss.org/jira/browse/JBSEAM-3555
>             Project: Seam
>          Issue Type: Bug
>    Affects Versions: 2.1.0.CR1
>         Environment: JBoss AS 4.2.1.GA
> JBoss Seam 2.1.0-SNAPSHOT (10.10. HudsonNo330)
>            Reporter: Markus Heidt
>            Assignee: Pete Muir
>             Fix For: 2.1.2.CR1
>
>         Attachments: RendererFacesContextFactory.java, seam-cl-issues-rev10253.diff, seam_cl_issues_rev10289.diff, SeamMailError-server.log, server.log
>
>
> Simple Mailing via Renderer doesn't work.
> 'Seam-gen'erated a new project and added a new action 'sendMail'
> Added the line to the action code:
> Renderer.instance().render("/simple.xhtml");
> simple.xhtml is a modified version of the seam example (without #{person})
> Error after executing the action:
> 2008-10-14 11:40:21,847 FATAL [javax.enterprise.resource.webcontainer.jsf.application] org.jboss.seam.InstantiationException: Could not instantiate Seam component: org.jboss.seam.ui.facelet.facesContextFactory
> javax.faces.el.EvaluationException: org.jboss.seam.InstantiationException: Could not instantiate Seam component: org.jboss.seam.ui.facelet.facesContextFactory
> 	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:91)
> 	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
> ...
> Caused by: java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.context.FacesContextFactory
> 	at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:256)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the seam-issues mailing list