All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.beifengtz.jvmm.server.controller.ProfilerController Maven / Gradle / Ivy

Go to download

Provides access to operating system, process, thread and other information during Java runtime.

There is a newer version: 2.4.3
Show newest version
package org.beifengtz.jvmm.server.controller;

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import io.netty.util.concurrent.EventExecutor;
import org.beifengtz.jvmm.common.util.FileUtil;
import org.beifengtz.jvmm.common.util.SystemPropertyUtil;
import org.beifengtz.jvmm.convey.GlobalStatus;
import org.beifengtz.jvmm.convey.GlobalType;
import org.beifengtz.jvmm.convey.entity.JvmmResponse;
import org.beifengtz.jvmm.core.JvmmFactory;
import org.beifengtz.jvmm.core.entity.profiler.ProfilerCounter;
import org.beifengtz.jvmm.core.entity.profiler.ProfilerEvent;
import org.beifengtz.jvmm.server.annotation.JvmmController;
import org.beifengtz.jvmm.server.annotation.JvmmMapping;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.io.IOException;
import java.util.Locale;
import java.util.UUID;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

/**
 * 

* Description: TODO *

*

* Created in 2021/6/29 * * @author beifengtz */ @JvmmController public class ProfilerController { private static final Logger log = LoggerFactory.getLogger(ProfilerController.class); @JvmmMapping(typeEnum = GlobalType.JVMM_TYPE_PROFILER_EXECUTE) public String execute(JsonElement data) throws IOException { return JvmmFactory.getProfiler().execute(data.getAsString()); } @JvmmMapping(typeEnum = GlobalType.JVMM_TYPE_PROFILER_SAMPLE) public JvmmResponse sample(String type, EventExecutor executor, JsonObject data) throws Exception { String format; if (data.has("format")) { format = data.get("format").getAsString(); } else { format = "html"; } File to = new File(SystemPropertyUtil.get("user.dir") + "/TempFile", UUID.randomUUID() + "." + format); if (to.getParentFile() != null && !to.getParentFile().exists()) { to.getParentFile().mkdirs(); } ProfilerEvent event; if (data.has("event")) { event = ProfilerEvent.valueOf(data.get("event").getAsString().toLowerCase(Locale.ROOT)); } else { event = ProfilerEvent.cpu; } ProfilerCounter counter; if (data.has("counter")) { counter = ProfilerCounter.valueOf(data.get("counter").getAsString().toLowerCase(Locale.ROOT)); } else { counter = ProfilerCounter.samples; } // 单位秒 int time = 10; if (data.has("time")) { time = data.get("time").getAsInt(); } Future future; if (data.has("interval")) { future = JvmmFactory.getProfiler().sample(to, event, counter, data.get("interval").getAsLong(), time, TimeUnit.SECONDS); } else { future = JvmmFactory.getProfiler().sample(to, event, counter, time, TimeUnit.SECONDS); } JvmmResponse response = JvmmResponse.create().setType(type); String result = future.get(); if (to.exists()) { String hexStr = FileUtil.readToHexStr(to); response.setStatus(GlobalStatus.JVMM_STATUS_OK).setData(new JsonPrimitive(hexStr)); to.delete(); } else { response.setStatus(GlobalStatus.JVMM_STATUS_PROFILER_FAILED); } response.setMessage(result); return response; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy