Ron*_*adi 6 java profiling wildfly jfr wildfly-16
背景
我正在开发jboss/wildfly 16servlet mypackagex.war。这是一个maven项目。我的服务器使用openjdk11-jdk. 我设法使用 jcmd 运行生成 java 飞行记录。并设法使用 JDK Mission Control 打开该 jfr 转储。一切都很好而且花花公子。
JPID=616
jcmd $JPID JFR.configure repositorypath=/tmp/jcmdrecording/
jcmd $JPID JFR.start settings=default.jfc name=recording1 filename=JFRfile.jfr disk=true dumponexit=true maxage=2d maxsize=2000m path-to-gc-roots=true
jcmd $JPID JFR.check
jcmd $JPID JFR.dump /tmp/recording1.jfr
Run Code Online (Sandbox Code Playgroud)
问题
当我尝试以编程方式进行自定义事件记录时,如下例所示。我收到一个错误。就好像野蝇不知道jdk.jfr.Event存在一样。我错过了什么?
声明自定义事件记录器示例
package com.mypackagex.dao;
import jdk.jfr.Category;
import jdk.jfr.Event;
import jdk.jfr.Label;
import jdk.jfr.Period;
@Label("Database stats")
@Period("1 s")
@Category("Database")
public class DatabaseStatsEvent extends Event {
}
Run Code Online (Sandbox Code Playgroud)
拍摄飞行记录事件的代码位置
public class UrlObjectActionMapperDAO {
private static String jndiDataSourceName = "jdbc/cedar_mypackagex_security";
private static DataSource dataSource = getDataSourceFromJNDI();
static Logger logger = LoggerFactory.getLogger(UrlObjectActionMapperDAO.class);
private static DataSource getDataSourceFromJNDI() {
return DatasourceProvider.getProvider().getDsSecurity();
}
public UrlObjectActionMapperDTO getURLMappedProps(String URI){
DatabaseStatsEvent ev = new DatabaseStatsEvent(); // --------- line 49 the issue!
ev.begin();
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
错误
滚动到右侧您将看到的位置jdk/jfr/Event
local-mypackagex | Caused by: java.lang.NoClassDefFoundError: Failed to link com/mypackagex/dao/DatabaseStatsEvent (Module "deployment.mypackagex.war" from Service Module Loader): jdk/jfr/Event
local-mypackagex | at deployment.mypackagex.war//com.mypackagex.dao.UrlObjectActionMapperDAO.getURLMappedProps(UrlObjectActionMapperDAO.java:49)
local-mypackagex | at deployment.mypackagex.war//com.mypackagex.services.RBACService.getURLMappedProps(RBACService.java:70)
local-mypackagex | at deployment.mypackagex.war//com.mypackagex.servlet.RBACFilter.validateRequest(RBACFilter.java:465)
local-mypackagex | at deployment.mypackagex.war//com.mypackagex.servlet.RBACFilter.validateRequest(RBACFilter.java:450)
local-mypackagex | at deployment.mypackagex.war//com.mypackagex.servlet.RBACFilter.doFilter(RBACFilter.java:235)
local-mypackagex | at io.undertow.servlet@2.0.19.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
local-mypackagex | at io.undertow.servlet@2.0.19.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
local-mypackagex | at deployment.mypackagex.war//com.mypackagex.servlet.ProxyResponseBuilderFilter.doFilter(ProxyResponseBuilderFilter.java:456)
local-mypackagex | at io.undertow.servlet@2.0.19.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
local-mypackagex | at io.undertow.servlet@2.0.19.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
local-mypackagex | at deployment.mypackagex.war//org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
local-mypackagex | at deployment.mypackagex.war//org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
local-mypackagex | at deployment.mypackagex.war//org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
local-mypackagex | at deployment.mypackagex.war//org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
local-mypackagex | at deployment.mypackagex.war//org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387)
local-mypackagex | at deployment.mypackagex.war//org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
Run Code Online (Sandbox Code Playgroud)
小智 1
我遇到了同样的问题,可以在 Wildfly 15 中解决(使用 Java 11):
确保你的jboss-deployment-structure.xml包含:
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="jdk.jfr"/>
</dependencies>
</deployment>
</jboss-deployment-structure>
Run Code Online (Sandbox Code Playgroud)
但要注意,我主要是通过反复试验得到的,并不完全理解后果以及为什么默认情况下不包含 jdk.jfr。
我也不知道这在其他野蝇版本上效果如何。
| 归档时间: |
|
| 查看次数: |
1218 次 |
| 最近记录: |