2009-08-26 6 views
1

Lorsque je déploie une application JSF sur un cluster Glassfish V2.1 Patch02, l'exception suivante est levée lors du chargement de la première page.Déploiement d'une application JSF sur un cluster Glassfish


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) 

Je ne suis pas d'utiliser tout type de cryptage/décryptage dans mon application.

Lorsque j'ai recherché pour cette exception, j'ai trouvé this, ce qui est le cas lorsque les chiffrements sont chargés dans l'application.

Je voudrais savoir si Glassfish/JSF charge les Ciphers par défaut qui provoquent cette exception?

Si non, quelle pourrait être la cause possible et la solution pour cela?

Répondre

1

Le problème a été résolu. Le problème est ce bug mineur '- https://issues.apache.org/jira/browse/MYFACES-1786

La solution est de mettre les entrées suivantes dans le web.xml pour désactiver le cryptage pour la gestion de l'Etat et pour changer l'état d'économie au serveur

<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> 

De mon l'expérience de l'application lorsqu'elle est déployée avec un chiffrement activé par défaut (c'est-à-dire sans entrée pour org.apache.myfaces.USE_ENCRYPTION dans web.xml) dans Websphere (autonome ou en cluster) fonctionne parfaitement bien.

Mais l'application ne soit pas déployé dans le cluster Glassfish ou 6 Tomcat (le problème est défini dans le fil - nabble.com/BadPadding-Exception-and-more-td21984713.html)

0

Le seul endroit où je peux penser où l'implémentation JSF de base pourrait utiliser le cryptage est state management. L'arborescence des composants est à état, elle est donc conservée entre les demandes, soit dans la session, soit dans un champ de formulaire masqué (défini par le paramètre init javax.faces.STATE_SAVING_METHOD). Si un champ de formulaire caché est utilisé, l'implémentation serait sage de le crypter pour empêcher les pirates de réécrire l'état du serveur. (Notez que la gestion d'état dans JSF est connectable, donc les bibliothèques tierces pourraient remplacer le comportement par défaut.Si vous utilisez une bibliothèque de composants riche, ça vaut la peine de vérifier le doc.)

0

Vous pouvez essayer de déployer votre application dans glassfish non-clustered, ou dans Tomcat et voir si vous obtenez la même situation. Ensuite, vous saurez si le problème provient de votre application ou de la configuration du serveur ou du cluster de l'application.

+0

L'application complète, y compris le module de cryptage/décryptage fonctionne correctement sur un serveur autonome. Peut-être que cela a quelque chose à voir avec les paramètres de sécurité du cluster. J'espérais que quelqu'un puisse pointer vers, surcharger ou désactiver le cryptage dont parlait McDowell (ci-dessus). –

+0

au moins vous savez que ce n'est probablement pas un problème avec votre application. Je crains de ne pas pouvoir vous aider plus loin que ça, mais je n'ai pas beaucoup travaillé avec le clustering. – digitaljoel

+0

merci joel. conservera ce sujet si nous sommes en mesure de résoudre le problème –

Questions connexes