[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-3151) SpringTransaction : error when using events.raiseTransactionSuccessEvent
by Gonzalez Adrian (JIRA)
SpringTransaction : error when using events.raiseTransactionSuccessEvent
------------------------------------------------------------------------
Key: JBSEAM-3151
URL: http://jira.jboss.com/jira/browse/JBSEAM-3151
Project: Seam
Issue Type: Bug
Components: Spring
Affects Versions: 2.0.2.SP1
Reporter: Gonzalez Adrian
This issue happens when using the patch http://jira.jboss.com/jira/browse/JBSEAM-2662.
Spring/Jta Status code are converted fine, but I run now in a bug whenever I call events.raiseTransactionSuccessEvent when using Spring transactionManager.
To reproduce it, just run spring sample and change in HotelBookingAction the line events.raiseEvent("bookingConfirmed") with events.raiseTransactionSuccessEvent("bookingConfirmed").
You'll have the following stackTrace [1] when you confirm a booking.
This is because it's buggy to call data access code in Spring TransactionSynchronization.afterCompletion().
Quote from Spring javadoc (http://static.springframework.org/spring/docs/2.5.x/api/org/springframewo...) :
NOTE: The transaction will have been committed already, but the transactional resources might still be active and accessible. As a consequence,
any data access code triggered at this point will still "participate" in the original transaction,
allowing to perform some cleanup (with no commit following anymore!), unless it explicitly declares that it needs to run in a separate transaction.
Hence: Use PROPAGATION_REQUIRES_NEW for any transactional operation that is called from here.
I've modified Seam's SpringTransaction synchronization logic to correct this issue.
Instead of using Spring extension points (TransactionSynchronization), I've just replicated UTTransaction logic (just using
seam's Synchronizations).
[1]
[07/07/08 11:34:03:468 CEST] 00000026 SystemOut O ERROR [TransactionSynchronizationUtils ] user= - TransactionSynchronization.afterCompletion threw exception
org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is java.lang.IllegalStateException: Already value [org.springframework.orm.jpa.EntityManagerHolder@4c464c46] for key [org.jboss.seam.ioc.spring.SeamManagedEntityManagerFactoryBean@16e616e6] bound to thread [WebContainer : 0]
Caused by:
java.lang.IllegalStateException: Already value [org.springframework.orm.jpa.EntityManagerHolder@4c464c46] for key [org.jboss.seam.ioc.spring.SeamManagedEntityManagerFactoryBean@16e616e6] bound to thread [WebContainer : 0]
at org.springframework.transaction.support.TransactionSynchronizationManager.bindResource(TransactionSynchronizationManager.java:163)
at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:359)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:350)
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:262)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:102)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:630)
at org.jboss.seam.example.spring.BookingService$$EnhancerByCGLIB$$df01af10.findBookingsByUsername(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:31)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:42)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.async.AsynchronousInterceptor.aroundInvoke(AsynchronousInterceptor.java:50)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:166)
at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:102)
at org.jboss.seam.example.spring.BookingService_$$_javassist_3.findBookingsByUsername(BookingService_$$_javassist_3.java)
at org.jboss.seam.example.spring.BookingListAction.getBookings(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:31)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:46)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:42)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.core.SynchronizationInterceptor.aroundInvoke(SynchronizationInterceptor.java:32)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:166)
at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:102)
at org.jboss.seam.example.spring.BookingListAction_$$_javassist_4.getBookings(BookingListAction_$$_javassist_4.java)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:125)
at org.jboss.seam.Component.callComponentMethod(Component.java:2092)
at org.jboss.seam.core.Events.raiseEvent(Events.java:84)
at org.jboss.seam.async.AsynchronousEvent.call(AsynchronousEvent.java:27)
at org.jboss.seam.async.Asynchronous.executeInContexts(Asynchronous.java:76)
at org.jboss.seam.async.Asynchronous.execute(Asynchronous.java:45)
at org.jboss.seam.async.TransactionSuccessEvent.afterCompletion(TransactionSuccessEvent.java:24)
at Rev7677SpringTransaction$JtaSpringSynchronizationAdapter.afterCompletion(Unknown Source)
at org.springframework.transaction.support.TransactionSynchronizationUtils.invokeAfterCompletion(TransactionSynchronizationUtils.java:133)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.invokeAfterCompletion(AbstractPlatformTransactionManager.java:904)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion(AbstractPlatformTransactionManager.java:879)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:707)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:632)
at Rev7677SpringTransaction.commit(Unknown Source)
at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:603)
at org.jboss.seam.jsf.SeamPhaseListener.handleTransactionsAfterPhase(SeamPhaseListener.java:341)
at org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:241)
at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:192)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:280)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:989)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:930)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145)
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.RedirectFilter.doFilter(RedirectFilter.java:45)
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.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
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.servlet.SeamFilter.doFilter(SeamFilter.java:158)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:766)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:674)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:498)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:464)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:90)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:744)
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1455)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:113)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:454)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:383)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
16 years, 10 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-2616) <s:transformImageSize> fills transparent areas with white background
by Manfred Gleirscher (JIRA)
<s:transformImageSize> fills transparent areas with white background
--------------------------------------------------------------------
Key: JBSEAM-2616
URL: http://jira.jboss.com/jira/browse/JBSEAM-2616
Project: JBoss Seam
Issue Type: Bug
Components: JSF Controls
Affects Versions: 2.0.0.GA
Environment: Windows, Jboss 4.2.1, Facelets
Reporter: Manfred Gleirscher
Priority: Minor
if a png-image containing transparent areas is scaled, the transparent areas get filled with white color.
I created my own transformImageSize-component which works properly.
Its applyTransformation method looks like that:
<code>
public void applyTransform(Image image) throws IOException {
...........
BufferedImage in = image.getBufferedImage();
GraphicsConfiguration gc = in.createGraphics().getDeviceConfiguration();
BufferedImage out = gc.createCompatibleImage(scaledWidth, scaledHeight,
Transparency.BITMASK);
Graphics2D g2d = out.createGraphics();
g2d.setComposite(AlphaComposite.Src);
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g2d.drawImage(in, 0, 0, scaledWidth, scaledHeight, null);
g2d.dispose();
image.setBufferedImage(out);
}
</code>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
16 years, 11 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-3412) .page.xml are only loaded for pages with .xhtml extesnion.
by Prashant Kadam (JIRA)
.page.xml are only loaded for pages with .xhtml extesnion.
----------------------------------------------------------
Key: JBSEAM-3412
URL: https://jira.jboss.org/jira/browse/JBSEAM-3412
Project: Seam
Issue Type: Bug
Affects Versions: 2.1.0.BETA1
Environment: JBoss
Reporter: Prashant Kadam
I have a facelete pages with '.jspx' extension. It seems that pages with only .xhtml extensions are mapped for page orchestration. Here's the code from org.jboss.seam.navigation.Pages.java file :
private void parsePages(Set<String> ...fileNames)
{
Set<String> mergedFileNames = new HashSet<String>();
for (Set<String> f : fileNames)
{
mergedFileNames.addAll(f);
}
for (String fileName: mergedFileNames)
{
String viewId = "/" + fileName.substring(0,fileName.length()-".page.xml".length()) + ".xhtml"; // needs more here
InputStream stream = ResourceLoader.instance().getResourceAsStream(fileName);
if (stream==null)
{
log.info("no pages.xml file found: " + fileName);
}
else
{
log.debug("reading pages.xml file: " + fileName);
parse(stream,viewId);
}
}
}
--
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
16 years, 11 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-3743) Renderer gets confuesed when sending of email throws exception
by Alexander Sparkowsky (JIRA)
Renderer gets confuesed when sending of email throws exception
--------------------------------------------------------------
Key: JBSEAM-3743
URL: https://jira.jboss.org/jira/browse/JBSEAM-3743
Project: Seam
Issue Type: Bug
Components: Mail
Affects Versions: 2.1.0.SP1, 2.1.0.GA
Environment: Mac OS X 10.5.5, Java 5, JBoss 4.0.5 modified for seam 2.x
Reporter: Alexander Sparkowsky
Assignee: Pete Muir
Attachments: emailtest.xhtml
When sending of an email fails and an exception is thrown (i.e. mail server not available) the renderer seems to get into a wrong state.
<s:link> present on the page get the application context "project". So "/myseamapp/foo/bar" becomes "/project/foo/bar".
If the action that is trying to send the mail is called by <s:link> this link gets the path of the email view itself (including the "project" application context).
I've attached a Bean sending the email, the email template (/test.xhtml) and a simple view.
This is the mail session configuration from components.xml
<mail:mail-session host="localhost" port="2525" username="test" password="test" />
--
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
16 years, 11 months