Über Tomcat kombiniert mit Atomikos zur Implementierung von JTA

Über Tomcat kombiniert mit Atomikos zur Implementierung von JTA

Vor Kurzem hat das Projekt die Umgebung gewechselt und Weblogic durch Tomcat ersetzt. Ich habe die dabei aufgetretenen Probleme aufgezeichnet.
Konfigurieren von Atomikos zur Implementierung von JTA unter Tomcat
Als klassischer Webserver wird Tomcat häufig in Entwicklungs-, Test- und Produktionsumgebungen verwendet. Tomcat ist jedoch kein Java EE-Server und bietet daher keine Unterstützung für EJB und JTA. Dieser Artikel beschreibt eine Methode für Tomcat, um JTA mit Atomikos zu implementieren.

 Mit JTA in Tomcat können Sie Atomikos in Tomcat bereitstellen und die von Tomcat unterstützte Datenquelle verwenden. Sie können es auch im Projekt konfigurieren und Spring verwenden, um die Datenquelle, den Verbindungspool, den Transaktionsmanager usw. zu konfigurieren. Die beiden Methoden haben ihre eigenen Merkmale. Dieser Artikel stellt nur die Integration von Tomcat und Atomikos vor. Nach der Integration kann Tomcat der Außenwelt einen JTA-Transaktionsmanager und eine Datenquelle bereitstellen.

         Bevor wir Atomikos verwendeten, verwendeten wir auch JOTM, aber unter hohen Parallelitätsbedingungen versagte JOTM häufig und wir mussten aufgeben. Durch Tests stellten wir fest, dass Atomikos eine gute Leistung und Stabilität aufwies.

         Wir haben die neueste Version 4.04 von Atomikos verwendet. Das Jar-Paket kann aus der Maven-Konfigurationsbibliothek bezogen werden. Die Linkadresse lautet: http://mvnrepository.com/artifact/com.atomikos

Wenn Sie Hibernate nicht verwenden, umfassen die erforderlichen Pakete:

atomikos-util.jar,
jta.jar,
Transaktionen.jar,
Transaktionen-API.jar,
Transaktionen-jdbc.jar,
Transaktionen-jta.jar

Integrationspaket:
atomikos-integration-extension-3.7.2.jar

Denken Sie daran, den Datenbanktreiber

Schritt 1: Kopieren Sie diese JARs in das Lib-Verzeichnis von Tomcat. Um Tomcat mit Atomikos zu integrieren, benötigen Sie außerdem ein Integrationspaket. Dieses Integrationspaket enthält zwei Klassen. Sie können die Implementierung selbst nachschlagen oder das offizielle Jar-Paket verwenden. Das neueste ist

atomikos-integration-extension-3.7.2.jar

Schritt 2: Fügen Sie einen Listener in tomcat/config/server.xml hinzu

<Listener className="com.atomikos.tomcat.AtomikosLifecycleListener" />

Schritt 3: Fügen Sie Datenquellen und zugehörige Transaktionsmanager in tomcat/config/context.xml hinzu. Das Folgende ist ein Referenzbeispiel. Ändern Sie die Parameter nach Bedarf.

 <Ressourcenname="jdbc/DS_MYSQL"

            auth="Behälter"

            Typ="com.atomikos.jdbc.AtomikosDataSourceBean"

            einzigartigerRessourcenname="jdbc/DS_MYSQL"

            xaDataSourceClassName="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource"

            xaProperties.databaseName="db_test"

            xaProperties.serverName="localhost"

            xaProperties.port="3306"

            xaProperties.Benutzer="Stamm"

            xaProperties.password="Stamm"

            maxPoolSize="200"

            xaProperties.url="jdbc:mysql://localhost:3306/db_test?characterEncoding=UTF8"

            Fabrik="com.atomikos.tomcat.EnhancedTomcatAtomikosBeanFactory" />

  <Ressourcenname="Benutzertransaktion"

            auth="Behälter"

            Typ="javax.transaction.UserTransaction" />   

   <Transaktionsfabrik="com.atomikos.icatch.jta.UserTransactionFactory" />

Schritt 4: Fügen Sie eine jta.properties-Datei im Verzeichnis tomcat/lib hinzu und legen Sie die transaktionsbezogenen Parameter von Atomikos fest. Andernfalls werden die Standardkonfigurationsparameter verwendet. Einige gleichzeitige Transaktionszahlen (standardmäßig 50) und Timeouts müssen angepasst werden. Einige Parameterkonfigurationen in der Datei sind unten aufgeführt. Parametererklärungen finden Sie in der offiziellen Dokumentation: https://www.atomikos.com/Documentation/JtaProperties

Fügen Sie diese Leitungskonfiguration hinzu

com.atomikos.icatch.service=com.atomikos.icatch.standalone.UserTransactionServiceFactory

Die Standardwerte der Parameter in Atomikos sind in transaction.jar, transaction-default.properties definiert: Wenn Sie interessiert sind, können Sie es selbst nachsehen

Nach der Konfiguration der oben genannten vier Schritte ist die Integration von Tomcat abgeschlossen. Spring kann im Projekt verwendet werden, um die Datenquelle und den Transaktionsmanager zu verknüpfen. Die Referenzkonfiguration lautet wie folgt:

<!-- Konfigurationsinformationen der JNDI-Vorlage, die für die Verbindung mit dem Anwendungsserver verwendet werden -->

