}
try {
BufferedReader reader = new BufferedReader(new FileReader(socketInfoFile));
String sport = reader.readLine();
String tmp[] = StringUtil.split(sport, ":");
if(tmp.length <=1){
return false;
}
this.port = Integer.parseInt(tmp[1]);
this.host = tmp[0];
reader.close();
}catch (Exception e) {
e.printStackTrace();
return false;
}
}
try {
//访问监听端口。如果监控服务已经启动,则socket会成功建立,否则建立失败,返回false。
//amoeba在初次启动时,监控服务并未启动,流程进入异常,返回false
Socket socket = null;
try{
if(host == null){
//无配置,则读取localhost地址
socket = new Socket(InetAddress.getLocalHost(),port);
}else{
if("0.0.0.0".equals(host)){
//配置为全零网络(默认网络),则读取localhost地址
socket = new Socket(InetAddress.getLocalHost(),port);
}else{
socket = new Socket(host, port);
}
}
}catch(IOException e){
//第一次启动,将进入异常,返回false
return false;
}
socket.getOutputStream().write(command.toByteBuffer(null).array());
socket.getOutputStream().flush();
PacketInputStream pis = new MonitorPacketInputStream();
byte[] message = pis.readPacket(socket.getInputStream());
MonitorCommandPacket response = new MonitorCommandPacket();
response.init(message, null);
if(response.funType == MonitorConstant.FUN_TYPE_OK){
System.out.println("remote application= "+ appplicationName+":"+port+" response OK");
}
socket.close();
return true;
} catch (Exception e) {
return false;
}
}
/**
* 第一次启动时,由于监控服务并未启动,程序将在socket建立时抛出异常返回false
* @param command
* @return false if server not running
*/
public boolean run(MonitorCommandPacket command) {
if(port <=0){
//加载.Amoeba.shutdown.port(文件内容形如127.0.0.1:22334),从文件中获取监控IP和端口
socketInfoFile = new File(ConfigUtil.filter("${amoeba.home}"),appplicationName+".shutdown.port");
if(!socketInfoFile.exists()){
return false;
}
try {
BufferedReader reader = new BufferedReader(new FileReader(socketInfoFile));
String sport = reader.readLine();
String tmp[] = StringUtil.split(sport, ":");
if(tmp.length <=1){
return false;
}
this.port = Integer.parseInt(tmp[1]);
this.host = tmp[0];
reader.close();
}catch (Exception e) {
e.printStackTrace();
return false;
}
}
try {
//访问监听端口。如果监控服务已经启动,则socket会成功建立,否则建立失败,返回false。
//amoeba在初次启动时,监控服务并未启动,流程进入异常,返回false
Socket socket = null;
try{
if(host == null){
//无配置,则读取localhost地址
socket = new Socket(InetAddress.getLocalHost(),port);
}else{
if("0.0.0.0".equals(host)){
//配置为全零网络(默认网络),则读取localhost地址
socket = new Socket(InetAddress.getLocalHost(),port);
}else{
socket = new Socket(host, port);
}
}
}catch(IOException e){
//第一次启动,将进入异常,返回false
return false;
}
sock