Re: launching a java application in background

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



El Miércoles, 2 de Febrero de 2005 16:24, escribió:
> Dear all,
>
> I need to launch a java proccess as a daemon, in background.
>
> It would be like the following:
>
>
> java bin/aplicacion.jar
>
> In interactive mode works fine. We have tried to launch it in background
> using nohup.
>
> If I send everything (all redirections <> ) to /dev/null it works, but I
> do not get the logs
>
> We have tried:
>
> java bin/aplication.jar < /dev/null  > output.log 2>&1 &
>
> But I get in the output file carachters like "->"
>
> Any time of getting those logs?
>
> I hope I have explained myself fine
>
> Regards
>
> Miguel
To deal with this I change on my Java applications, the System.out.* By calls 
to other kind of OUT, then you can make a simple pointer by default from 
System.out, System.err, or substitute this by file output, then you can pass 
an extra argumento to your software to log by default on a file, and use the 
same object (could be static code).
Java have a mechanism to put a thread on a background, in daemon mode, you 
should find more about. Here is an example how I use an objet to have 
properties, like out, and err, you can establish a socket, or open a file for 
writing and you can set the new output calling setOut or setErr.

------------------
package com.compunauta.util;

/**
 * Title:        RUNTimeManager
 * Description:  OUT, ERR, PROPERTIES, handler for threads.
 * for html parser.
 * Copyright:    Copyright (c) 2001
 * Company:      www.compunauta.com
 * @author Gustavo Guillermo Pérez
 * @version 1.0
 */
import java.io.PrintStream;
import java.io.BufferedReader;
import java.util.Properties;
import java.util.Hashtable;
public class RunTimeManager {
public int EXIT_CODE=0;
public boolean BIGFAILURE=false;
public boolean DEBUG=false;
public boolean CHILDREN_MODE=false;
public boolean STOP=false;
public PrintStream out=System.out;
public PrintStream err=System.err;
public static String WORK_DIR="./";
public Properties p=(Properties)null;
public static Properties sp=new Properties();
public static Hashtable h=new Hashtable(10);
public BufferedReader in=new BufferedReader(new 
java.io.InputStreamReader(System.in));
  public RunTimeManager(){}
  public RunTimeManager(boolean debug){this.DEBUG=debug;}
  public RunTimeManager(boolean debug,boolean standalone)
{this.DEBUG=debug;this.CHILDREN_MODE=!standalone;}

  public void setChildren(boolean value){CHILDREN_MODE=value;}
  public void setStandAlone(boolean value){CHILDREN_MODE=!value;}
  public void setChildren(){CHILDREN_MODE=true;}
  public void setStandAlone(){CHILDREN_MODE=false;}
  public boolean VERVOSE=true;
  public boolean exit(int EXIT_CODE){
  this.EXIT_CODE=EXIT_CODE;
  this.STOP=true;
    if (EXIT_CODE!=0){BIGFAILURE=true;}
    if (CHILDREN_MODE) return true;
    else System.exit(EXIT_CODE);
    return false;
  }//end exit

  public void reset(){
    this.BIGFAILURE=false;
    this.EXIT_CODE=0;
    this.STOP=false;
  }//end reset

  public void setOut(PrintStream out){
    this.out=out;
  }//end out

  public void setErr(PrintStream err){
    this.err=err;
  }//end err

  public void setIn(BufferedReader in){
    this.in=in;
  }//end err
  public void setPropertiesFromHash(String Key){
    Object ob=h.get(Key);
    Properties p;
    if (ob==null) {p=new Properties();h.put(Key,p);}
    else {p=(Properties)ob;}
  }//end setpropfromhash
  public void setDebugOn(){this.DEBUG=true;}
  public void setDebugOff(){this.DEBUG=false;}

public void setProperty(String Key, String Value){
  if (this.p==null){sp.setProperty(Key,Value); return;}
  this.p.setProperty(Key,Value);
}//end setproperty


public String getProperty(String Key, String Default){
  if (this.p==null){return sp.getProperty(Key,Default);}
  else {String ob=p.getProperty(Key,Default);
    if (ob==null){
      return sp.getProperty(Key,Default);
    }else return ob;
  }

}//end getProperty

public String getProperty(String Key){
  return getProperty(Key,null);
}//end getProp
public static String getEnvironOs(){
//REQManipulation env=new REQManipulation(System.getProperty("os.name"));
  String env=System.getProperty("os.name");
//  System.out.println(System.getProperties());
if (env.toLowerCase().indexOf("linux")!=-1) return "l";
if (env.toLowerCase().indexOf("windows")!=-1) return "w";
if (env.toLowerCase().indexOf("sol")!=-1) return "s";
  return "w";
}//end getEnvironOs

}//end class



-- 
Gustavo Guillermo Pérez
Compunauta uLinux
www.ulinux.tk
-
: send the line "unsubscribe linux-admin" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Newbie]     [Audio]     [Hams]     [Kernel Newbies]     [Util Linux NG]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Device Drivers]     [Samba]     [Video 4 Linux]     [Git]     [Fedora Users]

  Powered by Linux