如何使用 Confluence 的 servlet-filter 模块?



我最近注意到了Confluence的servlet过滤器模块。然而,在试图让它工作之后,我已经进入了一个死胡同。我在这里获取我的信息:

https://developer.atlassian.com/confdev/confluence-plugin-guide/confluence-plugin-module-types/servlet-filter-module

这是我试过的。我像这样注释了我的atlassian-plugin.xml文件:

<servlet-filter name="My Test Filter" key="OURAPP" class="com.test.filters.HelloWorldFilter" location="after-encoding" weight="100">
    <description>Forwards you to a test "Hello, world!" page.</description>
    <url-pattern>/helloworld</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</servlet-filter>
然后,我在com/test/filters上创建了一个标准的Java servlet(扩展HttpServlet等),名为HelloWorldFilter.java。在"doGet()"方法中,我只有一个System.out.println()行,上面写着"In the FILTER"。但是,当我访问以下url时,我总是得到"Page Not Found"错误页面:

http://127.0.0.1:8090/helloworld

http://127.0.0.1:8090 OURAPP/helloworld

http://127.0.0.1:8090/插件/OURAPP/helloworld

http://127.0.0.1:8090/休息/helloworld

http://127.0.0.1:8090/休息/OURAPP/helloworld

http://127.0.0.1:8090 OURAPP/休息/helloworld

我们有一个自定义的Confluence插件,我们叫它OURAPP,它不仅通过浏览器的GUI提供数据,还通过Confluence的REST功能提供数据。我试图创建一个过滤器来管理有效和无效的请求。我们可以访问REST:

http://127.0.0.1:8090/休息/reststuff/v1/some_function_here

就像我一开始说的,我在这里遇到了一个死胡同,不知道如何让它工作。谁能提供任何建议或如何得到这个工作的示例代码?

经过几天的折腾,我终于弄清楚是什么错了。我是在扩展javax.servlet.http.HttpServlet而不是实现javax.servlet.Filter。在我改为实现过滤器,并实现了所有适当的方法后,我的servlet过滤器开始在127.0.0.1:8090/helloworld工作。有许多使用标准Java Servlet(即扩展HttpServlet)的例子,但显然不能与Confluence一起工作。我希望这能帮助那些在Confluence的困惑中挣扎的人。感谢所有花时间阅读的人。

您的dispatcher标签缺少关闭">":

    <dispatcher>REQUEST</dispatcher

问候,Gorka

最新更新