Inhaltsverzeichnis
Hintergrund
Frage 1
问题2
Heim Java javaLernprogramm So lösen Sie JAR-Paketkonflikte bei der Bereitstellung von Springboot für Weblogic

So lösen Sie JAR-Paketkonflikte bei der Bereitstellung von Springboot für Weblogic

May 11, 2023 pm 05:10 PM
jar springboot weblogic

Hintergrund

In einem bestimmten Projekt musste der Kunde vorhandene Weblogik verwenden, um das entwickelte Springboot bereitzustellen. Daher wurden einige Konfigurationsanpassungen an Springboot vorgenommen, darunter hauptsächlich das Entfernen der Tomcat-Abhängigkeit und das Hinzufügen von Startup-Klassen. Verarbeitung.

Im Allgemeinen läuft es reibungslos, aber tatsächlich gibt es immer ein paar kleinere Probleme.

Frage 1

Wenn das Paket in Weblogic veröffentlicht und gestartet wird, ist der in der Abbildung unten gezeigte Fehler:

So lösen Sie JAR-Paketkonflikte bei der Bereitstellung von Springboot für Weblogic# 🎜🎜#

Anhand des Ausnahmeinhalts kann leicht beurteilt werden, dass es sich um einen Fehler handelt, der durch einen JAR-Paketkonflikt verursacht wird.

Nach dem Auffinden verfügt Weblogic über ein Verzeichnis wls12213oracle_commonmodulesthirdparty, in dem einige Standard-JAR-Pakete von Drittanbietern gespeichert werden. Hier wird zuerst das Standard-JAR-Paket geladen Laden Sie dann das JAR-Paket im Projektprojekt, da Sie nicht garantieren können, dass die Versionen des JAR-Pakets im Projektprojekt und des JAR-Pakets in Weblogic genau identisch sind, sodass aufgrund inkonsistenter JAR-Paketversionen ein häufiger Klassenladekonflikt auftritt.

wls12213oracle_commonmodulesthirdparty,其中存放了一些第三方的默认的 jar 包,项目启动过程中默认是先加载这里的 jar 包,再加载项目工程中的 jar 包,因为你无法保证项目工程中的 jar 包和 weblogic 中的 jar 包版本刚好一致,所以就因为 jar 包版本不一致出现了比较常见的类加载冲突的问题。

查阅官网资料,weblogic 也有是解决方案的,可以通过新增并配置 weblogic.xml 文件来定义哪些类需要优先从项目工程包的 jar 包中加载。

配置方法如下:

在 springboot 项目代码和 resource 同级创建一个 webapp 目录,然后再 webapp 目录下创建 WEB-INF 目录,将 weblogic.xml 文件放在 WEB-INF 中,以 springboot-weblogic-demo 工程为例它的完整路径就是 springboot-weblogic-demo\srcmainwebappWEB-INFweblogic.xml,其内容如下:

<?xml version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
    <container-descriptor>
        <prefer-application-packages>
            <package-name>org.slf4j</package-name>
            <package-name>javax.validation.*</package-name>
            <package-name>org.hibernate.*</package-name>
            <package-name>javax.el.*</package-name>
            <package-name>org.springframework.*</package-name>
            <!--解决项目中jackson的jar包和weblogic中thirdparty的jar包冲突问题,配置优先加载项目中的jar-->
            <package-name>com.fasterxml.jackson.*</package-name>
        </prefer-application-packages>
    </container-descriptor>
    <context-root>/springboot-weblogic-demo</context-root>
</weblogic-web-app>
Nach dem Login kopieren

仅仅是添加配置了这一个文件,没有其他什么配置了,网上说的那些添加 web.xml 的操作,我这里并没有添加,示例是基于 springboot 2.7.2 正常部署运行。

问题2

部署的过程中还出现了 GC 错误 GC overhead limit exceeded,这个问题比较容易解决,给 weblogic 启动环境修改内存值,调大一些即可。

