execution of clearcase' cleartool shell from java code

execution of clearcase' cleartool shell from java code does not work
gmeltsinAsked:
Who is Participating?
 
CEHJCommented:
Of course it's conceivable that your container's security policy disallows the creating of processes.
0
 
CEHJCommented:
Try it using this:


import java.io.*;

public class RunAsync {

    public static void main(String args[]) {

     try {

        if(args.length < 1) {
          System.out.println("Usage: java RunAsync <command string>");
          System.exit(-1);
        }
        Process pro = null;
        if (args.length > 1) {
          pro = Runtime.getRuntime().exec(args);
        }
        else {
          pro = Runtime.getRuntime().exec(args[0]);
        }
        InputStream error = pro.getErrorStream();
        InputStream output = pro.getInputStream();
        Thread err = new Thread(new OutErrReader(error));
        Thread out = new Thread(new OutErrReader(output));
        out.start();
        err.start();
        pro.waitFor();
     }
     catch(java.io.IOException e) {
       e.printStackTrace();
     }
     catch(java.lang.InterruptedException e) {
       e.printStackTrace();
     }

    }

    static class OutErrReader implements Runnable {
      InputStream is;

      public OutErrReader(InputStream is) {
        this.is = is;
      }

      public void run() {
        try {
          BufferedReader in = new BufferedReader(new InputStreamReader(is));
          String temp = null;
          while((temp = in.readLine()) != null) {
             System.out.println(temp);
          }
          is.close();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }
    }
}
0
 
gmeltsinAuthor Commented:
clearcase's cleartool expects clearcase view to be set prior to using basic functions(checking ,checkout, etc).
so i need to execute two commands
1. Runtime.getRuntime().exec("cleartool setview view_name");  - sets the view
2. Runtime.getRuntime().exec("cleartool co file_name"); - checksout the file

The problem is that second process does not recognize what was done in first
Second process does not 'see' that the view was set
thanks
0
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
CEHJCommented:
I don't see how this could be any different to how it's executed at the command line.

Are you sure the first is succeeding? You can always change

>>pro.waitFor();

to

System.out.println("Process return value: " + pro.waitFor());

to see
0
 
gmeltsinAuthor Commented:
no return value
pro.waitFor() hangs after Runtime.getRuntime().exec("cleartool setview view_name"),
but the same command is fine from command line
0
 
CEHJCommented:
>>pro.waitFor() hangs ...

and are you fully using the code i posted?
0
 
gmeltsinAuthor Commented:
when i am using threads the app stops working when i create them.
probably because it's inside struts.
without threads it hangs at pro.waitFor() level
0
 
CEHJCommented:
>>the app stops working when i create them

What do you mean by that? Don't see it should be a Struts-related problem. Maybe your container...
0
 
gmeltsinAuthor Commented:
but i am able  to run other processes...
it seems that the problem is clearcase's cleartool command. it takes the process to the different shell and never exists from there. That's why the app hangs
Anyway, thanks for help. the points are rightfully yours
0
 
CEHJCommented:
>>it takes the process to the different shell and never exists from there.

Well I don't know what you mean by the above, but thanks anyway.
0
 
ReddgumCommented:


"Runtime.getRuntime().exec("cleartool setview view_name");  - sets the view"

The CT setview command only works in Unix, and from what I can tell from your code, each incantation of Runtime.getRuntime().exec actually either runs a new shell or a new thread. If you are attempting to run this code from a Windows platform, "setview" will fail.

Also,

"Runtime.getRuntime().exec("cleartool co file_name"); - checksout the file"

Sure, but then the process will definitely hang WAITING FOR USER INPUT, as you left out the
-nc flag so that the process would not ask for comments for the check-in. :-)

-Just strolling by amusing myself with a little reading.

Cheers,
         -Mike




0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.