首先,我要说的是,我所知道的关于 Spring 和 Jetty 的一切,都是我在尝试调试这个问题的过程中学到的:我在一场 war 中有一个上下文文件,它只是设置身份验证管理器以及 http-basic 安全模型。在一台计算机上,它工作正常,但在另一台计算机上(当然也是我试图部署到的计算机上),jetty 的日志在尝试加载该文件后停止。

该文件没有做任何奇怪的事情,只是几乎遵循网上的每个示例来启动和运行 shell,以便以后进行改进:

    <security:http> 
            <security:http-basic></security:http-basic> 
            <security:intercept-url pattern="/dcap" access="ROLE_ANONYMOUS"/> 
            <security:intercept-url pattern="/LCL/**" access="ROLE_ANONYMOUS"/> 
            <security:intercept-url pattern="/**" access="ROLE_USER" /> 
    </security:http> 
 
    <security:authentication-manager alias="authenticationManager"> 
            <security:authentication-provider> 
                    <security:user-service> 
           <security:user name="test" password="testpass" authorities="ROLE_USER" /> 
                    </security:user-service> 
            </security:authentication-provider> 
    </security:authentication-manager> 

现在,我已经尝试过了,如果我注释掉第一个 block ,我会得到相同的结果,如果我注释掉第二个 block ,我会得到相同的结果。然而,如果我注释掉这两个 block ,Jetty 实际上会启动,而不是在配置阶段挂起,而是抛出一个找不到 springSecurityFilterChain 的异常,这当然是有道理的。

所以,我想我的问题是,机器环境中可能存在哪些差异,导致该文件在一台机器上无法加载,而在另一台机器上工作? (我担心可能是在它正在运行的机器上我使用的是sun jvm,而在我所在的机器上,我必须使用openjdk。)我可以采取任何其他步骤吗?如何调试像这样 Jetty 的启动日志停止的问题?

请您参考如下方法:

问题是 RNG 中的熵不足。下载并安装 RNG 工具,并将其插入 urandom,效果非常好。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!