[JBoss JIRA] Created: (JBSEAM-4577) Seam Mail looks up template in wrong context on tomcat with shared seam
by Vasilii Lukoyanov (JIRA)
Seam Mail looks up template in wrong context on tomcat with shared seam
------------------------------------------------------------------------
Key: JBSEAM-4577
URL: https://jira.jboss.org/jira/browse/JBSEAM-4577
Project: Seam
Issue Type: Bug
Components: Mail
Affects Versions: 2.2.0.GA
Environment: Tomcat 6.0.18, Seam 2.2.0.GA (shared)
Reporter: Vasilii Lukoyanov
Assignee: Pete Muir
I've got Tomcat with Seam jars shared among all projects (shared.loader=${catalina.base}/shared/seam/*.jar in catalina.properties). Each app has it's own vhost, and deployed to ROOT context.
Layout is the following:
vhosts/siteA.com/ROOT
vhosts/siteB.com/ROOT
Seam application on siteB.com uses seam mail to send confirmation emails. But when it tries to send a message (template is /layout/1email.xhtml)
the following exception is thrown:
javax.servlet.ServletException: #{mailer.sendPreActivationEmail}: java.lang.IllegalArgumentException: resource doesn't exist: /layout/1email.xhtml
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:164)
at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:141)
at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:90)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:406)
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.IdentityFilter.doFilter(IdentityFilter.java:40)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
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:45)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
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:191)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
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:286)
at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:419)
at org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(AjpAprProtocol.java:378)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
at java.lang.Thread.run(Thread.java:619)
Caused by: javax.faces.FacesException: #{mailer.sendPreActivationEmail}: java.lang.IllegalArgumentException: resource doesn't exist: /layout/1email.xhtml
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
at javax.faces.component.UICommand.broadcast(UICommand.java:387)
at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
... 39 more
After some investigation I tried to put message template /layout/1email.xhtml into siteA.com context (vhosts/siteA.com/ROOT). After that I was able to send messages from siteB.com application.
Component that sends code:
@Name("mailer")
@Scope(ScopeType.CONVERSATION)
public class Mailer {
@In("renderer")
private Renderer _renderer;
public void sendPreActivationEmail(Account aUser) {
Contexts.getConversationContext().set("account", aUser);
_renderer.render("/email/eganov_pre_activate.xhtml");
}
}
Important note: when tomcat is starting, siteA.com loads first.
--
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
12 years, 9 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-3355) SeamExpressionEvaluator gobbles up exceptions
by Wolfgang Schwendt (JIRA)
SeamExpressionEvaluator gobbles up exceptions
----------------------------------------------
Key: JBSEAM-3355
URL: https://jira.jboss.org/jira/browse/JBSEAM-3355
Project: Seam
Issue Type: Bug
Affects Versions: 2.1.0.BETA1
Reporter: Wolfgang Schwendt
Priority: Critical
Rev 8710 of org.jboss.seam.bpm.SeamExpressionEvaluator introduced a serious bug. If the invocation of the method expression (me.invoke(...)) throws an exception such as org.jboss.seam.security.AuthorizationException, the SeamExpressionEvaluator afterwards tries to evaluate the EL expression as a value expression. This of course results in a second exception thrown: PropertyNotFoundException. Consequently, the list "exceptions" has size > 2 (rather than just size==1), which results in SeamExpressionEvaluator throwing an ELException that does not wrap the exception which originally caused the method expression invocation to fail.
The bug was introduced because, compared with earlier versions, the try/catch-blocks for the method expression and value expression evaluation were changed and are now wrong. This is serious because it breaks the handling of any application exception thrown while evaluating the EL method expression, such as AuthorizationException.
--
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
12 years, 9 months