barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

вторник, 25 марта 2014 г.

Weblogic: password-encrypted в конфиге jdbc-data-source и ошибка "Could not perform unpadding: invalid pad byte"

Проблема:

Есть некий EAR-ник, содержащий jdbc-data-source. В нем пароль задан с помощью password-encrypted:
<password-encrypted>{AES}q+rhp78+7777woah7777JW7777S+0p7777djmw7777c=</password-encrypted>
При старте приложения в лог валится ошибка:
####<Mar 19, 2014 4:44:21 PM MSK> <Error> <Console> <xxx> <AdminServer> <[ACTIVE] ExecuteThread: '21' for queue: 'weblogic.kernel.Default (self-tuning)'> <weblogic> <> <> <1395233061606> <BEA-240003> <Console encountered the following error weblogic.application.WrappedDeploymentException: Could not perform unpadding: invalid pad byte.
at com.rsa.jsafe.c.a(Unknown Source)
at com.rsa.jsafe.JSAFE_SymmetricCipher.decryptFinal(Unknown Source)
at weblogic.security.internal.encryption.JSafeEncryptionServiceImpl.decryptBytes(JSafeEncryptionServiceImpl.java:124)
at weblogic.security.internal.encryption.JSafeEncryptionServiceImpl.decryptString(JSafeEncryptionServiceImpl.java:184)
at weblogic.security.internal.encryption.ClearOrEncryptedService.decrypt(ClearOrEncryptedService.java:96)
at sun.reflect.GeneratedMethodAccessor378.invoke(Unknown Source)
... at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$1.run(DeploymentReceiverCallbackDeliverer.java:46)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
При этом само приложение не стартует.

Причина


Конфиг datasource'а был перевезен с другого инстанса weblogic (соответственно, и сам зашифрованный пароль был создан именно для того инстанса). Как оказалось, шифрование пароля привязано к домену сервера Weblogic (о чем, кстати, и сказано в документации: http://docs.oracle.com/cd/E11035_01/wls100/admin_ref/utils.html#encrypt). Так что при копировании конфигурации в другой домен Weblogic требуется повторить процедуру шифрования пароля (как это делается, я писал тут: http://barbitoff.blogspot.ru/2013/11/weblogic-datasource.html).

Комментариев нет:

Отправить комментарий