mirror of
https://github.com/wahyd4/pinpoint.git
synced 2026-08-17 00:36:02 +10:00
git-svn-id: http://svn.bds.nhncorp.com/pe/hippo-tomcat-profiler/trunk@718 84d0f5b1-2673-498c-a247-62c4ff18d310
143 lines
3.8 KiB
Java
143 lines
3.8 KiB
Java
package com.profiler.sender;
|
|
|
|
import com.profiler.Agent;
|
|
import com.profiler.common.dto.AgentInfoDTO;
|
|
import com.profiler.config.ProfilerConfig;
|
|
|
|
import java.io.ObjectOutputStream;
|
|
import java.net.Socket;
|
|
import java.util.Map.Entry;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
|
|
@Deprecated
|
|
public class AgentInfoSender extends Thread {
|
|
|
|
private final Logger logger = Logger.getLogger(AgentInfoSender.class.getName());
|
|
|
|
private boolean isAgentStart;
|
|
private Socket requestSocket = null;
|
|
|
|
public AgentInfoSender(boolean isAgentStart) {
|
|
this.isAgentStart = isAgentStart;
|
|
}
|
|
|
|
public void run() {
|
|
logger.info("send agent info");
|
|
|
|
if (isAgentStart) {
|
|
sendAgentStartInfo();
|
|
} else {
|
|
sendAgentStopInfo();
|
|
}
|
|
}
|
|
|
|
private void sendAgentStopInfo() {
|
|
try {
|
|
connectToServer();
|
|
|
|
Agent agent = Agent.getInstance();
|
|
String ip = agent.getServerInfo().getHostip();
|
|
String portNumbers = "";
|
|
for (Entry<Integer, String> entry : agent.getServerInfo().getConnectors().entrySet()) {
|
|
portNumbers += " " + entry.getKey();
|
|
}
|
|
|
|
AgentInfoDTO dto = new AgentInfoDTO(ip, portNumbers);
|
|
|
|
dto.setIsDead();
|
|
|
|
if (logger.isLoggable(Level.INFO)) {
|
|
logger.info("send agent stop info. " + dto.toString());
|
|
}
|
|
|
|
ObjectOutputStream stream = new ObjectOutputStream(requestSocket.getOutputStream());
|
|
stream.writeObject(dto);
|
|
stream.close();
|
|
} catch (Exception e) {
|
|
if (logger.isLoggable(Level.WARNING)) {
|
|
logger.log(Level.WARNING, "AgentInfoSender Exception occured:" + e.getMessage(), e);
|
|
}
|
|
} finally {
|
|
closeSocket();
|
|
}
|
|
}
|
|
|
|
private void sendAgentStartInfo() {
|
|
while (connectToServer()) {
|
|
try {
|
|
Thread.sleep(ProfilerConfig.SERVER_CONNECT_RETRY_GAP);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
try {
|
|
Agent agent = Agent.getInstance();
|
|
String ip = agent.getServerInfo().getHostip();
|
|
String portNumbers = "";
|
|
for (Entry<Integer, String> entry : agent.getServerInfo().getConnectors().entrySet()) {
|
|
portNumbers += " " + entry.getKey();
|
|
}
|
|
|
|
AgentInfoDTO dto = new AgentInfoDTO(ip, portNumbers);
|
|
|
|
if (logger.isLoggable(Level.INFO)) {
|
|
logger.info("send agent startup info. " + dto.toString());
|
|
}
|
|
|
|
ObjectOutputStream stream = new ObjectOutputStream(requestSocket.getOutputStream());
|
|
stream.writeObject(dto);
|
|
stream.close();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
if (requestSocket != null) {
|
|
closeSocket();
|
|
}
|
|
}
|
|
|
|
private boolean connectToServer() {
|
|
try {
|
|
if (logger.isLoggable(Level.INFO)) {
|
|
logger.info("Trying to connect server. " + ProfilerConfig.SERVER_IP + ":" + ProfilerConfig.SERVER_TCP_LISTEN_PORT);
|
|
}
|
|
requestSocket = new Socket(ProfilerConfig.SERVER_IP, ProfilerConfig.SERVER_TCP_LISTEN_PORT);
|
|
// TODO timeout 처리가 없음. api를 변경해야 될듯.
|
|
if (logger.isLoggable(Level.INFO)) {
|
|
logger.info("Connected to server. " + ProfilerConfig.SERVER_IP + ":" + ProfilerConfig.SERVER_TCP_LISTEN_PORT);
|
|
}
|
|
|
|
return false;
|
|
} catch (java.net.ConnectException ce) {
|
|
|
|
if (logger.isLoggable(Level.SEVERE)) {
|
|
logger.log(Level.SEVERE, "Connect to TomcatProfiler server is failed. " + ProfilerConfig.SERVER_IP + ":" + ProfilerConfig.SERVER_TCP_LISTEN_PORT, ce);
|
|
}
|
|
|
|
return true;
|
|
} catch (Exception e) {
|
|
if (logger.isLoggable(Level.SEVERE)) {
|
|
logger.log(Level.SEVERE, "Connect to TomcatProfiler server is failed. " + ProfilerConfig.SERVER_IP + ":" + ProfilerConfig.SERVER_TCP_LISTEN_PORT, e);
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
|
|
private void closeSocket() {
|
|
try {
|
|
if (requestSocket != null) {
|
|
requestSocket.close();
|
|
logger.info("TCP RequestSocket is closed");
|
|
} else {
|
|
logger.info("TCP RequestSocket is already closed");
|
|
}
|
|
} catch (Exception e) {
|
|
if (logger.isLoggable(Level.WARNING)) {
|
|
logger.log(Level.WARNING, "closeSocket(). " + e.getMessage(), e);
|
|
}
|
|
}
|
|
}
|
|
}
|