关于两个AEM实例解析具有不同servlet的URL的可能原因的想法?

时间:2014-09-23 21:59:18

标签: jcr aem sling

我有两个AEM实例,一个本地,一个在我们的开发机器上,具有相同的代码,设置等。

URL正确解析为由路径定义的自定义servlet。但是,在客户端环境中的另一台计算机上,URL将解析为DefaultSlingServlet。我试图找出该环境与其他环境之间的差异,但我没有提出任何想法,因为它们具有相同版本的AEM 5.6.1,运行相同的JDK,使用相同的精确安装包。

URL端点正在解析大多数AEM实例上的自定义servlet,但是解析为位于其他位置的计算机上的默认servlet。

我们已经尝试设置servlet以通过路径和resourceType来解析,并且使用这两种方法,它们在第一组计算机上工作正常,而在另一台计算机上则无效。所以它不是servlet定义中路径与resourceType的关系。

有没有人遇到这种古怪的行为?我想它必须与不同环境的设置相关,但到目前为止找不到差异是没有好运的。

感谢您的任何想法!

(顺便说一句,当我发布到坏机器上的自定义servlet时,它会报告PersistencException(由path定义)或ConstraintViolationException(当由resourceType定义时)。但这是预期的,因为它是默认的servlet尝试对不允许的节点做某事)

2 个答案:

答案 0 :(得分:1)

您应该使用/ system / console / components和/或/ system / console / services中的OSGi控制台检查servlet服务是否已实际注册,并在工作和非工作实例之间进行比较。

/ system / console / requests页面也可以帮助显示如何分派请求。

最糟糕的情况是,DEBUG级别日志应该有助于确切了解如何解析servlet。

答案 1 :(得分:0)

正如Bertrand所指出的,您的Servlet未在OSGi中注册。

默认情况下,所有GET请求都由DefaultGetServlet处理,所有POST请求都转到SlingPOSTServlet(在发布时会产生持久性异常)

转到您的felix控制台并检查是否部署了servlet。

此外,如果您想查看为任何特定请求调用哪个servlet,请使用servlet解析器工具:

/系统/控制台/ servletresolver