java - 格式化 HTML 作为 MX4J HTTP 页面方法调用的输出

标签 java jmx

我有大量数据,想要以某种格式显示数据。
该方法基本上如下所示:


    @ManagedOperation(description = "return html")<br/>
    @ManagedOperationParameters({@ManagedOperationParameter(name = "someVal", description = "text")})<br/>
    public String returnAsHtml(String someVal)<br/>
    {<br/>
       return "some formatted xml";    <br/>
    }<br/>

看起来 XSLTProcessor 可以配置为使用 XSLT 模板。然而,我在互联网上找不到任何在 MX4J 上下文中使用 XSLT 进行 html 转换的示例。谁能提供一个示例 XSLT 模板吗?

最佳答案

如果有人回到这个问题,我会想到两件事:

1) MX4J 有几个 HttpCommandProcessorAdaptor 的默认实现。这些操作是从路径映射的。对于 JMX 操作(Spring 术语中的 ManagedOperation),MX4J 使用/invoke?operation=returnAsHtml 等 URL

这将被传递到 InvokeOperationCommandProcessor 以创建一个 XML 文档,其结果只是您在名为“return”的属性中返回的任何内容的 toString()。它还在名为“returnclass”的属性中传回返回类型。如果您只需将 &template=identity 添加到调用 URL,您就可以看到这一切。

我提到这一切是因为一种选择是实现您自己的“invoke.xsl”。 MX4J 中的只是调用 renderobject 模板:

你瞧,您在 mbean_attributes.xsl 中找到了这一点,其中的注释准确地显示了您需要执行的操作:

   <xsl:template name="renderobject">
  <xsl:param name="objectclass"/>
  <xsl:param name="objectvalue"/>
  <xsl:choose>
     <xsl:when test="$objectclass='javax.management.ObjectName'">
        <xsl:variable name="name_encoded">
           <xsl:call-template name="uri-encode">
              <xsl:with-param name="uri">
                 <xsl:value-of select="$objectvalue"/>
              </xsl:with-param>
           </xsl:call-template>
        </xsl:variable>
        <a href="/mbean?objectname={$name_encoded}">
           <xsl:value-of select="$objectvalue"/>
        </a>
     </xsl:when>
     <xsl:otherwise>
        <!-- Use the following line when the result of an invocation
        returns e.g. HTML or XML data
        <xsl:value-of select="$objectvalue" disable-output-escaping="true" />
        -->
        <xsl:value-of select="$objectvalue"/>
     </xsl:otherwise>
  </xsl:choose>

将“disable-output-escaping”设置为 true 即可解决问题

2) 另一种选择是编写自己的 HttpCommandProcessorAdaptor,并将其设置在 HttpAdapter 上。这可以替换“调用”处理器,或者您可以拥有一个全新的处理器。

希望有帮助

关于java - 格式化 HTML 作为 MX4J HTTP 页面方法调用的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2399993/

相关文章:

java - 验证 Jpa 实体 : In service or by lifecycle listeners

JavaScript 错误 : resource://gre/modules/XULStore. jsm,第 66 行:错误:无法使用 GeckoDriver Firefox 和 Selenium 找到配置文件目录错误

java - 如何从java获取操作系统的CPU使用百分比

java - Spring Boot @ManagedResource 组件在 Docker 中启动时在 VisualVM 中不可见,但可以在本地运行

java - 如何找到远程系统的 CPU 负载

java - 更改 jConsole 中的方法调用弹出响应

java - 从 Tomcat 到 Glassfish 的 JAAS 配置

java - 运行 Java 集成测试时未设置环境变量

java - 实现方法

java - 如何在 Tomcat 中启用 JMXMP?