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

时间:2015-07-31 16:30:12

标签: servlet-filters confluence confluence-rest-api

我最近发现了Confluence的servlet-filter模块。然而,在试图让它发挥作用后,我陷入了死胡同。我在这里得到我的信息:

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>

然后,我在名为HelloWorldFilter.java的com / test / filters中创建了一个标准的Java servlet(扩展了HttpServlet等)。在&#34; doGet()&#34;方法,我只需要一个System.out.println()行来读取&#34;在过滤器中#34;。但是,当我转到以下网址时,我总是得到&#34; Page Not Found&#34;错误页面:

http://127.0.0.1:8090/helloworld

http://127.0.0.1:8090/OURAPP/helloworld

http://127.0.0.1:8090/plugins/OURAPP/helloworld

http://127.0.0.1:8090/rest/helloworld

http://127.0.0.1:8090/rest/OURAPP/helloworld

http://127.0.0.1:8090/OURAPP/rest/helloworld

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

http://127.0.0.1:8090/rest/reststuff/v1/some_function_here

像我刚才所说的那样,我在这里陷入了死胡同,无法弄清楚如何让它发挥作用。任何人都可以提供任何建议或示例代码如何使其工作?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您的调度程序代码缺少结束&#34;&gt;&#34;:

    <dispatcher>REQUEST</dispatcher

此致 戈尔卡