【发布时间】:2024-05-21 15:15:02
【问题描述】:
我的项目使用 spring 和 spring-dm 进行 bean/service 配置。当我尝试导入一个也使用 spring 进行 DI 的旧项目时,将不会创建 bean。
举例说明,
我首先在spring-appContext.xml中定义了一个url-alias
<bean name="xxxx" class="XRegistry" init-method="init">
<property name="webRoot" value="/WebContent"></property>
<property name="alias" value="/test"></property>
<property name="cAliasPattern" value="/test/*.do" />
<property name="conConfigFile" value="ddd.xml"/>
</bean>
在 ddd.xml 中,我用 /test/abc.do 之类的 url 定义了一些控制器 bean
在 Eclipse 中作为 OSGi 框架启动时不会发生错误。 但是当我尝试访问 URL(/test/abc.do) 时,遇到了“Unknown OSGi URL:”。
真正让我困惑的问题是我不清楚从哪里开始。我的 bundle 依赖于 spring bundle 并且有 appContext.xml 和 dispatcher.xml。只是一个正常的弹簧使用场景。
由于 spring 对我来说看起来像黑盒子,我只能尝试一些我能想到的其他可能的原因,但直到现在还没有解决它。有人知道如何监控 spring 启动过程或有用的日志吗?
谢谢。
编辑 在使用 spring-dm 时,您需要创建一个包含 log4j.properties 的新片段来启用日志记录。这可以帮助你跟踪 spring 启动错误。
正如我在第一个答案中解释的那样,找到了根本原因,两个选择,
- 对于那些同时存在于工作区和目标平台中的包,增加当前工作区中的包版本。发生错误时,您还应该查看依赖包
- 删除目标平台中的高版本包。
【问题讨论】:
-
有人能给点建议吗?
-
你没有提供足够的信息让任何人帮助你。您谈论的是“网址映射”。什么样的映射?您是如何尝试访问它的,为什么您希望它首先可用?
-
@Ryan,我想知道是否有诊断 Spring bean 创建问题的通用方法。关于我的问题,我在问题部分进行了更新以说明问题。是的,我访问了 URL(/test/abc.do) ,并且遇到了“未知 URL”。根据我对 spring 的使用,通过在 bundle 中定义一个经过验证的 spring 配置文件,然后在 spring ENV 中运行 bundle,spring 将处理所有后端工作。所以我希望能成功访问 URL。
-
我认为您最好向了解您正在开发的应用程序的人寻求帮助。看来您对它的了解还不够,甚至无法描述您的问题。需要调查的一些事情:什么是“XRegistry”?使 URL 在 OSGi 容器中可用的机制是什么?
-
@Ryan,出于业务需求,我没有指定具体的 java 类名。我找到了根本原因,即服务的依赖项列表中的一个捆绑包由于某些配置错误而没有启动。但是我使用了一些愚蠢的方法,一一检查。无论如何,谢谢你的帮助。
标签: spring javabeans startup monitor creation