<bean class="org.springframework.jndi.JndiTemplate" id="jndiTemplate" />
<bean class="org.springframework.jndi.JndiObjectFactoryBean" id="Datenquelle">

    <Eigenschaftsname="jndiName">

        <Wert>java:comp/env/jdbc/DS_MYSQL</Wert>

    </Eigenschaft>

    <Eigenschaftsname="jndiTemplate">

        <ref bean="jndiTemplate"/>

    </Eigenschaft>

</bean>

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">

    <Eigenschaftsname="Datenquelle">

        <ref bean="Datenquelle" />

    </Eigenschaft>

</bean>  

<!--Benutzertransaktionsobjekt-->

<bean class="org.springframework.jndi.JndiObjectFactoryBean" id="BenutzerTransaktion">

    <!--class="org.springframework.transaction.jta.WebLogicJtaTransactionManager">-->

    <Eigenschaftsname="jndiName">

        <Wert>java:comp/UserTransaction</Wert>

    </Eigenschaft>

    <Eigenschaftsname="jndiTemplate">

        <ref bean="jndiTemplate"/>

    </Eigenschaft>

</bean>

<bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"

    init-method="init" destroy-method="schließen">

    <Eigenschaftsname="forceShutdown" Wert="false" />

</bean>

<!-- Annotationsbasierten deklarativen Transaktionsmanager konfigurieren -->

<bean id="TransaktionsManager" Klasse="org.springframework.Transaction.jta.JtaTransactionManager">

    <Eigenschaftsname="Benutzertransaktion" ref="Benutzertransaktion" />

    <Eigenschaftsname="TransaktionsManager" ref="atomikosTransactionManager" />

</bean> 

<tx:annotation-driven transaction-manager="TransaktionsManager" />

Die folgende Konfiguration wird in meinem Projekt verwendet: Es wird empfohlen, in conf.xml zu konfigurieren

Die in der Tomcat-Konfiguration verwendete XA-Datenquelle und der JDBC-Treiber können nicht-XA-bezogene Einstellungen verwenden. Atomikos unterstützt auch nicht-XA-Verbindungen, um die Laufgeschwindigkeit zu erhöhen. Bezüglich der Nicht-Xa-Datenquelle können Sie sich auf die folgende Konfiguration beziehen:

<Ressourcenname="jdbc/DS_MYSQL"

 auth="Behälter"
    Typ="com.atomikos.jdbc.nonxa.AtomikosNonXADataSourceBean"

        einzigartigerRessourcenname="jdbc/DS_MYSQL"

        TreiberKlassenname="com.mysql.jdbc.Driver"

        maxPoolSize="200"

        url="jdbc:mysql://localhost:3306/db_test?characterEncoding=UTF8"

        Benutzer="root"

        Passwort="root"

        Fabrik="com.atomikos.tomcat.EnhancedTomcatAtomikosBeanFactory" />

**Fallgrube-Rekord**

**Da es hier einen Transaktionsmanager TransactionManager gibt, kann UserTransaction nicht über diesen Typ abgerufen werden. Nach dem Debuggen wird festgestellt, dass diese Klasse nicht gefunden wird**

**Ändern Sie es zu type="com.atomikos.icatch.jta.userTransactionImp", um UserTransaction erfolgreich abzurufen,**

 <Ressourcenname="Benutzertransaktion"

            auth="Behälter"
Typ="com.atomikos.icatch.jta.userTransactionImp"/>   

   <Transaktionsfabrik="com.atomikos.icatch.jta.UserTransactionFactory" /> 

https://blog.csdn.net/xuyu_yt/article/details/77905553?locationNum=14%20fps=1

Dies ist das Ende dieses Artikels über die Kombination von Tomcat und Atomikos zur Implementierung von JTA. Weitere relevante Inhalte zur Implementierung von JTA durch Atomikos finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Springboot jta atomikos realisiert verteiltes Transaktionsmanagement

<<:  Lösen Sie das Problem des MySql8.0-Prüfungsfehlers der Transaktionsisolationsebene

>>:  Detaillierte Erklärung zur Verwendung von CSS3 RGB und RGBA (transparente Farbe)

Artikel empfehlen

Der Ansichtsbereich im Meta-Tag steuert das Gerätebildschirm-CSS

Code kopieren Der Code lautet wie folgt: <meta...

So verwenden Sie Shell-Skripte in Node

Hintergrund Während der Entwicklung benötigen wir...

MySQL Community Server 5.7.19 Installationshandbuch (detailliert)

Link zum Download der ZIP-Datei auf der offiziell...

10 Tipps zur Website-Benutzerfreundlichkeit, die jeder kennen sollte

Lassen Sie uns keine weitere Zeit verschwenden un...

Installieren Sie Ethereum/Ethereum von Grund auf unter CentOS7

Inhaltsverzeichnis Vorwort Fügen Sie Sudo-Schreib...

Detailliertes Tutorial zur Springcloud-Alibaba-Nacos-Linux-Konfiguration

Laden Sie zuerst das komprimierte Nacos-Paket von...

So ändern Sie den Replikationsfilter in MySQL dynamisch

MySQL Replikationsfilter dynamisch ändern Lassen ...

Lösung für den ineffektiven Rand von in HTML verschachtelten Divs

Hier ist eine Lösung für das Problem, dass der Ra...

Welche Schleife ist in JavaScript die schnellste?

Wenn wir wissen, welche For-Schleife oder welcher...

So simulieren Sie eine Aufzählung mit JS

Vorwort Im aktuellen JavaScript gibt es kein Konz...

Unterscheidung zwischen Linux-Hardlinks und Softlinks

Unter Linux gibt es zwei Arten von Dateiverbindun...

Syntax und Beispielanalyse der JavaScript-Array-Methode „reduce()“

Vorwort Die Methode „reduce()“ erhält eine Funkti...