修改对应文件 D:weblogicfmw_12.2.1.3.0_wls_quick_Disk1_1of1wls12213user_projectsdomainsbase_domainbinsetDomainEnv.cmd Überprüfen Sie die offiziellen Website-Informationen. Weblogic hat auch eine Lösung. Sie können definieren, welche Klassen zuerst aus dem JAR-Paket des Projekt-Engineering-Pakets geladen werden müssen, indem Sie die Datei weblogic.xml hinzufügen und konfigurieren.

Die Konfigurationsmethode lautet wie folgt:

Erstellen Sie ein Webapp-Verzeichnis auf derselben Ebene wie der Code und die Ressource des Springboot-Projekts und erstellen Sie dann ein Platzieren Sie die Datei weblogic.xml im Verzeichnis WEB-INF im Verzeichnis WEB-INF. Am Beispiel des Projekts springboot-weblogic-demo lautet der vollständige Pfad springboot-weblogic-demo\srcmainwebappWEB-INFweblogic.xml , und sein Inhalt ist wie folgt: So lösen Sie JAR-Paketkonflikte bei der Bereitstellung von Springboot für Weblogic

if NOT "%JAVA_VENDOR%"=="HP" (
	if "%VM_TYPE%"=="HotSpot" (
		set WLS_MEM_ARGS_64BIT=-Xms1024m -Xmx4096m
		set WLS_MEM_ARGS_32BIT=-Xms256m -Xmx512m
	)
)
Nach dem Login kopieren
Fügen Sie einfach diese Datei hinzu und konfigurieren Sie sie. Es gibt keine andere Konfiguration. Ich habe die erwähnten Vorgänge zum Hinzufügen von web.xml nicht hinzugefügt im Internet hier. Das Beispiel basiert auf Springboot 2.7.2 Normaler Bereitstellungsbetrieb.

Problem 2#🎜🎜##🎜🎜#Der GC-Fehler GC-Overhead-Limit überschritten ist auch während des Bereitstellungsprozesses aufgetreten. Dieses Problem ist relativ einfach zu lösen . Ändern Sie den Speicherwert in der Weblogic-Startumgebung und erhöhen Sie ihn. #🎜🎜##🎜🎜# Ändern Sie die entsprechende Datei D:weblogicfmw_12.2.1.3.0_wls_quick_Disk1_1of1wls12213user_projectsdomainsbase_domainEnv.cmd, ungefähr am Anfang von Zeile 200. Der geänderte Inhalt lautet wie folgt: #🎜🎜#rrre ee # 🎜 🎜#Starten Sie den Weblogic-Dienst neu und Sie können die verbleibende Speicherkonfiguration nach unserer Änderung am Anfang sehen: #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#Das Original Der Wert von WLS_MEM_ARGS_64BIT ist -Xms256m -Xmx512m, oder Sie können weitere Speichereinstellungen hinzufügen, zum Beispiel: -Xms512m -Xmx1024m -XX:MaxNewSize=1024m -XX:MaxPermSize=1024m#🎜🎜##🎜🎜#

Das obige ist der detaillierte Inhalt vonSo lösen Sie JAR-Paketkonflikte bei der Bereitstellung von Springboot für Weblogic. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So führen Sie JAR-Dateien unter Linux aus So führen Sie JAR-Dateien unter Linux aus Feb 20, 2024 am 10:40 AM

Voraussetzungen für die Ausführung von JAR-Dateien Die Ausführung von JAR-Dateien auf einem Linux-System erfordert die Installation der Java Runtime Environment (JRE), der Grundkomponente, die zum Ausführen von Java-Anwendungen erforderlich ist, einschließlich der Java Virtual Machine (JVM), Kernklassenbibliotheken usw. Viele gängige Linux-Distributionen wie Ubuntu, Debian, Fedora, openSUSE usw. bieten Softwarebibliotheken mit JRE-Paketen, um die Benutzerinstallation zu erleichtern. Im folgenden Artikel werden die Schritte zur Installation von JRE auf gängigen Distributionen detailliert beschrieben. Nach dem Einrichten der JRE können Sie je nach Ihren persönlichen Vorlieben das Befehlszeilenterminal oder die grafische Benutzeroberfläche zum Starten der JAR-Datei verwenden. Ihre Wahl hängt möglicherweise von Ihrer Vertrautheit mit Linux-Shells und Ihren persönlichen Vorlieben ab

