Hi Gerhard, thanks for answering. Nice to see that somebody cares. your code isn't valid with cdi. >
I'm surprised. Why? Could you give me a reason? I've tried both of your hints also. But still no luck. ... just create a cdi-stereotype annotation (e.g. @Service) and annotate > that one with both interceptor-annotations. > // btw. to be honest, I've already created this stereotype annotation, exactly with name "@Service" ;-) I guess my whole problem is about the order of the interceptors. My custom *@DetectIntegrityConstraintViolation* is processed first, before *@Transactional* - thus exception during execution of the former interceptor. If yes how to solve this? Any other clues? Greg 2015-09-19 18:16 GMT+02:00 Gerhard Petracek <[email protected]>: > hi greg, > > you are very welcome to ask questions on this list. > (helping deltaspike-users is the main intention here...) > > @your issue: > your code isn't valid with cdi. if you don't like to use both > interceptor-annotations in your service-classes, just create a > cdi-stereotype annotation (e.g. @Service) and annotate that one with both > interceptor-annotations. > > regards, > gerhard > > > > 2015-09-19 17:56 GMT+02:00 Grzesiek <[email protected]>: > > > Hi all, > > > > It is my first post here, usually I would use StackOverflow, but there is > > almost none questions/ answers tagged with DeltaSpike. > > > > Sorry for wasting your precious time. But I'm struggling for a couple of > > hours with not working @Transactional interceptor from > > *deltaspike-jpa-module* inside my own interceptor. > > > > Details: > > My own interceptor: @DetectIntegrityConstraintViolationInterceptor needs > to > > have injected an EntityManager instance, but unfortunately I'm always > > getting "*java.lang.IllegalStateException: Transaction not active*" > inside > > this interceptor (injection of EntityManager works fine, but transaction > is > > not started automatically). > > > > Do somebody know why? > > > > My use case is quite simple: one service, marked with @Transactional, and > > its one method is also annotated with > > @DetectIntegrityConstraintViolationInterceptor. > > > > I've been trying blindly a couple of combinations, but none works: > > * I've marked also my interceptor with @Transactional > > * I've marked also both my Interceptor and InterceptorBinding with > > @Transactional > > > > Simplified code: > > > > @ManagedBean // make it a CDI bean > > > @Interceptor > > > @DetectIntegrityConstraintViolation > > > public class DetectIntegrityConstraintViolationInterceptor { > > > > > > @Inject > > > private EntityManager em; > > > > > > @AroundInvoke > > > > > // @Transactional // ALSO BLINDLY TRIED THIS, but no luck > > > > > public Object processInvocation(InvocationContext ctx) > > > throws Exception { > > > Object o = null; > > > try { > > > o = ctx.proceed(); > > > em.flush(); // THIS CAUSES EXCEPTION, AS > TRANSACTION > > > DOESN'T EXIST > > > } catch (PersistenceException ex) { > > > // .... > > > } > > > return o; > > > } > > > > > } > > > > > > > Service class looks like: > > > > import org.apache.deltaspike.jpa.api.transaction.Transactional; > > > > > > > > > > @Transactional > > > public class MyServiceBean implements MyService { > > > > > > @Inject > > > EntityManager em; > > > > > > @DetectIntegrityConstraintViolation > > > public ResponseEntity<User> createUser(User user) { > > > em.persist(user); > > > } > > > } > > > > > > > Tip: EntityManager was tried both: @TransactionScoped and @RequestScoped > - > > result similar, only message was a bit different ;-) > > > > Any clues? > > Ps. I'm sorry, if above code is not readable, bu I don't know how to > format > > code inside an email. > > > > Libs versions used: > > * deltaspike-jpa-module-api 1.4.1 > > * weld-servlet-core 2.2.0.Final > > * JDK 1.7 > > > > Kind regards > > Greg Demecki > > >
