【问题标题】:Deploying JSF application on a Glassfish cluster在 Glassfish 集群上部署 JSF 应用程序
【发布时间】:2009-08-26 11:59:23
【问题描述】:

当我在 Glassfish V2.1 Patch02 集群上部署 JSF 应用程序时,在加载第一页时会引发以下异常。


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)

我没有在我的应用程序中使用任何类型的加密/解密。

当我搜索此异常时,我发现 this 在应用程序中加载密码时就是这种情况。

我想知道 Glassfish/JSF 是否加载导致此异常的默认密码?

如果不是,可能的原因和解决方法是什么?

【问题讨论】:

    标签: deployment jsf jakarta-ee glassfish


    【解决方案1】:

    问题已解决。问题是这个“小”错误 - 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> 
    

    根据我的经验,在 Websphere(独立或集群)中通过“默认”启用加密(即 web.xml 中没有 org.apache.myfaces.USE_ENCRYPTION 条目)部署应用程序时,该应用程序运行良好。

    但应用程序没有部署在 Glassfish 集群或 Tomcat 6 中(问题在线程中定义 - nabble.com/BadPadding-Exception-and-more-td21984713.html)

    【讨论】:

      【解决方案2】:

      我认为基本 JSF 实现可能使用加密的唯一地方是state management。组件树是有状态的,因此它在请求之间保留,无论是在会话中还是在隐藏的表单字段中(由javax.faces.STATE_SAVING_METHOD init 参数设置)。如果使用隐藏的表单字段,则明智的做法是对其进行加密,以防止黑客重写服务器状态。 (请注意,JSF 中的状态管理是可插拔的,因此第三方库可以替换默认行为。如果您使用的是丰富的组件库,则值得查看文档。)

      【讨论】:

        【解决方案3】:

        您可以尝试在非集群 glassfish 或 tomcat 中部署您的应用程序,看看是否会遇到同样的情况。然后你就会知道问题是你的应用还是应用服务器或集群的配置。

        【讨论】:

        • 包含加密/解密模块的完整应用程序在独立服务器上运行良好。也许它与集群中的安全设置有关。我希望是否有人可以指出、覆盖或禁用 McDowell(上图)所说的加密。
        • 至少您知道这可能不是您的应用程序的问题。不过,恐怕我无法为您提供更多帮助,我在集群方面做得不多。
        • 谢谢乔尔。如果我们能够解决问题,将继续发布此主题
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多