Wir haben unsere Anwendung von MySQL 5.6 auf 8.0.40 aktualisiert und verwenden jetzt die neuesten MySQL-Treiber. Die anderen Teile der Anwendung arbeiten mit dem neuen MySQL außer diesem Abschnitt, der Apache.shiro verwendet.
siehe https://mvnrepository.com/artifact/com. ... -connector -j/9.1.0
Code: Select all
From our pom.xml
com.mysql
mysql-connector-j
9.1.0
Code: Select all
[main]
authc.loginUrl = /index.xhtml
authc.successUrl = /hello
logout.redirectUrl = /hello
# ------------------------
# Database
# Own Realm
#jdbcRealm = com.jjoe64.shiroexample.auth.MyCustomRealm
#jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm = com.ecomm.messages.security.JdbcReferenceRealm
# Sha256
sha256Matcher =
org.apache.shiro.authc.credential.Sha256CredentialsMatcher
# base64 encoding, not hex in this example:
sha256Matcher.storedCredentialsHexEncoded = false
sha256Matcher.hashIterations = 1024
# User Query
jdbcRealm.authenticationQuery = select pr.password from
principals
pr,clientdetails cd where pr.clientid = cd.clientid and username
= ? and cd.clientref
= ? and pr.active = 1
# permissions
#jdbcRealm.permissionsLookupEnabled = true
#jdbcRealm.userRolesQuery = select roleName from UserRole where
userName = ?
jdbcRealm.userRolesQuery = select rl.roles, rl.rolegroups from
roles rl,
principals pr, clientdetails cd where pr.clientid = cd.clientid
and
rl.userid=pr.userid and pr.username = ? and cd.clientref = ?
# Connection
ds = com.mysql.cj.jdbc.MysqlDataSource
ds.driverClass=com.mysql.cj.jdbc.Driver
ds.serverName = localhost
ds.user =
ds.password =
ds.databaseName = dbname
jdbcRealm.dataSource=$ds
# Use Built-in Chache Manager
builtInCacheManager =
org.apache.shiro.cache.MemoryConstrainedCacheManager
securityManager.cacheManager = $builtInCacheManager
securityManager.realms = $jdbcRealm
# -----------------------------------------------------------------------------
[urls]
#/hello = authc
/index.xhtml = authc
/app/** = authc
/admin.jsp = authc, perms["admin:access"]
./jboss-cli.sh --connect
[standalone@localhost:9990 /]
< aktualisiert p>[standalone@localhost:9990 /] /subsystem=datasources/jdbc-driver=com.mysql:add(driver-name=com.mysql,driver-module-name=com.mysql,driver-xa-datasource-class-name=com.mysql.cj.jdbc .MysqlXADataSource
{"outcome" => "success"}
Wir haben unsere Bewerbung überprüft und Alle Referenzen für Objekt-DS wurden von com.mysql.jdbc.jdbc2.optional in com.mysql.cj.jdbc.MysqlDataSource geändert, basierend auf den hier genannten Änderungen: https://dev.mysql.com/doc/connector-j /en/connector-j-api-changes.html
Wir erhalten immer noch die Fehlermeldungen:
2025-01-14 09:07:27,509 ERROR [org.apache.shiro.web.env.EnvironmentLoader] (ServerService Thread Pool – 197) Shiro-Umgebungsinitialisierung fehlgeschlagen: org.apache.shiro.config.ConfigurationException: Unable Klasse instanziieren [com.mysql.jdbc.jdbc2.optional.MysqlDataSource] für das Objekt „ds“ Bitte stellen Sie sicher, dass Sie den vollständig qualifizierten Klassennamen korrekt angegeben haben.
2025-01-14 09:07:27,510 FEHLER [org .jboss.msc.service.fail] (ServerService Thread Pool – 197) MSC000001: Fehler beim Starten des Dienstes jboss.undertow.deployment.default-server.default-host./message: org.jboss.msc.service.StartException im Dienst jboss.undertow.deployment.default-server.default-host./message: java .lang.RuntimeException: org.apache.shiro.config.ConfigurationException: Klasse kann nicht instanziiert werden [com.mysql.jdbc.jdbc2.optional.MysqlDataSource] für ein Objekt mit dem Namen „ds“. Bitte stellen Sie sicher, dass Sie den vollständig qualifizierten Klassennamen korrekt angegeben haben.
2025-01-14 09:07:27,522 FEHLER [org.jboss.as.controller.management-operation] (DeploymentScanner-threads – 2) WFLYCTL0013: Vorgang („deploy“) ist fehlgeschlagen – Adresse: ([(„deployment“ => „messageapp.ear“)]) – Fehler Beschreibung: {"WFLYCTL0080: Fehler bei Diensten" => {"jboss.undertow.deployment.default-server.default-host./message" => "org.jboss.msc.service.StartException im Dienst jboss.undertow.deployment. default-server.default-host./messsage: java.lang.RuntimeException: org.apache.shiro.config.ConfigurationException: Die Klasse [com.mysql.jdbc.jdbc2.optional.MysqlDataSource] kann für das Objekt mit dem Namen „ds“ nicht instanziiert werden. Bitte stellen Sie sicher, dass Sie den vollständig qualifizierten Klassennamen korrekt angegeben haben.
Irgendwelche Vorschläge, wo wir herausfinden können, wo apache.shiro das Objekt ds festlegen könnte com.mysql.jdbc.jdbc2.optional.MysqlDataSource, damit wir es in com.mysql.cj.jdbc.MysqlDataSource ändern und diesen Teil der Anwendung reparieren können.
Vielen Dank für jede Hilfe.