小编Phi*_*all的帖子

如何在多个线程上追踪 JFR 事件

我正在努力使用自定义 JFR 事件对异步 servlet 请求处理进行建模。我面临的挑战是,在异步处理中,一个请求可能会被#dispatch()多次编辑。这意味着整个请求处理链可能会被多次执行,在不同的线程中间隔一段时间。如何使用自定义 JFR 事件对此进行建模?

对我有帮助的是“父”事件的概念(可能在不同的线程中)或事件的暂停和恢复。

编辑

稍微说明一下这个问题。处理异步请求可能需要 100 秒挂钟时间。然而,在一个Servlet#service()方法中,实际的处理可能只在 4 秒内发生:

  • 线程 A 中的第二个 0-1,Servlet#service()方法返回,AsyncContext开始
  • 线程 B 中的第二个 10-11,Servlet#service()方法返回,AsyncContext开始
  • 线程 A 中的第二个 80-81,Servlet#service()方法返回,AsyncContext开始
  • 线程 C 中的第二个 99-100,Servlet#service()方法返回

我只对在这三个线程中为这四个持续时间生成事件感兴趣,然后将它们与单个请求相关联。

jmc java-mission-control jfr java-11

4
推荐指数
1
解决办法
158
查看次数

java.net.UnknownHostException:www.terracotta.org

Jboss服务器启动时出现以下错误.

java.net.UnknownHostException: www.terracotta.org
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177) ~[na:1.6.0_11]
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) ~[na:1.6.0_11]
    at java.net.Socket.connect(Socket.java:519) ~[na:1.6.0_11]
    at sun.net.NetworkClient.doConnect(NetworkClient.java:158) ~[na:1.6.0_11]
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:394) ~[na:1.6.0_11]
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:529) ~[na:1.6.0_11]
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:233) ~[na:1.6.0_11]
    at sun.net.www.http.HttpClient.New(HttpClient.java:306) ~[na:1.6.0_11]
    at sun.net.www.http.HttpClient.New(HttpClient.java:323) ~[na:1.6.0_11]
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:837) ~[na:1.6.0_11]
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:778) ~[na:1.6.0_11]
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:703) ~[na:1.6.0_11]
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1026) ~[na:1.6.0_11]
    at net.sf.ehcache.util.UpdateChecker.getUpdateProperties(UpdateChecker.java:108) [ehcache-core-2.6.5.jar:na]
    at net.sf.ehcache.util.UpdateChecker.doCheck(UpdateChecker.java:72) [ehcache-core-2.6.5.jar:na]
    at net.sf.ehcache.util.UpdateChecker.checkForUpdate(UpdateChecker.java:60) [ehcache-core-2.6.5.jar:na]
    at net.sf.ehcache.util.UpdateChecker.run(UpdateChecker.java:51) [ehcache-core-2.6.5.jar:na]
    at java.util.TimerThread.mainLoop(Timer.java:512) [na:1.6.0_11]
    at java.util.TimerThread.run(Timer.java:462) [na:1.6.0_11]
Run Code Online (Sandbox Code Playgroud)

针对根本原因的任何解决方案都会有所帮助.

java ehcache

3
推荐指数
1
解决办法
2859
查看次数

liferay门户网站内的哪些技术

我只是对着名的Java门户网站liferay门户感到好奇.但我不知道,有多少技术集成在内部,它们是什么?

java liferay

2
推荐指数
1
解决办法
4342
查看次数

java.lang.NoClassDefFoundError:无法在Jboss 5.0 EAP上初始化类org.apache.poi.POIXMLDocument

在Jboss 5.0 EAP中获得以下异常,但它在JBoss 5.1 GA中运行良好.

我们正在使用POI 3.7和包含的罐子

  • POI-3.7.jar
  • POI-OOXML-schemas.jar
  • POI-ooxml.jar

堆栈跟踪是

ERROR [org.apache.catalina.core.ContainerBase.[jboss.ueb].[localhost].[fesbcon-Fig].[Faces Servlet]]
    3;13;44.4g3pM (http-0.0.0.0-8280-1) Servlet.service() -For servlet Faces Servlet threu exception
    java.lang.NoClassDe-FFoundError: Could not initialize class org.apache.poi.POIXMLDocument
    at org.apache.poi.ss.usermodel.HorkbookFactory.create(HorkbookFactory.java:62)
    at com.-Ferguson.esb.con-Fig.controller.AssociationsExcelUploadController.submit(Unknoun Source)
    at sun.re-Flect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.re-Flect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.re-Flect.DelegatingMethodAccessorImpl.invoke(Delegating?ethodAccessorImpl.java:25)
    at java.lang.re-Flect.Method.invoke(Method.java:597)
    at org.apache.my-Faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
    at org.apache.my-Faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:61)
Run Code Online (Sandbox Code Playgroud)

请建议如何在JBoss 5.0 EAP中解决此问题

java apache-poi jboss5.x jsf-1.2

2
推荐指数
2
解决办法
3万
查看次数

MySQL 客户端与服务器时区

我遇到一个问题,MySQL 存储的日期时间值与客户端传递的日期时间值不同。服务器以 UTC 运行,而客户端在不同的时区运行。DATE不知何故,MySQL 似乎会在客户端和服务器时区之间转换日期时间值,即使 SQL 类型TIMETIMESTAMP都没有时区。到目前为止,我测试过的其他数据库都没有这种行为。

以下代码可用于重现该问题。当服务器以 UTC 运行时,代码仅当客户端也以 UTC 运行时才有效。

try (Connection connection = this.dataSource.getConnection();
     PreparedStatement preparedStatement = connection.prepareStatement(
             "SELECT ? = DATE '1988-12-25', ? = TIME '15:09:02', ? = TIMESTAMP '1980-01-01 23:03:20'")) {
  preparedStatement.setDate(1, java.sql.Date.valueOf("1988-12-25"));
  preparedStatement.setTime(2, java.sql.Time.valueOf("15:09:02"));
  preparedStatement.setTimestamp(3, java.sql.Timestamp.valueOf("1980-01-01 23:03:20"));
  try (ResultSet resultSet = preparedStatement.executeQuery()) {
    while (resultSet.next()) {
      System.out.println(resultSet.getBoolean(1));
      System.out.println(resultSet.getBoolean(2));
      System.out.println(resultSet.getBoolean(3));
    }
  }

}
Run Code Online (Sandbox Code Playgroud)

我在用着

  • MySQL 5.7.14
  • mysql-连接器-java 6.0.5
  • 甲骨文Java 1.8.0_131

我的 JDBC URL 只是jdbc:mysql://host:port/database

编辑

我为什么时区不应该在这里发挥作用并且不应该发生时区转换的原因有两个。首先,在 SQL 级别上 …

java mysql timezone datetime jdbc

1
推荐指数
1
解决办法
2827
查看次数