Comment obtenir des connexions JDBC obtenue à partir d'une datasource JNDI pour participer à un usertransaction à l'aide de Weblogic 10.3?

Je suis actuellement en train de récupérer à la fois une un usertransaction et une source de données à partir d'un serveur Weblogic 10.3 utilisation de JNDI.

J'ai mis la source de données jusqu'à "Soutenir les Opérations et à l'utilisation de forêts Dernière Ressource"

Mon espoir était que le début d'une UserTranscation puis de la récupération d'une connexion JDBC à partir de la source de données la connexion participer à l'Opération.

Cela ne semble pas être le cas, et mes états d'insertion sont engagés tout de suite et l'annulation de la transaction n'a pas d'effet.

Sont mes hypothèses énoncées ci-dessus correcte?

Quelqu'un peut-il m'indiquer la direction de la documentation ou des échantillons sur comment atteindre cet objectif?

Merci beaucoup à l'avance

Mise à JOUR:

Comme demandé voici un squelette de code, je suis en utilisant:

private void doSomething() {
Connection conn = null;
try {
    Hashtable env = new java.util.Hashtable();
    env.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
    env.put(javax.naming.Context.PROVIDER_URL,"t3://localhost:8080");
    InitialContext ctx = InitialContext(env));

    UserTransaction transaction = null;
    transaction = (UserTransaction) ctx.lookup("java:comp/UserTransaction");

    DataSource dataSource = (DataSource) context.lookup("jdbc/xxxxx/DataSource");
    conn = dataSource.getConnection();
    transaction.begin();
    //JDBC code goes here
    transaction.commit();
} catch(Exception e) {
    //TODO
    if (transaction != null) {
    try {
    transaction.rollback();
    } catch (Exception ex) {
    //TODO
    }
} finally {
  if (con != null) {
    conn.close
  }
}
}

Mise à JOUR 2:

Afin de résoudre ce problème que j'ai eu à faire 2 choses:

  1. Modifier l'ordre du code, tout d'abord commencer la transaction de l'utilisateur, puis obtenir une connexion à partir de la banque de données (comme l'a souligné Pascal Thivent).
  2. Modifier la source de données référencée par " "jdbc/xxxxx/DataSource" " pour un XADatasource. C'est parce que j'ai été d'appeler le code à l'intérieur de la transaction de l'utilisateur qui a utilisé une autre source de données qui a déjà été configuré pour prendre en charge LLR et comme l'a souligné Pascal Thivent ci-dessous, vous ne pouvez avoir qu'un LLR source de données participer à un transcation.

J'ai accepté Pascal Thivent la réponse ci-dessous, parce qu'il explique à la fois de ces questions.

OriginalL'auteur lucasweb | 2009-12-18