Agreed :)

The third trace essentially says your transaction is starting. But there is no 
matching trace to say it commited :(
In error cases though you will get another trace entry, so by the looks all 
your transactions succeed ?!

On 16 Nov 2010, at 13:08, Charles Moulliard wrote:

> BTW, I have enable tracing mode for the class org.apache.aries.transaction 
> but the trace does not report begin and commit or rollback
> 
> 14:05:42,952 | DEBUG | tenerContainer-1 | TxComponentMetaDataHelperImpl    | 
> on.TxComponentMetaDataHelperImpl  185 | 271 - 
> org.apache.aries.transaction.blueprint - 0.2.0.incubating | Getting the 
> txAttribute for the component {0} and method {1}
> 14:05:42,952 | DEBUG | tenerContainer-1 | TxComponentMetaDataHelperImpl    | 
> on.TxComponentMetaDataHelperImpl  197 | 271 - 
> org.apache.aries.transaction.blueprint - 0.2.0.incubating | Return the 
> txAttribute {0} for the component and method
> 14:05:42,953 | DEBUG | tenerContainer-1 | TxInterceptorImpl                | 
> es.transaction.TxInterceptorImpl  110 | 271 - 
> org.apache.aries.transaction.blueprint - 0.2.0.incubating | Method: public 
> void 
> org.apache.camel.example.reportincident.dao.impl.IncidentDAOImpl.saveIncident(org.apache.camel.example.reportincident.model.Incident),
>  has transaction strategy: REQUIRED
> 1
> 
> This should be nice to have this info because for the moment we have no idea 
> if the transaction occurs or not.
> 
> On 16/11/10 13:44, Charles Moulliard wrote:
>> You are right. I made a mistake in my code to simulate an error + rollback
>> 
>> On 16/11/10 12:21, Valentin Mahrwald wrote:
>>> I am a bit confused by the scenario. If I understand this correctly the 
>>> saveIncident method throws an exception and catches it inside the method 
>>> itself. So the transaction that spans around the saveIncident method would 
>>> be unaffected ?!
>>> 
>>> What are you trying to simulate?
>>> 
>>> Just looking over it there is not a lot of trace. However, 
>>> org.apache.aries.transaction.TxInterceptorImpl logs (at debug) when 
>>> transactions start and if they fail.
>>> 
>>> On 16 Nov 2010, at 10:37, Charles Moulliard wrote:
>>> 
>>>> That does not work. In fact I'm not even sure that a transaction has been 
>>>> initiated
>>>> 
>>>> I have made the following modification
>>>> 
>>>> 1) DAO
>>>> 
>>>> <bean id="incidentDAO"
>>>>        
>>>> class="org.apache.camel.example.reportincident.dao.impl.IncidentDAOImpl">
>>>> <!--<tx:transaction method="*" value="Required" />  -->
>>>> <jpa:context property="entityManager" unitname="ReportIncident" />
>>>> </bean>
>>>> 
>>>> 2) Service
>>>> 
>>>> <bean id="incidentService" 
>>>> class="org.apache.camel.example.reportincident.service.impl.IncidentServiceImpl">
>>>> 
>>>> <tx:transaction method="*" value="Required" />
>>>> 
>>>> <property name="incidentDAO">
>>>> <reference 
>>>> interface="org.apache.camel.example.reportincident.dao.IncidentDAO"/>
>>>> </property>
>>>> 
>>>> </bean>
>>>> 
>>>> 3) Simulation of an error
>>>> 
>>>> public class IncidentServiceImpl implements IncidentService {
>>>> 
>>>>    private static final transient Log LOG = 
>>>> LogFactory.getLog(IncidentServiceImpl.class);
>>>> 
>>>>    /** The incident dao. */
>>>>    private IncidentDAO incidentDAO;
>>>> 
>>>>    public void saveIncident(Incident incident) {
>>>> 
>>>>        try {
>>>>            getIncidentDAO().saveIncident(incident);
>>>>            throw new Exception(">>  Generate Error to simulate RollBack");
>>>>        } catch (RuntimeException e) {
>>>>            e.printStackTrace();
>>>>        }  catch (Exception ex) {
>>>>            ex.printStackTrace();
>>>>        }
>>>> 
>>>>    }
>>>> 
>>>> Is there a way to trace in log the Aries Transaction ?
>>>> 
>>>> Regards,
>>>> 
>>>> Charles
>>>> 
>>>> On 16/11/10 10:49, Valentin Mahrwald wrote:
>>>>> On 16 Nov 2010, at 09:42, Charles Moulliard wrote:
>>>>> 
>>>>>> There was a conflict with another ServiceMix bundle providing too jndi 
>>>>>> context. I have remove it and restart my project. Everything works fine.
>>>>>> 
>>>>>> This is easier to configure compare to Spring + Hibernate stuffs on 
>>>>>> OSGI. I will produce a tutorial with camel + aries + jpa + transaction + 
>>>>>> wicket about that and show How Aries JPA/Transaction simplifies our 
>>>>>> lives on OSGI platform.
>>>>>> 
>>>>>> Question : In all the examples (Blog, AriesTrader), the transaction is 
>>>>>> defined in the DAO layer (= layer containing the entityManager). Could 
>>>>>> it be possible that I define the tx within the Service layer (in charge 
>>>>>> to call the DAO) ?
>>>>> Yes, for all I know that should work. The JPA and Transaction extensions 
>>>>> are entirely independent. The transaction extensions manages the 
>>>>> transaction bound to the current thread while the JPA extension manages 
>>>>> EntityManagers (and -Factories) that access
>>>>> the transaction currently active on the thread.
>>>>> 
>>>>>> Regards,
>>>>>> 
>>>>>> Charles
>>>>>> 
>>>>>> On 16/11/10 10:26, Alasdair Nottingham wrote:
>>>>>>> That is very odd. Something has not worked because the stack trace 
>>>>>>> shows the InitialContextFactoryBuilder has not been registered.
>>>>>>> 
>>>>>>> Could there be a timing issue? Perhaps the jndi bundle starts after 
>>>>>>> your test. Certainly the jndi bundle has the highest id.
>>>>>>> 
>>>>>>> Alasdair Nottingham
>>>>>>> 
>>>>>>> On 16 Nov 2010, at 09:11, Charles Moulliard<[email protected]>    
>>>>>>> wrote:
>>>>>>> 
>>>>>>>> Yes. The Aries JNDI bundle is started
>>>>>>>> 
>>>>>>>> [ 178] [Active     ] [            ] [       ] [   60] Apache Aries 
>>>>>>>> JNDI Bundle (0.2.0.incubating)
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On 16/11/10 09:52, Alasdair Nottingham wrote:
>>>>>>>>> Hi,
>>>>>>>>> 
>>>>>>>>> Have you deployed and started the jndi bundle?
>>>>>>>>> 
>>>>>>>>> Alasdair
>>>>>>>>> 
>>>>>>>>> On 16 Nov 2010, at 08:18, Charles Moulliard<[email protected]>     
>>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> Hi,
>>>>>>>>>> 
>>>>>>>>>> Based on the Blog example of Aries, I have created a small project 
>>>>>>>>>> that I deploy on Fuse ESB (=Apache ServiceMix 4). The project 
>>>>>>>>>> includes a DAO layer (=JPA), Service layer, Camel route (where a 
>>>>>>>>>> bean calls my service layer).
>>>>>>>>>> 
>>>>>>>>>> The following error is reported :
>>>>>>>>>> 
>>>>>>>>>> Caused by: java.lang.RuntimeException: The DataSource 
>>>>>>>>>> osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdb)
>>>>>>>>>>  could not be used.
>>>>>>>>>>    at 
>>>>>>>>>> org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getDs(DelayedLookupDataSource.java:47)
>>>>>>>>>>    at 
>>>>>>>>>> org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getConnection(DelayedLookupDataSource.java:60)
>>>>>>>>>>    at 
>>>>>>>>>> org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:137)
>>>>>>>>>>    at 
>>>>>>>>>> org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:112)
>>>>>>>>>>    at 
>>>>>>>>>> org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:239)
>>>>>>>>>>    ... 100 more
>>>>>>>>>> Caused by: javax.naming.NoInitialContextException: Need to specify 
>>>>>>>>>> class name in environment or system property, or as an applet 
>>>>>>>>>> parameter, or in an application resource file:  
>>>>>>>>>> java.naming.factory.initial
>>>>>>>>>>    at 
>>>>>>>>>> javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
>>>>>>>>>>  
>>>>>>>>>>    at 
>>>>>>>>>> javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)[:1.6.0_22]
>>>>>>>>>>    at 
>>>>>>>>>> javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)[:1.6.0_22]
>>>>>>>>>>    at 
>>>>>>>>>> javax.naming.InitialContext.lookup(InitialContext.java:392)[:1.6.0_22]
>>>>>>>>>>  
>>>>>>>>>>    at 
>>>>>>>>>> org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getDs(DelayedLookupDataSource.java:43)
>>>>>>>>>> 
>>>>>>>>>> Here is the bundle that I deploy to use Aries
>>>>>>>>>> 
>>>>>>>>>> [   7] [Active     ] [Created     ] [       ] [   20] Apache Aries 
>>>>>>>>>> Blueprint Bundle (0.2.0.incubating)
>>>>>>>>>> [  49] [Active     ] [            ] [       ] [   60] Apache Aries 
>>>>>>>>>> Transaction Manager (0.2.0.incubating)
>>>>>>>>>> [ 167] [Active     ] [Created     ] [       ] [   60] Aries JPA 
>>>>>>>>>> Container blueprint integration for Aries blueprint 
>>>>>>>>>> (0.2.0.incubating)
>>>>>>>>>> [ 170] [Active     ] [Created     ] [       ] [   60] Apache Aries 
>>>>>>>>>> Transaction Blueprint (0.2.0.incubating)
>>>>>>>>>> [ 171] [Active     ] [            ] [       ] [   60] Aries JPA 
>>>>>>>>>> Container (0.2.0.incubating)
>>>>>>>>>> [ 172] [Active     ] [            ] [       ] [   60] Apache Aries 
>>>>>>>>>> Util (0.2.0.incubating)
>>>>>>>>>> [ 175] [Active     ] [            ] [       ] [   60] Aries JPA 
>>>>>>>>>> Container Managed Contexts (0.2.0.incubating)
>>>>>>>>>> [ 178] [Active     ] [            ] [       ] [   60] Apache Aries 
>>>>>>>>>> JNDI Bundle (0.2.0.incubating)
>>>>>>>>>> 
>>>>>>>>>> [ 166] [Active     ] [Created     ] [       ] [   60] Reportincident 
>>>>>>>>>> :: Persistence JPA :: Aries (1.0.0.SNAPSHOT)
>>>>>>>>>> [ 176] [Active     ] [Created     ] [       ] [   60] Reportincident 
>>>>>>>>>> :: Service Bundle :: Aries (1.0.0.SNAPSHOT)
>>>>>>>>>> 
>>>>>>>>>> What is the reason ? Is there a bundle that I miss to deploy ?
>>>>>>>>>> 
>>>>>>>>>> Regards,
>>>>>>>>>> 
>>>>>>>>>> Charles M.
>>>>>>>>>> Apache Committer (Camel, Servicmix and Karaf)

Reply via email to