JAVA IO Exception Create Process

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • henrymania
    New Member
    • Sep 2007
    • 14

    #1

    JAVA IO Exception Create Process

    Am writing a code for database backup....by backupservlet is as given below

    i get the following exception

    [#|2007-10-31T16:05:25.741 +0530|INFO|sun-appserver-pe8.2|employeet ransaction.DBBa ckupServlet|_Th readID=22;| About to execute the command exp hrms/manager file=C:\ET\ET\E mployeeTransact ion\build\web\b ackupDir\Weekly .dmp log=C:\ET\ET\Em ployeeTransacti on\build\web\lo gDir\Weekly.log |#]
    [#|2007-10-31T16:05:25.803 +0530|WARNING|s un-appserver-pe8.2|javax.ent erprise.system. stream.err|_Thr eadID=22;|
    java.io.IOExcep tion: CreateProcess: exp hrms/manager file=C:\ET\ET\E mployeeTransact ion\build\web\b ackupDir\Weekly .dmp log=C:\ET\ET\Em ployeeTransacti on\build\web\lo gDir\Weekly.log error=2
    at java.lang.Proce ssImpl.create(N ative Method)
    at java.lang.Proce ssImpl.<init>(P rocessImpl.java :81)
    at java.lang.Proce ssImpl.start(Pr ocessImpl.java: 30)
    at java.lang.Proce ssBuilder.start (ProcessBuilder .java:451)
    at java.lang.Runti me.exec(Runtime .java:591)
    at java.lang.Runti me.exec(Runtime .java:429)
    at java.lang.Runti me.exec(Runtime .java:326)
    at employeetransac tion.DBBackupSe rvlet.processRe quest(DBBackupS ervlet.java:183 )
    at employeetransac tion.DBBackupSe rvlet.doGet(DBB ackupServlet.ja va:307)
    at javax.servlet.h ttp.HttpServlet .service(HttpSe rvlet.java:747)
    at javax.servlet.h ttp.HttpServlet .service(HttpSe rvlet.java:860)
    at sun.reflect.Gen eratedMethodAcc essor2305.invok e(Unknown Source)
    at sun.reflect.Del egatingMethodAc cessorImpl.invo ke(DelegatingMe thodAccessorImp l.java:25)
    at java.lang.refle ct.Method.invok e(Method.java:5 85)
    at org.apache.cata lina.security.S ecurityUtil$1.r un(SecurityUtil .java:249)
    at java.security.A ccessController .doPrivileged(N ative Method)
    at javax.security. auth.Subject.do AsPrivileged(Su bject.java:517)
    at org.apache.cata lina.security.S ecurityUtil.exe cute(SecurityUt il.java:282)
    at org.apache.cata lina.security.S ecurityUtil.doA sPrivilege(Secu rityUtil.java:1 65)
    at org.apache.cata lina.core.Appli cationFilterCha in.internalDoFi lter(Applicatio nFilterChain.ja va:257)
    at org.apache.cata lina.core.Appli cationFilterCha in.access$000(A pplicationFilte rChain.java:55)
    at org.apache.cata lina.core.Appli cationFilterCha in$1.run(Applic ationFilterChai n.java:161)
    at java.security.A ccessController .doPrivileged(N ative Method)
    at org.apache.cata lina.core.Appli cationFilterCha in.doFilter(App licationFilterC hain.java:157)
    at org.apache.cata lina.core.Stand ardWrapperValve .invoke(Standar dWrapperValve.j ava:263)
    at org.apache.cata lina.core.Stand ardPipeline.inv oke(StandardPip eline.java:551)
    at org.apache.cata lina.core.Stand ardContextValve .invokeInternal (StandardContex tValve.java:225 )
    at org.apache.cata lina.core.Stand ardContextValve .invoke(Standar dContextValve.j ava:173)
    at org.apache.cata lina.core.Stand ardPipeline.inv oke(StandardPip eline.java:551)
    at org.apache.cata lina.core.Stand ardHostValve.in voke(StandardHo stValve.java:17 0)
    at org.apache.cata lina.core.Stand ardPipeline.inv oke(StandardPip eline.java:551)
    at org.apache.cata lina.core.Stand ardEngineValve. invoke(Standard EngineValve.jav a:132)
    at org.apache.cata lina.core.Stand ardPipeline.inv oke(StandardPip eline.java:551)
    at org.apache.cata lina.core.Conta inerBase.invoke (ContainerBase. java:933)
    at org.apache.coyo te.tomcat5.Coyo teAdapter.servi ce(CoyoteAdapte r.java:189)
    at com.sun.enterpr ise.web.connect or.grizzly.Proc essorTask.doPro cess(ProcessorT ask.java:604)
    at com.sun.enterpr ise.web.connect or.grizzly.Proc essorTask.proce ss(ProcessorTas k.java:475)
    at com.sun.enterpr ise.web.connect or.grizzly.Read Task.executePro cessorTask(Read Task.java:371)
    at com.sun.enterpr ise.web.connect or.grizzly.Read Task.doTask(Rea dTask.java:264)
    at com.sun.enterpr ise.web.connect or.grizzly.Task Base.run(TaskBa se.java:281)
    at com.sun.enterpr ise.web.connect or.grizzly.Work erThread.run(Wo rkerThread.java :83)
    |#]
    [#|2007-10-31T16:05:25.803 +0530|SEVERE|su n-appserver-pe8.2|employeet ransaction.DBBa ckupServlet|_Th readID=22;|stat e is null : false ::: state.isBusy() : false Exception in closing database connections.|#]



    Code:
     Runtime s=Runtime.getRuntime();
          
    	//Process o=null;
            String command = "exp "+usr+"/"+pwd+" file="+backupRealPath+backupFileName+" log="+logRealPath+logFileName;
            
            java.util.logging.Logger.getLogger(getClass().getName()).log(java.util.logging.Level.INFO," About to execute the command " + command);
            try
            {
               Process o=s.exec(command);
                 java.util.logging.Logger.getLogger(getClass().getName()).log(java.util.logging.Level.INFO,o.toString()+ " Process has started " );
                // any error message?
                StreamGobbler errorGobbler = new StreamGobbler(o.getErrorStream(), "ERROR");            
                // any output?
                StreamGobbler outputGobbler = new StreamGobbler(o.getInputStream(), "OUTPUT" );
         
                // kick them off
                errorGobbler.start();
                outputGobbler.start();
                                        
                // any error???
                int exitVal = o.waitFor();
                java.util.logging.Logger.getLogger(getClass().getName()).log(java.util.logging.Level.INFO," Exit Value = " + exitVal);
                errBuff = errorGobbler.getOutPut();
                outBuff = outputGobbler.getOutPut();
                servletOutputStream.println("The command "+command+" has been submitted.<br>");
                servletOutputStream.println(errBuff.toString());
                servletOutputStream.println(outBuff.toString());
                if (exitVal == 0)
                    servletOutputStream.println("The backup completed successfully.<br>");
                else
                    servletOutputStream.println("The backup terminated with error code "+exitVal+".<br>");
            //   fos.flush();
           //    fos.close();
                
            } catch (Throwable t)
              {
                t.printStackTrace();
              }                        
            
              servletOutputStream.flush();
              servletOutputStream.close();
    My streamgobbler is
    Code:
    /*
     * StreamGobbler.java
     *
     * Created on October 9, 2007, 9:53 PM
     *
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     */
    
    package employeetransaction;
    
    /**
     *
     * @author kvishwas
     */
    import java.util.*;
    import java.io.*;
    import javax.servlet.ServletOutputStream;
    import org.apache.naming.java.javaURLContextFactory;
    
    /**
     *
     * @author kvishwas
     */
    public class StreamGobbler extends Thread {
        
        /** Creates a new instance of StreamGobbler */
        InputStream is;
        String type;
        StringBuffer out;
        OutputStream os;
        
        public StreamGobbler(InputStream is, String type)
        {
            this.is = is;
            this.type = type;
            this.out = new StringBuffer();
        
          
            }
            
        
        /* 
        public StreamGobbler(InputStream is, String type,OutputStream redirect)
        {
            this.is = is;
            this.type = type;
            this.os = redirect;
        }
        */
        
        public void run()
        {
            try
            {
                PrintWriter pw =null;
                if(os!=null)
                    pw=new PrintWriter(os);
                
                InputStreamReader isr = new InputStreamReader(is);
                BufferedReader br = new BufferedReader(isr);
                String line=null;
                while ( (line = br.readLine()) != null)
                {    
                   /* if(pw != null)
                        pw.println(line);*/
                    System.out.println(type + ">" + line);
                   String line1 = line + "<br>";
                    out.append(line1);
                }    
                  /*  if(pw != null)
                        pw.flush();*/
             } catch (IOException ioe)
             {
                ioe.printStackTrace();  
             }
        }
        
        public StringBuffer getOutPut()
        {
            return out;
        }
     
        
    }
  • r035198x
    MVP
    • Sep 2006
    • 13225

    #2
    What happens when you run the command

    Code:
    exp hrms/manager file=C:\ET\ET\EmployeeTransaction\build\web\backupDir\Weekly.dmp log=C:\ET\ET\EmployeeTransaction\build\web\logDir\Weekly.log
    manually on the console?

    Comment

    Working...