Wie Springboot Jasypt integriert, um die Verschlüsselung von Konfigurationsdateien zu implementieren Wie Springboot Jasypt integriert, um die Verschlüsselung von Konfigurationsdateien zu implementieren Jun 01, 2023 am 08:55 AM

Einführung in Jasypt Jasypt ist eine Java-Bibliothek, die es einem Entwickler ermöglicht, seinem Projekt mit minimalem Aufwand grundlegende Verschlüsselungsfunktionen hinzuzufügen und kein tiefes Verständnis der Funktionsweise der Verschlüsselung erfordert. standardbasierte Verschlüsselungstechnologie. Passwörter, Text, Zahlen, Binärdateien verschlüsseln ... Geeignet für die Integration in Spring-basierte Anwendungen, offene API, zur Verwendung mit jedem JCE-Anbieter ... Fügen Sie die folgende Abhängigkeit hinzu: com.github.ulisesbocchiojasypt-spring-boot-starter2 Die Vorteile von Jasypt schützen unsere Systemsicherheit. Selbst wenn der Code durchgesickert ist, kann die Datenquelle garantiert werden.

Wie SpringBoot Redisson integriert, um eine Verzögerungswarteschlange zu implementieren Wie SpringBoot Redisson integriert, um eine Verzögerungswarteschlange zu implementieren May 30, 2023 pm 02:40 PM

Nutzungsszenario 1. Die Bestellung wurde erfolgreich aufgegeben, die Zahlung erfolgte jedoch nicht innerhalb von 30 Minuten. Die Zahlung ist abgelaufen und die Bestellung wurde automatisch storniert. 2. Die Bestellung wurde unterzeichnet und es wurde 7 Tage lang keine Bewertung durchgeführt. Wenn die Bestellung abläuft und nicht ausgewertet wird, wird die Bestellung standardmäßig positiv bewertet. Wenn der Händler die Bestellung innerhalb von 5 Minuten nicht erhält, wird die Bestellung abgebrochen Es wird eine SMS-Erinnerung gesendet ... Für Szenarien mit langen Verzögerungen und geringer Echtzeitleistung können wir die Aufgabenplanung verwenden, um eine regelmäßige Abfrageverarbeitung durchzuführen. Zum Beispiel: xxl-job Heute werden wir auswählen

Vergleichen und unterscheiden Sie die Funktionen von WebLogic und Tomcat Vergleichen und unterscheiden Sie die Funktionen von WebLogic und Tomcat Dec 28, 2023 am 11:41 AM

WebLogic und Tomcat sind zwei häufig verwendete Java-Anwendungsserver. Sie weisen einige Unterschiede in Funktionen und Merkmalen auf. In diesem Artikel werden den Lesern die wichtigsten Funktionsvergleiche und Unterschiede zwischen WebLogic und Tomcat vorgestellt. WebLogic ist ein Java-Anwendungsserver, der von der Oracle Corporation entwickelt und verwaltet wird. Als vollständiger JavaEE-Anwendungsserver (Java Enterprise Edition) bietet er umfangreiche Funktionen und hohe Zuverlässigkeit. Netz

So implementieren Sie verteilte Sperren mit Redis in SpringBoot So implementieren Sie verteilte Sperren mit Redis in SpringBoot Jun 03, 2023 am 08:16 AM

