<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>http://wiki.netsitech.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Luca.romagnoli</id>
	<title>WikiSitech - Contributi utente [it]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.netsitech.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Luca.romagnoli"/>
	<link rel="alternate" type="text/html" href="http://wiki.netsitech.com/index.php/Speciale:Contributi/Luca.romagnoli"/>
	<updated>2026-05-04T20:18:04Z</updated>
	<subtitle>Contributi utente</subtitle>
	<generator>MediaWiki 1.34.4</generator>
	<entry>
		<id>http://wiki.netsitech.com/index.php?title=Programmazione:Java/JTA&amp;diff=13568</id>
		<title>Programmazione:Java/JTA</title>
		<link rel="alternate" type="text/html" href="http://wiki.netsitech.com/index.php?title=Programmazione:Java/JTA&amp;diff=13568"/>
		<updated>2022-01-04T13:45:26Z</updated>

		<summary type="html">&lt;p&gt;Luca.romagnoli: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Programmazione:Java|&amp;lt;&amp;lt; Back to Java]]&lt;br /&gt;
=Transazioni Java (JTA)=&lt;br /&gt;
&lt;br /&gt;
Con '''transazione''' si intende una unità logica di elaborazione composta da una sequenza di operazioni che devono terminare tutte con successo o fallimento.&amp;lt;br&amp;gt;In J2EE esistono 2 tipi di transazioni: quelle gestite direttamente dal container EJB dell'applicazione ('''Container-managed Transaction''') oppure quelle applicative ('''Bean-managed Transaction'''). L'approccio CMT, rispetto al secondo approccio, semplifica lo sviluppo e la gestione delle transazioni, poiché tutte le operazioni di begin, commit o rollback verranno svincolate dal codice e delegate al container, utilizzando delle annotazioni Java.&amp;lt;br&amp;gt;A tal proposito, esistono &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;6 attributi&amp;lt;/span&amp;gt; che specificano il modo in cui la transazione deve essere gestita:&lt;br /&gt;
*'''Required: '''è l'attributo implicito per le transazioni di tipo CMT. Il metodo annotato verrà sempre eseguito in transazione. Il container si aggancerà alla transazione del chiamante, se presente, altrimenti ne aprirà una nuova.&lt;br /&gt;
*'''RequiresNew: '''il metodo annotato verrà sempre eseguito in una nuova transazione, indipendentemente dalla transazione (eventuale) del chiamante.&lt;br /&gt;
*'''NotSupported: '''il metodo annotato verrà sempre eseguito fuori transazione. Il container sospende l'eventuale transazione del chiamante prima di eseguire il metodo annotato. Al completamento di quest'ultimo, il container riprenderà la transazione del chiamante.&lt;br /&gt;
*'''Supports: '''il metodo annotato verrà eseguito in transazione o meno a seconda dell'esecuzione (transazionale o meno) del chiamante: se il chiamante esegue in transazione, il container si aggancerà ad essa, altrimenti, al pari del chiamante, il metodo invocato verrà eseguito fuori transazione.&lt;br /&gt;
*'''Mandatory: '''il metodo annotato è forzato ad eseguire in transazione. Se il chiamante non è associato ad alcuna transazione, verrà sollevata una TransactionRequiredException.&lt;br /&gt;
*'''Never: '''il metodo annotato è forzato ad eseguire fuori transazione. Se il chiamante è in transazione, verrà sollevata una RemoteException.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dall'uso delle transazioni ne conseguono 2 aspetti, uno funzionale e uno tecnico. Quello funzionale, relativo al rollback delle operazioni, e quello tecnico, relativo alla gestione delle risorse.&lt;br /&gt;
&lt;br /&gt;
Vediamo un esempio, prendendo due metodi generici '''A '''e '''B''':&lt;br /&gt;
*'''A''' esegue un'operazione di inserimento sulla tabella 'Pippo' e successivamente invoca B.&amp;lt;span style=&amp;quot;font-family: Arial, sans-serif;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: small;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
*'''B''' esegue un'operazione di aggiornamento sulla tabella 'Pluto'.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;color: rgb(35, 111, 161);&amp;quot;&amp;gt;Caso in cui A esegua in transazione (T1):&amp;lt;/span&amp;gt;''' &lt;br /&gt;
&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Required&amp;lt;/span&amp;gt;, viene agganciato a T1. Le risorse 'Pippo' e 'Pluto' saranno accessibili solo al termine della transazione T1. Se l'aggiornamento va in errore, verrà eseguito il rollback dell'inserimento, siccome entrambi sono sotto stessa transazione T1.&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;RequiresNew&amp;lt;/span&amp;gt;, viene aperta una nuova transazione T2. La tabella 'Pluto' sarà accessibile al termine della transazione T2. La tabella 'Pippo' sarà accessibile al termine della transazione T1. Se l'aggiornamento va in errore, non verrà eseguito il rollback dell'inserimento, siccome operano in transazioni separate.&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;NotSupported&amp;lt;/span&amp;gt;, esegue fuori transazione. La tabella 'Pluto' sarà accessibile al termine dell'operazione di aggiornamento. La tabella 'Pippo' sarà accessibile al termine della transazione T1. Se l'aggiornamento va in errore, non verrà eseguito il rollback dell'inserimento, siccome l'aggiornamento è eseguito in ambito non transazionale.&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Supports&amp;lt;/span&amp;gt;, viene agganciato a T1. Le risorse 'Pippo' e 'Pluto' saranno accessibili solo al termine della transazione T1. Se l'aggiornamento va in errore, verrà eseguito il rollback dell'inserimento, siccome entrambi sono sotto stessa transazione T1.&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Mandatory&amp;lt;/span&amp;gt;, viene agganciato a T1. Le risorse 'Pippo' e 'Pluto' saranno accessibili solo al termine della transazione T1. Se l'aggiornamento va in errore, verrà eseguito il rollback dell'inserimento, siccome entrambi sono sotto stessa transazione T1.&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Never&amp;lt;/span&amp;gt;, viene sollevata una RemoteException. Le risorse 'Pippo' e 'Pluto' saranno accessibili. Verrà eseguito il rollback dell'inserimento&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;color: rgb(35, 111, 161);&amp;quot;&amp;gt;Caso in cui A non esegua in transazione:&amp;lt;/span&amp;gt;'''&lt;br /&gt;
#Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Required&amp;lt;/span&amp;gt;, viene aperta una nuova transazione T1. La tabella 'Pippo' sarà accessibile al termine dell'operazione di inserimento. La tabella 'Pluto' sarà accessibile al termine della transazione T1. Se l'aggiornamento va in errore, non verrà eseguito il rollback dell'inserimento, siccome quest'ultimo è eseguito in ambito non transazionale.&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;RequiresNew&amp;lt;/span&amp;gt;, viene aperta una nuova transazione T1. La tabella 'Pippo' sarà accessibile al termine dell'operazione di inserimento. La tabella 'Pluto' sarà accessibile al termine della transazione T1. Se l'aggiornamento va in errore, non verrà eseguito il rollback dell'inserimento, siccome quest'ultimo è eseguito in ambito non transazionale.&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;NotSupported&amp;lt;/span&amp;gt;, esegue fuori transazione. La tabella 'Pippo' sarà accessibile al termine dell'operazione di inserimento. La tabella 'Pluto' sarà accessibile al termine dell'operazione di aggiornamento. Se l'aggiornamento va in errore, non verrà eseguito il rollback dell'inserimento, siccome le operazioni sono eseguite in ambito non transazionale.&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Supports&amp;lt;/span&amp;gt;, esegue anch'esso fuori transazione. La tabella 'Pippo' sarà accessibile al termine dell'operazione di inserimento. La tabella 'Pluto' sarà accessibile al termine dell'operazione di aggiornamento. Se l'aggiornamento va in errore, non verrà eseguito il rollback dell'inserimento, siccome le operazioni sono eseguite in ambito non transazionale.&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Mandatory&amp;lt;/span&amp;gt;, viene sollevata una TransactionRequiredException. Le risorse 'Pippo' e 'Pluto' saranno accessibili. Non verrà eseguito il rollback dell'inserimento, siccome l'operazione è eseguita in ambito non transazionale.&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Never&amp;lt;/span&amp;gt;, esegue fuori transazione. La tabella 'Pippo' sarà accessibile al termine dell'operazione di inserimento. La tabella 'Pluto' sarà accessibile al termine dell'operazione di aggiornamento. Se l'aggiornamento va in errore, non verrà eseguito il rollback dell'inserimento, siccome le operazioni sono eseguite in ambito non transazionale.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(35, 111, 161); text-decoration: underline;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luca.romagnoli</name></author>
		
	</entry>
	<entry>
		<id>http://wiki.netsitech.com/index.php?title=Programmazione:Java/JTA&amp;diff=13567</id>
		<title>Programmazione:Java/JTA</title>
		<link rel="alternate" type="text/html" href="http://wiki.netsitech.com/index.php?title=Programmazione:Java/JTA&amp;diff=13567"/>
		<updated>2022-01-04T13:32:57Z</updated>

		<summary type="html">&lt;p&gt;Luca.romagnoli: Creata pagina con &amp;quot;= &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Arial, sans-serif;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: large;&amp;quot;&amp;gt;Transazioni Java (JTA)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; =  Con '''transazione...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Arial, sans-serif;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: large;&amp;quot;&amp;gt;Transazioni Java (JTA)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Con '''transazione''' si intende una unità logica di elaborazione composta da una sequenza di operazioni che devono terminare tutte con successo o fallimento.&amp;lt;br&amp;gt;In J2EE esistono 2 tipi di transazioni: quelle gestite direttamente dal container EJB dell'applicazione ('''Container-managed Transaction''') oppure quelle applicative ('''Bean-managed Transaction'''). L'approccio '''CMT''', rispetto al secondo approccio, semplifica lo sviluppo e la gestione delle transazioni, poiché tutte le operazioni di begin, commit o rollback verranno svincolate dal codice e delegate al container, utilizzando delle annotazioni Java.&amp;lt;br&amp;gt;A tal proposito, esistono &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;6 attributi&amp;lt;/span&amp;gt; che specificano il modo in cui la transazione deve essere gestita:&lt;br /&gt;
*'''Required: '''è l'attributo implicito per le transazioni di tipo CMT. Il metodo annotato verrà sempre eseguito in transazione. Il container si aggancerà alla transazione del chiamante, se presente, altrimenti ne aprirà una nuova&lt;br /&gt;
*'''RequiresNew: '''il metodo annotato verrà sempre eseguito in una nuova transazione, indipendentemente dalla transazione (eventuale) del chiamante&lt;br /&gt;
*'''NotSupported: '''il metodo annotato verrà sempre eseguito fuori transazione. Il container sospende l'eventuale transazione del chiamante prima di eseguire il metodo annotato. Al completamento di quest'ultimo, il container riprenderà la transazione del chiamante&lt;br /&gt;
*'''Supports: '''il metodo annotato verrà eseguito in transazione o meno a seconda dell'esecuzione (transazionale o meno) del chiamante: se il chiamante esegue in transazione, il container si aggancerà ad essa, altrimenti, al pari del chiamante, il metodo invocato verrà eseguito fuori transazione&lt;br /&gt;
*'''Mandatory: '''il metodo annotato è forzato ad eseguire in transazione. Se il chiamante non è associato ad alcuna transazione, verrà sollevata una TransactionRequiredException&lt;br /&gt;
*'''Never: '''il metodo annotato è forzato ad eseguire fuori transazione. Se il chiamante è in transazione, verrà sollevata una RemoteException&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dall'uso delle transazioni ne conseguono 2 aspetti, uno funzionale e uno tecnico. Quello funzionale, relativo al rollback delle operazioni, e quello tecnico, relativo alla gestione delle risorse.&lt;br /&gt;
&lt;br /&gt;
Vediamo un esempio, prendendo due metodi generici '''A '''e '''B''':&lt;br /&gt;
*'''A''' esegue un'operazione di inserimento sulla tabella 'Pippo' e successivamente invoca B.&amp;lt;span style=&amp;quot;font-family: Arial, sans-serif;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: small;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
*'''B''' esegue un'operazione di aggiornamento sulla tabella 'Pluto'.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;color: rgb(35, 111, 161);&amp;quot;&amp;gt;Caso in cui A esegua in transazione (T1):&amp;lt;/span&amp;gt;''' &lt;br /&gt;
&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Required&amp;lt;/span&amp;gt;, viene agganciato a T1. Le risorse 'Pippo' e 'Pluto' saranno accessibili solo al termine della transazione T1. Se l'aggiornamento va in errore, verrà eseguito il rollback dell'inserimento, siccome entrambi sono sotto stessa transazione T1.&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;RequiresNew&amp;lt;/span&amp;gt;, viene aperta una nuova transazione T2. La tabella 'Pluto' sarà accessibile al termine della transazione T2. La tabella 'Pippo' sarà accessibile al termine della transazione T1. Se l'aggiornamento va in errore, non verrà eseguito il rollback dell'inserimento, siccome operano in transazioni separate.&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;NotSupported&amp;lt;/span&amp;gt;, esegue fuori transazione. La tabella 'Pluto' sarà accessibile al termine dell'operazione di aggiornamento. La tabella 'Pippo' sarà accessibile al termine della transazione T1. Se l'aggiornamento va in errore, non verrà eseguito il rollback dell'inserimento, siccome l'aggiornamento è eseguito in ambito non transazionale.&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Supports&amp;lt;/span&amp;gt;, viene agganciato a T1. Le risorse 'Pippo' e 'Pluto' saranno accessibili solo al termine della transazione T1. Se l'aggiornamento va in errore, verrà eseguito il rollback dell'inserimento, siccome entrambi sono sotto stessa transazione T1.&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Mandatory&amp;lt;/span&amp;gt;, viene agganciato a T1. Le risorse 'Pippo' e 'Pluto' saranno accessibili solo al termine della transazione T1. Se l'aggiornamento va in errore, verrà eseguito il rollback dell'inserimento, siccome entrambi sono sotto stessa transazione T1.&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Never&amp;lt;/span&amp;gt;, viene sollevata una RemoteException. Le risorse 'Pippo' e 'Pluto' saranno accessibili. Verrà eseguito il rollback dell'inserimento&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;color: rgb(35, 111, 161);&amp;quot;&amp;gt;Caso in cui A non esegua in transazione:&amp;lt;/span&amp;gt;'''&lt;br /&gt;
#Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Required&amp;lt;/span&amp;gt;, viene aperta una nuova transazione T1. La tabella 'Pippo' sarà accessibile al termine dell'operazione di inserimento. La tabella 'Pluto' sarà accessibile al termine della transazione T1. Se l'aggiornamento va in errore, non verrà eseguito il rollback dell'inserimento, siccome quest'ultimo è eseguito in ambito non transazionale.&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;RequiresNew&amp;lt;/span&amp;gt;, viene aperta una nuova transazione T1. La tabella 'Pippo' sarà accessibile al termine dell'operazione di inserimento. La tabella 'Pluto' sarà accessibile al termine della transazione T1. Se l'aggiornamento va in errore, non verrà eseguito il rollback dell'inserimento, siccome quest'ultimo è eseguito in ambito non transazionale.&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;NotSupported&amp;lt;/span&amp;gt;, esegue fuori transazione. La tabella 'Pippo' sarà accessibile al termine dell'operazione di inserimento. La tabella 'Pluto' sarà accessibile al termine dell'operazione di aggiornamento. Se l'aggiornamento va in errore, non verrà eseguito il rollback dell'inserimento, siccome le operazioni sono eseguite in ambito non transazionale.&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Supports&amp;lt;/span&amp;gt;, esegue anch'esso fuori transazione. La tabella 'Pippo' sarà accessibile al termine dell'operazione di inserimento. La tabella 'Pluto' sarà accessibile al termine dell'operazione di aggiornamento. Se l'aggiornamento va in errore, non verrà eseguito il rollback dell'inserimento, siccome le operazioni sono eseguite in ambito non transazionale.&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Mandatory&amp;lt;/span&amp;gt;, viene sollevata una TransactionRequiredException. Le risorse 'Pippo' e 'Pluto' saranno accessibili. Non verrà eseguito il rollback dell'inserimento, siccome l'operazione è eseguita in ambito non transazionale.&amp;lt;/span&amp;gt;&lt;br /&gt;
#&amp;lt;span style=&amp;quot;color: rgb(0, 0, 0);&amp;quot;&amp;gt;Se B è annotato come &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Never&amp;lt;/span&amp;gt;, esegue fuori transazione. La tabella 'Pippo' sarà accessibile al termine dell'operazione di inserimento. La tabella 'Pluto' sarà accessibile al termine dell'operazione di aggiornamento. Se l'aggiornamento va in errore, non verrà eseguito il rollback dell'inserimento, siccome le operazioni sono eseguite in ambito non transazionale.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(35, 111, 161); text-decoration: underline;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luca.romagnoli</name></author>
		
	</entry>
	<entry>
		<id>http://wiki.netsitech.com/index.php?title=Programmazione:Java&amp;diff=13566</id>
		<title>Programmazione:Java</title>
		<link rel="alternate" type="text/html" href="http://wiki.netsitech.com/index.php?title=Programmazione:Java&amp;diff=13566"/>
		<updated>2022-01-04T11:54:52Z</updated>

		<summary type="html">&lt;p&gt;Luca.romagnoli: /* HowTo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Programmazione|&amp;lt;&amp;lt; Back to Programmazione]]&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=15 width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==HowTo==&lt;br /&gt;
* '''J2EE'''&lt;br /&gt;
** [[Programmazione:Java/XML to PDF with fop |XML to PDF con fop]]&lt;br /&gt;
** [[Programmazione:Java/JNI Example |JNI Example]]&lt;br /&gt;
** [[Programmazione:Java/Java-Scripting |Java-Scripting]]&lt;br /&gt;
** [[Programmazione:Java/Sampler Test for JMeter |Sampler Test for JMeter]]&lt;br /&gt;
** [[Programmazione:Java/JAVA 6 SystemTray e TrayIcon |JAVA 6 SystemTray e TrayIcon]]&lt;br /&gt;
** [[Programmazione:Java/Write DOM to XML|Write DOM to XML file]]&lt;br /&gt;
** [[Programmazione:Java/Script Ant per Versioning|Script Ant per Versioning]]&lt;br /&gt;
** [[Programmazione:Java/Esempio System Tray per il caricamento delle API di Java | Esempio System Tray per il caricamento delle API di Java]]&lt;br /&gt;
** [[Programmazione:Java/Javascript per il controllo del tasto MAIUSC | Javascript per il controllo del tasto MAIUSC]]&lt;br /&gt;
** [[Programmazione:Java/iCal4j | Esempio di utilizzo della libreria iCal4j]]&lt;br /&gt;
** [[Programmazione:Java/JTA | Transazioni Java (JTA)]]&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==Best Practice== &lt;br /&gt;
* '''J2EE'''&lt;br /&gt;
** [[Programmazione:Java/Exception|Exception]]&lt;br /&gt;
** [[Programmazione:Java/Logging|Logging]]&lt;br /&gt;
** [[Programmazione:Java/Singleton with interface|Singleton with interface]]&lt;br /&gt;
|}&lt;br /&gt;
==Work-Around==&lt;br /&gt;
* '''J2EE'''&lt;br /&gt;
** [[Programmazione:Java/JDBC/MSSQL stored procedure| Call SQLServer stored procedure]]&lt;/div&gt;</summary>
		<author><name>Luca.romagnoli</name></author>
		
	</entry>
</feed>