Ü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

Vue macht Div-Höhe verschiebbar

In diesem Artikel wird der spezifische Code von V...

Zusammenfassung gängiger Befehle zur Linux-Benutzer- und Gruppenverwaltung

Dieser Artikel fasst die allgemeinen Befehle zur ...

Farbabstimmungstechniken und Effektdarstellung für Beauty- und Styling-Websites

Farbe ist eines der wichtigsten Elemente jeder We...

Vor- und Nachteile von bedingten Kommentaren im Internet Explorer

Die bedingten Kommentare des Internet Explorers s...

Tutorial zur Installation und Konfiguration von MySQL Workbench unter CentOS

In diesem Artikel finden Sie das Installations- u...

Implementierung von nacos1.3.0, erstellt mit Docker

1. Fortsetzen nacos-Datenbank Datenbankname nacos...

Einführung in JavaScript-Array-Deduplizierungs- und -Flatteningfunktionen

Inhaltsverzeichnis 1. Array-Abflachung (auch als ...

Eine kurze Diskussion über die Leistungsprobleme des MySQL-Paging-Limits

MySQL-Paging-Abfragen werden normalerweise über L...

Beispiel für die Installation von nginx in einem angegebenen Verzeichnis

Aufgrund von Unternehmensanforderungen müssen zwe...

MySQL-Datenbankbeschränkungen und Prinzipien des Datentabellenentwurfs

Inhaltsverzeichnis 1. Datenbankbeschränkungen 1.1...

So verwenden Sie Watch-Listener in Vue2 und Vue3

watch : auf Datenänderungen achten (Änderungserei...

Der Prozess der schnellen Konvertierung eines MySQL-Left-Joins in einen Inner-Join

Während des täglichen Optimierungsprozesses stell...

Detailliertes Tutorial zur Installation von Nginx 1.16.0 unter Linux

Da ich in letzter Zeit mit Linux herumgespielt ha...

Docker View JVM-Speichernutzung

1. Rufen Sie den Hostcomputer des Docker-Containe...