1. Redis implementiert das Prinzip der verteilten Sperren und warum verteilte Sperren erforderlich sind. Bevor über verteilte Sperren gesprochen wird, muss erläutert werden, warum verteilte Sperren erforderlich sind. Das Gegenteil von verteilten Sperren sind eigenständige Sperren. Wenn wir Multithread-Programme schreiben, vermeiden wir Datenprobleme, die durch den gleichzeitigen Betrieb einer gemeinsam genutzten Variablen verursacht werden. Normalerweise verwenden wir eine Sperre, um die Richtigkeit der gemeinsam genutzten Variablen sicherzustellen Die gemeinsam genutzten Variablen liegen im gleichen Prozess. Wenn es mehrere Prozesse gibt, die gleichzeitig eine gemeinsam genutzte Ressource betreiben müssen, wie können sie sich dann gegenseitig ausschließen? Heutige Geschäftsanwendungen sind in der Regel Microservice-Architekturen, was auch bedeutet, dass eine Anwendung mehrere Prozesse bereitstellen muss. Wenn mehrere Prozesse dieselbe Datensatzzeile in MySQL ändern müssen, ist eine Verteilung erforderlich, um fehlerhafte Daten zu vermeiden wird zu diesem Zeitpunkt eingeführt. Der Stil ist gesperrt. Punkte erreichen wollen

So lösen Sie das Problem, dass Springboot nach dem Einlesen in ein JAR-Paket nicht auf die Datei zugreifen kann So lösen Sie das Problem, dass Springboot nach dem Einlesen in ein JAR-Paket nicht auf die Datei zugreifen kann Jun 03, 2023 pm 04:38 PM

Springboot liest die Datei, kann aber nach dem Packen in ein JAR-Paket nicht auf die neueste Entwicklung zugreifen. Es gibt eine Situation, in der Springboot die Datei nach dem Packen in ein JAR-Paket nicht lesen kann ist ungültig und kann nur über den Stream gelesen werden. Die Datei befindet sich unter resources publicvoidtest(){Listnames=newArrayList();InputStreamReaderread=null;try{ClassPathResourceresource=newClassPathResource("name.txt");Input

Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Dec 29, 2023 am 11:02 AM

SpringBoot und SpringMVC sind beide häufig verwendete Frameworks in der Java-Entwicklung, es gibt jedoch einige offensichtliche Unterschiede zwischen ihnen. In diesem Artikel werden die Funktionen und Verwendungsmöglichkeiten dieser beiden Frameworks untersucht und ihre Unterschiede verglichen. Lassen Sie uns zunächst etwas über SpringBoot lernen. SpringBoot wurde vom Pivotal-Team entwickelt, um die Erstellung und Bereitstellung von Anwendungen auf Basis des Spring-Frameworks zu vereinfachen. Es bietet eine schnelle und einfache Möglichkeit, eigenständige, ausführbare Dateien zu erstellen

So implementieren Sie Springboot+Mybatis-plus, ohne SQL-Anweisungen zum Hinzufügen mehrerer Tabellen zu verwenden So implementieren Sie Springboot+Mybatis-plus, ohne SQL-Anweisungen zum Hinzufügen mehrerer Tabellen zu verwenden Jun 02, 2023 am 11:07 AM

Wenn Springboot + Mybatis-plus keine SQL-Anweisungen zum Hinzufügen mehrerer Tabellen verwendet, werden die Probleme, auf die ich gestoßen bin, durch die Simulation des Denkens in der Testumgebung zerlegt: Erstellen Sie ein BrandDTO-Objekt mit Parametern, um die Übergabe von Parametern an den Hintergrund zu simulieren dass es äußerst schwierig ist, Multi-Table-Operationen in Mybatis-plus durchzuführen. Wenn Sie keine Tools wie Mybatis-plus-join verwenden, können Sie nur die entsprechende Mapper.xml-Datei konfigurieren und die stinkende und lange ResultMap konfigurieren Schreiben Sie die entsprechende SQL-Anweisung. Obwohl diese Methode umständlich erscheint, ist sie äußerst flexibel und ermöglicht es uns

See all articles