Развертывание приложения JSF на кластере Glassfish - PullRequest
1 голос
/ 26 августа 2009

При развертывании приложения JSF в кластере Glassfish V2.1 Patch02 при загрузке первой страницы возникает следующее исключение.


java.security.ProviderException: update() failed
    at  sun.security.pkcs11.P11Cipher.implUpdate(P11Cipher.java:557)
    at  sun.security.pkcs11.P11Cipher.engineUpdate(P11Cipher.java:457)
    at  sun.security.pkcs11.P11Cipher.engineDoFinal(P11Cipher.java:485)
    at  sun.security.pkcs11.P11Cipher.engineDoFinal(P11Cipher.java:471)
    at  javax.crypto.Cipher.doFinal(DashoA13*..)
...
Caused  by: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_DEVICE_ERROR
    at  sun.security.pkcs11.wrapper.PKCS11.C_EncryptUpdate(Native Method)
    at  sun.security.pkcs11.P11Cipher.implUpdate(P11Cipher.java:510)

Я НЕ использую какой-либо вид шифрования / дешифрования внутри моего приложения.

Когда я погуглил это исключение, я обнаружил это , что имеет место, когда шифры загружаются в приложение.

Я хотел бы знать, загружают ли Glassfish / JSF шифры по умолчанию, которые вызывают это исключение?

Если нет, что может быть возможной причиной и решением для нее?

Ответы [ 3 ]

1 голос
/ 31 августа 2009

Проблема была решена. Проблема в том, что эта «незначительная» ошибка - https://issues.apache.org/jira/browse/MYFACES-1786

Решение состоит в том, чтобы поместить следующие записи в файл web.xml, чтобы отключить шифрование для управления состоянием и переключить сохранение состояния на сервер

<context-param>
        <param-name>org.apache.myfaces.USE_ENCRYPTION</param-name>
        <param-value>false</param-value>
</context-param> 

<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
</context-param> 

По моему опыту, приложение при развертывании с включенным по умолчанию шифрованием (т. Е. Без записи для org.apache.myfaces.USE_ENCRYPTION в web.xml) в Websphere (автономно или кластерно) работает нормально.

Но приложение НЕ развертывается в кластере Glassfish или в Tomcat 6 (проблема определена в потоке - nabble.com/BadPadding-Exception-and-more-td21984713.html)

0 голосов
/ 26 августа 2009

Вы можете попробовать развернуть свое приложение в некластеризованной стеклянной рыбе или в tomcat и посмотреть, попадаете ли вы в ту же ситуацию. Тогда вы узнаете, является ли проблема вашим приложением или конфигурацией сервера приложений или кластера.

0 голосов
/ 26 августа 2009

Единственное место, где я могу думать, где базовая реализация JSF может использовать шифрование, это управление состоянием . Дерево компонентов является состоящим из состояний, поэтому оно сохраняется между запросами, либо в сеансе, либо в скрытом поле формы (устанавливается параметром javax.faces.STATE_SAVING_METHOD init). Если используется скрытое поле формы, было бы разумно зашифровать его реализацию, чтобы хакеры не переписывали состояние сервера. (Обратите внимание, что управление состоянием в JSF является подключаемым, поэтому сторонние библиотеки могут заменить поведение по умолчанию. Если вы используете богатую библиотеку компонентов, стоит проверить документацию.)

...