【问题标题】:Disabling run from BIRT Viewer programatically以编程方式禁用从 BIRT Viewer 运行
【发布时间】:2013-07-12 00:26:59
【问题描述】:

我们正在应用程序的嵌入式 Jetty 服务器中启动 BIRT 3.7.2 Viewer Webapp,出于法律原因,我们不允许自己编辑 war 文件

我们希望禁用查看器中的一些选项,例如服务器端打印和重新运行报告的功能。

打印很简单,只需使用覆盖描述符覆盖 web.xml 并设置禁用它的 BIRT 属性。

但事实证明,重新运行更加困难。我们有几个包装 WebApp 的 Jetty 处理程序,我们首先考虑尝试过滤包含重新运行命令的请求,但问题是它似乎与查看请求相同。

首次使用 BIRT 查看器呈现报告时,Jetty 网络服务器会记录三个必要的请求: /birt/frameset?__document=hello_world.rptdocument - 获取请求 /birt/webcontent/birt/pages/common/processing.jsp?__rtl=false - 获取请求 /birt/frameset?__document=hello_world.rptdocument&__sessionId=20130710_161752_347 - POST 请求

当重新运行时: /birt/frameset?__document=hello_world.rptdocument&__sessionId=20130710_161752_347- POST 请求

这使得过滤 URL 变得困难,因为请求对象看起来相同,并且在 Jetty 或 BIRT 查看器的日志中似乎没有任何内容可以解释为什么它被区别对待(即重新运行报告而不是仅仅呈现它)。

任何帮助将不胜感激。

谢谢,

罗伯

【问题讨论】:

    标签: http jetty birt viewer


    【解决方案1】:

    事实证明,POST 请求具有 SOAP 内容,带有 <Operator> 标记。

    对于报告的初始查看,此标记的值为GetPage,而重新运行请求为ChangeParameter,因此我可以在此过滤服务器端。

    这显然涉及使用getInputStream() 读取HttpServletRequest 正文,因此我必须使用此处概述的方法将以下处理程序的请求包装在链中: http://www.coderanch.com/t/445053/Web-Services/java/Extract-SOAP-object-HttpServletRequest

    希望这可以帮助其他希望这样做的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-11
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      相关资源
      最近更新 更多