我正在努力使用自定义 JFR 事件对异步 servlet 请求处理进行建模。我面临的挑战是,在异步处理中,一个请求可能会被#dispatch()多次编辑。这意味着整个请求处理链可能会被多次执行,在不同的线程中间隔一段时间。如何使用自定义 JFR 事件对此进行建模?
对我有帮助的是“父”事件的概念(可能在不同的线程中)或事件的暂停和恢复。
编辑
稍微说明一下这个问题。处理异步请求可能需要 100 秒挂钟时间。然而,在一个Servlet#service()方法中,实际的处理可能只在 4 秒内发生:
Servlet#service()方法返回,AsyncContext开始Servlet#service()方法返回,AsyncContext开始Servlet#service()方法返回,AsyncContext开始Servlet#service()方法返回我只对在这三个线程中为这四个持续时间生成事件感兴趣,然后将它们与单个请求相关联。
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门户网站liferay门户感到好奇.但我不知道,有多少技术集成在内部,它们是什么?
在Jboss 5.0 EAP中获得以下异常,但它在JBoss 5.1 GA中运行良好.
我们正在使用POI 3.7和包含的罐子
堆栈跟踪是
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中解决此问题
我遇到一个问题,MySQL 存储的日期时间值与客户端传递的日期时间值不同。服务器以 UTC 运行,而客户端在不同的时区运行。DATE不知何故,MySQL 似乎会在客户端和服务器时区之间转换日期时间值,即使 SQL 类型TIME和TIMESTAMP都没有时区。到目前为止,我测试过的其他数据库都没有这种行为。
以下代码可用于重现该问题。当服务器以 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)
我在用着
我的 JDBC URL 只是jdbc:mysql://host:port/database
编辑
我为什么时区不应该在这里发挥作用并且不应该发生时区转换的原因有两个。首先,在 SQL 级别上 …