Привет, у меня есть таблица с именем user_data, которая содержит user_id, passwd и user_priv (роль для пользователя weblogic). Мне нужно сопоставить мою базу данных user_data с сервером weblogic.
Я попытался создать поставщика с sqlAuthenticator с моим источником данных, который содержит эту таблицу.
Я изменил все запросы для достижения результатов.
Предположим, чтобы получить пользователей на сервер weblogic из таблицы:
<wls:sql-get-users-password>SELECT PASSWD FROM USER_DATA where user_id=?</wls:sql-get-users-password>
<wls:sql-user-exists>SELECT USER_ID FROM USER_DATA whre user_id=?</wls:sql-user-exists>
<wls:sql-list-users>SELECT USER_ID FROM USER_DATA whre user_id=?</wls:sql-list-users>
Я успешно сохраню его и снова перезапущу сервер приложений.
Перед перезапуском сервера. Я добавлю данные в таблицу user_data, чтобы проверить, извлекаются ли они из таблицы или нет.
Я вставил данные и перезапустил сервер, но не смог увидеть данные на сервере weblogic.
Но если я попытаюсь удалить данные с сервера weblogic, он удалит данные из user_data, а наоборот не сработает.
Другой подход, который я пробовал, - создать readSqlAuthenticator, чтобы сделать его доступным только для чтения. Он будет иметь только 3 утверждения, упомянутые выше.
Но это вызовет исключение для
java.sql.SQLException: Invalid column index
at oracle.jdbc.driver.OraclePreparedStatement.setFormOfUseInternal(OraclePreparedStatement.java:16268)
at oracle.jdbc.driver.OraclePreparedStatement.setFormOfUseInternal(OraclePreparedStatement.java:16238)
at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:7895)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.setString(OraclePreparedStatementWrapper.java:314)
at weblogic.jdbc.wrapper.PreparedStatement.setString(PreparedStatement.java:914)
Truncated. see log file for complete stacktrace
>
<24 Jan, 2017 1:48:03 PM IST> <Error> <Security> <BEA-000000> <[Security:090759]A SQLException occurred while retrieving password information
java.sql.SQLException: Invalid column index
at oracle.jdbc.driver.OraclePreparedStatement.setFormOfUseInternal(OraclePreparedStatement.java:16268)
at oracle.jdbc.driver.OraclePreparedStatement.setFormOfUseInternal(OraclePreparedStatement.java:16238)
at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:7895)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.setString(OraclePreparedStatementWrapper.java:314)
at weblogic.jdbc.wrapper.PreparedStatement.setString(PreparedStatement.java:914)
Truncated. see log file for complete stacktrace
>
<24 Jan, 2017 1:48:03 PM IST> <Error> <Security> <BEA-000000> <[Security:090759]A SQLException occurred while retrieving password information
java.sql.SQLException: Invalid column index
at oracle.jdbc.driver.OraclePreparedStatement.setFormOfUseInternal(OraclePreparedStatement.java:16268)
at oracle.jdbc.driver.OraclePreparedStatement.setFormOfUseInternal(OraclePreparedStatement.java:16238)
at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:7895)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.setString(OraclePreparedStatementWrapper.java:314)
at weblogic.jdbc.wrapper.PreparedStatement.setString(PreparedStatement.java:914)
Truncated. see log file for complete stacktrace
>
<24 Jan, 2017 1:48:03 PM IST> <Error> <Security> <BEA-000000> <[Security:090759]A SQLException occurred while retrieving password information
java.sql.SQLException: Invalid column index
at oracle.jdbc.driver.OraclePreparedStatement.setFormOfUseInternal(OraclePreparedStatement.java:16268)
at oracle.jdbc.driver.OraclePreparedStatement.setFormOfUseInternal(OraclePreparedStatement.java:16238)
at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:7895)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.setString(OraclePreparedStatementWrapper.java:314)
at weblogic.jdbc.wrapper.PreparedStatement.setString(PreparedStatement.java:914)
Truncated. see log file for complete stacktrace
При запуске сервера приложений и нажатии на пользователей и группу я получаю следующее исключение
weblogic. security.providers.authentication.DBMSSQLAuthenticatorDelegateException: [Security:090279]Error listing users *
Для этого я получил предложение удалить такие фильтры, как:
<wls:sql-get-users-password>SELECT PASSWD FROM USER_DATA</wls:sql-get-users-password>
<wls:sql-user-exists>SELECT USER_ID FROM USER_DATA</wls:sql-user-exists>
<wls:sql-list-users>SELECT USER_ID FROM USER_DATA</wls:sql-list-users>
Но это тоже не сработало. Есть ли другой подход, с помощью которого я могу сопоставить свою базу данных с сервером weblogic для всех идентификаторов пользователей, паролей и ролей.
Пожалуйста, предложите мне это.