部署 SnappyData-0.5 pulse.war 时出现 Bean 缺失错误

Posted

技术标签:

【中文标题】部署 SnappyData-0.5 pulse.war 时出现 Bean 缺失错误【英文标题】:Bean missing error when deploying SnappyData-0.5 pulse.war 【发布时间】:2016-07-20 22:13:59 【问题描述】:

我正在尝试将 Pulse Web 应用程序部署到外部 Tomcat。部署时出现此错误。我应该如何解决这个问题?

org.springframework.beans.factory.NoSuchBeanDefinitionException: 否 名为 'org.springframework.security.authenticationManager' 的 bean 是 已定义:您是否忘记添加一个全局 元素到您的配置(与孩子 元素)?或者,您可以使用 authentication-manager-ref 和元素上的属性。

【问题讨论】:

嗨,Jason,我们会尽快给您答复 【参考方案1】:

好的。这是固定的。对于同样遇到这种情况的每个人...您必须设置 Spring Profile "pulse.authentication.default" 否则它将不会加载 AuthenticationManager Bean。

整体问题在于 RowStore 的文档,它说这是可选的,而实际上它是必需的。

http://rowstore.docs.snappydata.io/docs/manage_guide/pulse/quickstart.html#topic_795C97B46B9843528961A094EE520782

它在第 4 步说。)配置安全性是可选的,而实际上您必须传递 Spring Profile。此外,再次在“验证 Pulse 用户”部分中,它说这不是必需的。

为了解决这个问题,我必须通过 Spring Profile“pulse.authentication.default”来激活 spring-security.xml 中的 Bean 并正确部署 pulse.war。

SnappyData pulse.war 将来执行此操作的更好方法可能是使用“!pulse.authentication.custom”,只要未配置自定义 AuthenticationManager bean,它将始终加载默认 AuthenticationManager bean。

未来的示例更改以使其真正成为可选:

<beans:beans profile="!pulse.authentication.custom" >
        <authentication-manager>
            <authentication-provider>
                <user-service>
                    <user name="admin" password="admin" authorities="ROLE_USER" />
                </user-service>
            </authentication-provider>
        </authentication-manager>
    </beans:beans>

【讨论】:

spring.profiles.default 在 web.xml 中设置并设置为 pulse.authentication.default。这应该在不指定任何身份验证设置的情况下工作。如果您可以指定您正在使用的 TC 版本,将会很有帮助。我也会尝试使用该版本,看看它是否会产生问题。【参考方案2】:

您使用的是哪个版本的 Tomcat? 这是same issue with TC authentication 上的另一个帖子。

否则,您可以在“嵌入式​​模式”下尝试 Pulse 吗?

【讨论】:

pulse.war 是 SnappyData-0.5 dist 中的预构建 Web 应用程序,因此我无法像上面的线程那样访问“配置”安全性。如果答案是自己从 GitHub 源代码中使用其他一些安全配置从头开始构建 pulse.war,请告诉我。但是,第 4 步的 RowStore 文档。)说身份验证是(可选的)。如果需要,我会继续进行更多设置,但除非必要,否则我不想这样做。 希望我们的一位团队成员能够在此功能已经过测试或有简单修复后恢复使用。现在,只需尝试在定位器中运行 Pulse App(“嵌入式模式”)。【参考方案3】:

您使用的是哪个版本的 SnappyData? 您需要在 classpath 中提及一个 pulse.properties 文件。详情可以查看http://rowstore.docs.snappydata.io/docs/manage_guide/pulse/quickstart.html#topic_795C97B46B9843528961A094EE520782。

如果您还有任何问题,请告诉我们。

【讨论】:

我正在使用 SnappyData-0.5。我发现 SnappyData 在线链接指向不同的旧 Gemfire 文档。我会按照你的“rowstore”链接和它的方向。 这并没有解决问题。如您指定的文档链接中所述,我已将 pulse.properties 放入 TOMCAT_HOME/lib 中。错误仍然存​​在。另外,我看到一个 PULSE.log.0 文件,打开它时,它也显示它找不到脉冲属性文件。

以上是关于部署 SnappyData-0.5 pulse.war 时出现 Bean 缺失错误的主要内容,如果未能解决你的问题,请参考以下文章

融合部署独立部署,两种方式的区别

Golang项目部署3,容器部署

SSIS2012 项目部署模型

蓝绿部署与滚动部署?

蓝绿部署滚动部署灰度发布金丝雀发布

packstack部署openstacky要多久