Мы обновили наше приложение с MySQL 5.6 до 8.0.40 и теперь используем последние версии драйверов MySQL. Другие части приложения работают с новым MySQL, кроме этого раздела, который использует apache.shiro.
Код: Выделить всё
From our pom.xml
com.mysql
mysql-connector-j
9.1.0
Код: Выделить всё
[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"]
Мы все еще получаем ошибки:
2025-01-14 09:07:27,509 ОШИБКА [org.apache.shiro.web.env.EnvironmentLoader] (пул потоков ServerService - 197) Ошибка инициализации среды Shiro: org.apache.shiro.config .ConfigurationException: невозможно создать экземпляр класса [com.mysql.jdbc.jdbc2.optional.MysqlDataSource] для объекта с именем «ds». Убедитесь, что вы правильно указали полное имя класса.
2025-01-14 09:07:27,510 ОШИБКА [org.jboss.msc.service.fail] (пул потоков ServerService — 197) MSC000001: сбой для запуска службы jboss.undertow.deployment.default-server.default-host./message: org.jboss.msc.service.StartException в службе jboss.undertow.deployment.default-server.default-host./message: java.lang.RuntimeException: org.apache.shiro.config.ConfigurationException: невозможно создать экземпляр класса [com] .mysql.jdbc.jdbc2.optional.MysqlDataSource] для объекта с именем «ds». Убедитесь, что вы правильно указали полное имя класса.
2025-01-14 09:07:27,522 ОШИБКА [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 2) WFLYCTL0013: Операция ("развертывание") не удалась - адрес: ([("развертывание" => "messageapp.ear")]) - описание ошибки: {"WFLYCTL0080: Сбой служб" => {"jboss.undertow.deployment.default-server.default-host./message" => "org.jboss.msc.service .StartException в службе jboss.undertow.deployment.default-server.default-host./message: java.lang.RuntimeException: org.apache.shiro.config.ConfigurationException: невозможно создать экземпляр класса [com.mysql.jdbc.jdbc2.optional.MysqlDataSource] для объекта с именем «ds». Убедитесь, что вы указали полный класс. назовите правильно.
Любые предложения, по которым мы можем посмотреть, где apache.shiro может устанавливать для объекта ds значение com.mysql.jdbc.jdbc2.optional.MysqlDataSource, чтобы мы могли изменить его на com.mysql.cj.jdbc.MysqlDataSource и исправить эту часть приложения.
Спасибо за любую помощь.
Подробнее здесь: https://stackoverflow.com/questions/793 ... gurationex
Мобильная версия