İyi günler. Primefaces'in terminal component'ini DB2'nun veya Mysql'in terminaliyle ilişkilenirmek istiyorum. Yani demek istediğim DB2 terminalden girilen komutun gönderdiği sonucu primefaces terminal kompanentinde yansıtmak istiyorum, aynı şekildede yazdığğım sorgunun bu ekrandan terminale ulaşması lazım.

soruldu: 07 May '13, 15:38

kaykisizcom's gravatar image

kaykisizcom
37141417
cevap kabul oranı: 0%

değiştirildi: 09 May '13, 13:30

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183


Merhaba

Process p = Runtime.getRuntime().exec("DB2 terminal komutu")

ile komutu çalıştırıp

p.getInputStream()
p.getOutputStream()
p.getErrorStream()

metodları ile girdi çıktıları yönlendirip istediğin programı yönetebilirsin.

veya aynı işi http://www.javaworld.com/jw-12-2000/jw-1229-traps.html?page=4 adresindeki örneği kullanarak yapabilirsin.

permanent link

cevaplandı: 08 May '13, 00:40

myururdurmaz's gravatar image

myururdurmaz
2.2k11027
cevap kabul oranı: 23%

    try {
        Runtime rt = Runtime.getRuntime();
        Process proc = rt.exec("mysql");
        InputStream stdin = proc.getInputStream();
        OutputStream os = proc.getOutputStream();
        os.write("show databases;\\n".getBytes());
        os.flush();
        //eğer çalışmazsa os.close(); koyup dene
        InputStreamReader isr = new InputStreamReader(stdin);
        BufferedReader br = new BufferedReader(isr);
        String line = null;
        System.out.println("<OUTPUT>");
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
        System.out.println("</OUTPUT>");
        int exitVal = proc.waitFor();
        System.out.println("Process exitValue: " + exitVal);
    } catch (Throwable t) {
        t.printStackTrace();
    }
permanent link

cevaplandı: 09 May '13, 09:37

myururdurmaz's gravatar image

myururdurmaz
2.2k11027
cevap kabul oranı: 23%

os.close; satırını aktif edince çalıştı.Teşekkürler.

(09 May '13, 09:42) cemkiy cemkiy's gravatar image
    public static void main(String args[])
{
    try
    {            
        Runtime rt = Runtime.getRuntime();
        Process proc = rt.exec("mysql");
        proc = rt.exec("show databases;");
        java.io.InputStream stdin =proc.getInputStream();
        InputStreamReader isr = new InputStreamReader(stdin);
        BufferedReader br = new BufferedReader(isr);
        String line = null;
        System.out.println("<OUTPUT>");
        while ( (line = br.readLine()) != null)
            System.out.println(line);
        System.out.println("</OUTPUT>");
        int exitVal = proc.waitFor();            
        System.out.println("Process exitValue: " + exitVal);
    } catch (Throwable t)
      {
        t.printStackTrace();
      }
}

Hocam bu örnek çalışmıyor. Normal terminal komutları alabiliyorum veya gönderebiliyorum. Ancak bu şekilde mysql'e veya db2'ya bağlanamıyorum. Bu sorunu nasıl aşabilirim?

permanent link

cevaplandı: 09 May '13, 08:33

cemkiy's gravatar image

cemkiy
25124
cevap kabul oranı: 0%

çalıştıramıyorum derken nasıl çalışmıyor ? hata mı veriyor ? işlem mi yapmıyor. getErrorStream() ile hata çıktısını okuyup ne geliyor baktınızmı ?

(09 May '13, 08:43) myururdurmaz myururdurmaz's gravatar image

Yukarıda ki gibi çalıştığında verdiği hata şu oluyor

java.io.IOException: Cannot run program "show": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1042)
at java.lang.Runtime.exec(Runtime.java:615)
at java.lang.Runtime.exec(Runtime.java:448)
at java.lang.Runtime.exec(Runtime.java:345)
at sad.main(sad.java:24)

Caused by: java.io.IOException: error=2, No such file or directory at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.<init>(UNIXProcess.java:135) at java.lang.ProcessImpl.start(ProcessImpl.java:130) at java.lang.ProcessBuilder.start(ProcessBuilder.java:1023) ... 4 more

Ancak "proc = rt.exec("show databases;");" satırını sildiğimde hata vermiyor ve çıktı şu oluyor:

<OUTPUT>

Burada program tıkanıyor. while döngüsüne girmiyor.

permanent link

cevaplandı: 09 May '13, 09:08

cemkiy's gravatar image

cemkiy
25124
cevap kabul oranı: 0%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×281
×144
×97
×4
×3

Soruldu: 07 May '13, 15:38

Görüntüleme: 1,162 kez

Son güncelleme: 09 May '13, 13:30

powered by BitNami OSQA