【问题标题】:No SQL stats on JavaMelody - JBoss EAP 7JavaMelody 上没有 SQL 统计信息 - JBoss EAP 7
【发布时间】:2020-06-01 06:03:27
【问题描述】:

我有一个在 JBoss EAP 7.2 上运行的 maven 应用程序。详情如下:

  • 构建:Maven 3.6
  • 服务器:JBoss EAP 7.2
  • Java:OpenJDK 11
  • JavaMelody 核心:1.83.0
  • 包:EAR
  • 应用:Struts 2.5.22
  • 数据库:Oracle 18c
  • OJDBC 驱动程序:18.3

虽然我设法配置了 JavaMelody 并查看了主要统计信息,但我似乎找不到配置 SQL 监控的方法。

目前,对于我的 JDBC 配置,我在我的 persistence.xml 文件中使用<jta-data-source>java:jboss/datasources/myDS</jta-data-source>,它从 JBoss 服务器的standalone.xml 中读取数据源。

我在我的 persistence.xml 文件中尝试了一些更改,例如添加:

<property name="net.bull.javamelody.jpa.provider" value="org.hibernate.jpa.HibernatePersistenceProvider" />

<property name="hibernate.connection.driver_class" value="net.bull.javamelody.JdbcDriver"/>

我的 struts.xml 配置

<package name="myApp" extends="struts-default">
   <interceptors>
      <interceptor name="monitoring" class="net.bull.javamelody.StrutsInterceptor" />
      <interceptor-stack name="myAppStack">
         <interceptor-ref name="monitoring" />
         <interceptor-ref name="prepare" />
         ....
         <interceptor-ref name="json" />
         <interceptor-ref name="debugging" />
         <interceptor-ref name="defaultStack" />
      </interceptor-stack>
   </interceptors>
   <default-interceptor-ref name="myAppStack" />
</package>

甚至使用 hibernate.connection.url/username/password 属性完全在持久性文件中配置我的数据源,但没有运气。

我尝试按照此处找到的说明进行操作,但似乎找不到问题所在: https://github.com/javamelody/javamelody/wiki/UserGuide#7-jdbc https://github.com/javamelody/javamelody/wiki/UserGuideAdvanced#jpa-monitoring

注意:在我的 persistence.xml 中,我也使用了 &lt;property name="hibernate.connection.driver" value="oracle.jdbc.OracleDriver" /&gt; 。我不确定这是否有某种冲突。

【问题讨论】:

    标签: java jpa struts2 jboss-eap-7 java-melody


    【解决方案1】:

    JPA 监控与 SQL 监控完全不同:不要尝试net.bull.javamelody.jpa.provider 监控 SQL。如果你使用来自 JNDI 的数据源,尝试hibernate.connection.driver_class 是没有用的。

    对于SQL监控,可以尝试从JNDI中的数据源监控SQL:

    • 要么添加 javamelody 参数数据源,例如使用系统属性:-Djavamelody.datasources=java:jboss/datasources/myDS
    • 或将您的数据源重命名为java:jdbc/myDS

    然后检查 javamelody 报告底部的“调试日志”。

    因为您使用的是 EAR,请参阅 https://github.com/javamelody/javamelody/wiki/UserGuideAdvanced#setup-javamelody-in-an-ear-file

    【讨论】:

    • 1 ) 在我第一次尝试使用 JBoss EAP 6 并遵循 stackoverflow.com/a/56401927/1918516 我记得我设法让 Java Melody 工作。现在虽然我能够访问报告站点,但在我的日志中我看到:java.lang.NoClassDefFoundError: Failed to link net/bull/javamelody/StrutsInterceptor 2) 感谢您的帮助。该参数为 SQL 解决了问题!
    • NoClassDefFoundError: Failed to link net/bull/javamelody/StrutsInterceptor 肯定是由 EAR 打包引起的,可能是因为 struts2-core 与 javamelody 不在同一个类加载器中。所以在这种情况下 Struts 监控是不可能的。
    • 所以,如果我理解正确或者仍然可以配置,我毕竟不能将 JavaMelody 与 Struts 和 EAR 打包一起使用?由于我的 struts 和 javamelody 依赖项位于 EAR 中包含的同一个 war 模块下,它们不应该与同一个类加载器交互吗?
    • 据我所知,您可以将 javamelody 与 Struts 和 EAR 打包一起使用。如果“NoClassDefFoundError: Failed to link net/bull/javamelody/StrutsInterceptor”是一个问题,并且如果它在这个 EAR 中不起作用,请不要在 Struts 配置中使用 javamelody StrutsInterceptor。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多