TxLogService is create via blueprint. TxLogParticipant calls TxLogService
which is passed as a parameter to TxLogParticipant.

CoordinationFilter is create via DS.

I don't know if it helps but entityManager.isOpen() returns true.

Mihael

2015-10-08 13:56 GMT+02:00 Christian Schneider <[email protected]>:

> Hi Mihael,
>
> I do not see any calls to txLogService in this snippet. Is it called in
> coordinationFilter?
> If yes then the question is how coordinationFilter is instantiated and how
> the txLogService is injected into it.
>
> Christian
>
>
> On 08.10.2015 13:49, Mihael Schmidt wrote:
>
> Hi,
>
> the coordination is handled on the same thread (as you can see in the log,
> TxLogParticipant logs on the same thread, the participant calls the service
> which persists data to the db).
>
> REST resource:
>         try {
>             // check permission
>             Coordination coordination = coordinator.peek();
>             User user = (User) coordination.getVariables().get(User.class);
>             if (!user.getRoles().contains("xx.xx")) {
>                 coordinationFilter.fail(new
> WebApplicationException(Status.UNAUTHORIZED));
>                 throw new WebApplicationException(Status.UNAUTHORIZED);
>             }
>
>             try {
>                 SalesProspect updatedPospect = service.update(prospect);
>                 return Response.ok(updatedPospect).build();
>             }
>             catch(Exception e) {
>                 logger.error("Fehler beim Aktualisieren des Interessenten
> " + prospect.getName(), e);
>                 coordinationFilter.fail(e);
>                 throw new
> WebApplicationException(Status.INTERNAL_SERVER_ERROR);
>             }
>         }
>         finally {
>             coordinationFilter.end();
>         }
>
> My real question is: why isn't a new transaction created if none is
> active. The transaction attribute is "Required":
> <bean id="txlogService" class="sdm.txlog.TxLogService">
> <tx:transaction method="*" value="Required" />
> <jpa:context property="entityManager" unitname="sdmTxlog" />
> </bean>
>
> Best regards
>
> Mihael
>
>
> 2015-10-08 13:14 GMT+02:00 Christian Schneider <[email protected]>:
>
>> Hi Mihael,
>>
>> difficult to say without the actual source.
>>
>> The problem occurs when the coordination ends. So maybe this happens in
>> a different thread.
>> See
>> https://osgi.org/javadoc/r5/enterprise/org/osgi/service/coordinator/Participant.html#ended%28org.osgi.service.coordinator.Coordination%29
>>
>> "Participants are required to be thread safe as notification can be made
>> on any thread. "
>>
>> Can you paste the relevant code snippets of SalesProspectResource.update?
>>
>> It might also help to update to the new Aries JPA 2.2.0 version. (Would
>> be a bigger switch though).
>>
>> Christian
>>
>>
>> On 08.10.2015 12:37, Mihael Schmidt wrote:
>>
>> Hi,
>>
>> I got a rest service where I am using multiple persistence units and data
>> sources to store data in different databases using multiple transactions (I
>> don't need all in one transaction). It all happens on multiple threads.
>>
>> I am getting an exception on the last persist where I want to save some
>> log in a database which happens on the same thread where the rest service
>> starts (qtp18495206-81) . It seems that the EntityManager is cleared up
>> before my call to persist. Is that the reason for the exception?
>>
>> 2015-10-08 12:20:46,025 | DEBUG | qtp18495206-81   | context
>>              | 108 - org.apache.aries.jpa.container.context - 1.0.4 |
>> Created a new persistence context
>> org.apache.openjpa.persistence.EntityManagerImpl@1d911f for transaction
>> [Xid:globalId=f2e7446501006f72672e6170616368652e61726965732e7472616e73616374696f6e0000000000000000000000000000,length=64,branchId=0000000000000000000000000000000000000000000000000000000000000000,length=64].
>> 2015-10-08 12:20:46,183 | DEBUG | Thread-52        | context
>>              | 108 - org.apache.aries.jpa.container.context - 1.0.4 |
>> Created a new persistence context
>> org.apache.openjpa.persistence.EntityManagerImpl@1a615e2 for transaction
>> [Xid:globalId=102e7446501006f72672e6170616368652e61726965732e7472616e73616374696f6e0000000000000000000000000000,length=64,branchId=0000000000000000000000000000000000000000000000000000000000000000,length=64].
>> 2015-10-08 12:20:46,186 | DEBUG | Thread-52        | context
>>              | 108 - org.apache.aries.jpa.container.context - 1.0.4 |
>> Clearing up EntityManager
>> org.apache.openjpa.persistence.EntityManagerImpl@1a615e2 as the
>> transaction has completed.
>> 2015-10-08 12:20:46,410 | DEBUG | Thread-52        | context
>>              | 108 - org.apache.aries.jpa.container.context - 1.0.4 |
>> Created a new persistence context
>> org.apache.openjpa.persistence.EntityManagerImpl@3fee6f for transaction
>> [Xid:globalId=112e7446501006f72672e6170616368652e61726965732e7472616e73616374696f6e0000000000000000000000000000,length=64,branchId=0000000000000000000000000000000000000000000000000000000000000000,length=64].
>> 2015-10-08 12:20:46,413 | DEBUG | Thread-52        | context
>>              | 108 - org.apache.aries.jpa.container.context - 1.0.4 |
>> Clearing up EntityManager
>> org.apache.openjpa.persistence.EntityManagerImpl@3fee6f as the
>> transaction has completed.
>> 2015-10-08 12:20:46,491 | DEBUG | Thread-69        | context
>>              | 108 - org.apache.aries.jpa.container.context - 1.0.4 |
>> Created a new persistence context
>> org.apache.openjpa.persistence.EntityManagerImpl@c974a9 for transaction
>> [Xid:globalId=122e7446501006f72672e6170616368652e61726965732e7472616e73616374696f6e0000000000000000000000000000,length=64,branchId=0000000000000000000000000000000000000000000000000000000000000000,length=64].
>> 2015-10-08 12:20:46,493 | DEBUG | Thread-69        | context
>>              | 108 - org.apache.aries.jpa.container.context - 1.0.4 |
>> Clearing up EntityManager
>> org.apache.openjpa.persistence.EntityManagerImpl@c974a9 as the
>> transaction has completed.
>> 2015-10-08 12:20:46,547 | DEBUG | qtp18495206-81   | context
>>              | 108 - org.apache.aries.jpa.container.context - 1.0.4 |
>> Clearing up EntityManager
>> org.apache.openjpa.persistence.EntityManagerImpl@1d911f as the
>> transaction has completed.
>> 2015-10-08 12:20:46,548 | DEBUG | qtp18495206-81   | CoordinationFilter
>>             | 178 - de.sgbs.sdm.rs - 1.3.0 | Coordination ends
>> 2015-10-08 12:20:46,548 | ERROR | qtp18495206-81   | TxLogParticipant
>>             | 184 - de.sgbs.sdm.txlog - 1.3.0 | Error on saving custom log
>> javax.persistence.TransactionRequiredException: There is no currently
>> active transaction.
>> at
>> org.apache.aries.jpa.container.context.transaction.impl.JTAPersistenceContextRegistry.ensureTransaction(JTAPersistenceContextRegistry.java:110)
>> at
>> org.apache.aries.jpa.container.context.transaction.impl.JTAPersistenceContextRegistry.getExistingPersistenceContext(JTAPersistenceContextRegistry.java:82)
>> at
>> org.apache.aries.jpa.container.context.transaction.impl.JTAPersistenceContextRegistry.getCurrentPersistenceContext(JTAPersistenceContextRegistry.java:139)
>> at
>> org.apache.aries.jpa.container.context.transaction.impl.JTAEntityManagerHandler.getPersistenceContext(JTAEntityManagerHandler.java:104)
>> at
>> org.apache.aries.jpa.container.context.transaction.impl.JTAEntityManagerHandler.invoke(JTAEntityManagerHandler.java:182)
>> at com.sun.proxy.$Proxy21.persist(Unknown Source)
>> at sdm.txlog.TxLogService.write(TxLogService.java:218)
>> at sdm.txlog.TxLogParticipant$1.run(TxLogParticipant.java:28)
>> at sdm.txlog.TxLogParticipant.ended(TxLogParticipant.java:31)
>> at
>> org.apache.felix.coordinator.impl.CoordinationImpl.end(CoordinationImpl.java:205)
>> at
>> org.apache.felix.coordinator.impl.CoordinationHolder.end(CoordinationHolder.java:55)
>> at sdm.rs.CoordinationFilter.end(CoordinationFilter.java:144)
>> at sdm.rs.crm.SalesProspectResource.update(SalesProspectResource.java:187)
>> at sun.reflect.GeneratedMethodAccessor52.invoke(Unknown Source)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_75]
>> at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_75]
>> at
>> org.apache.wink.server.internal.handlers.InvokeMethodHandler.handleRequest(InvokeMethodHandler.java:63)[133:org.amdatu.web.rest.wink:2.0.2]
>>
>> I am using transaction attribute "Required".
>>
>> I am running Apache Karaf 3.0.3 with Aries JTA and OpenJPA 2.2.2.
>>
>> Thanx in advance for any help or hint.
>>
>> Best regards
>>
>> Mihael
>>
>> Schulz Gebäudeservice GmbH & Co. KG
>> Dr.-Max-Ilgner-Straße 17
>> 32339 Espelkamp
>> Persönlich haftende Gesellschafterin:
>> Gebäudereinigung Joachim Schulz
>> Verwaltungsgesellschaft mbH
>> Telefon: +49 5772 9100 <%2B49%205772%209100> 0
>> Telefax: +49 5772 9100 <%2B49%205772%209100> 11
>> Email:  <[email protected]>[email protected]
>> Internet:  <http://www.sgbs.de>www.sgbs.de
>> Geschäftsführer: Joachim und Dirk Schulz, Norbert Kosica
>> Handelsregister Bad Oeynhausen: HRA 5902, HRB 8591
>> UST-Id-Nr.: DE 125752702
>>
>>
>>
>> --
>> Christian Schneiderhttp://www.liquid-reality.de
>>
>> Open Source Architecthttp://www.talend.com
>>
>>
>
>
> --
> Mihael Schmidt
> Software und System-Entwicklung
>
> Schulz Gebäudeservice GmbH & Co. KG
> Dr.-Max-Ilgner-Straße 17
> 32339 Espelkamp
> Persönlich haftende Gesellschafterin:
> Gebäudereinigung Joachim Schulz
> Verwaltungsgesellschaft mbH
> Telefon: +49 5772 9100 0
> Telefax: +49 5772 9100 11
> Email:  <[email protected]>[email protected]
> Internet:  <http://www.sgbs.de/>www.sgbs.de
> Geschäftsführer: Joachim und Dirk Schulz, Norbert Kosica
> Handelsregister Bad Oeynhausen: HRA 5902, HRB 8591
> UST-Id-Nr.: DE 125752702
>
>
>
> --
> Christian Schneiderhttp://www.liquid-reality.de
>
> Open Source Architecthttp://www.talend.com
>
>


-- 
Mihael Schmidt
Software und System-Entwicklung

-- 

Schulz Gebäudeservice GmbH & Co. KG
Dr.-Max-Ilgner-Straße 17
32339 Espelkamp
Persönlich haftende Gesellschafterin:
Gebäudereinigung Joachim Schulz
Verwaltungsgesellschaft mbH
Telefon: +49 5772 9100 0
Telefax: +49 5772 9100 11
Email: [email protected]
Internet: www.sgbs.de
Geschäftsführer: Joachim und Dirk Schulz, Norbert Kosica
Handelsregister Bad Oeynhausen: HRA 5902, HRB 8591
UST-Id-Nr.: DE 125752702

Reply via email to