Servlet: Anwendung auf Server starten



  • Hallo.
    Ich habe folgendes Problem:
    Ich möchte mittels eines Servlets eine Anwendung auf dem Server starten. (W2k / Tomcat 4.1.30)
    Dies funktioniert auch ansatzweise mit der Methode Runtime.getRuntime().exec().
    Leider läuft die Anwendung nur im Hintergrund, d.h die GUI der Anwendung wird nicht angezeigt und die einzige Möglichkeit sie wieder zu beenden ist den Prozess über den Taskmanager zu beenden.
    Gibt es eine Möglichkeit die Anwendung "richtig" zu starten?
    Gruss,
            Markus



  • Darf ich den sinn dahinter erfahren.

    Das bringt irgendwie nichts?
    aber theoretisch wuerde ich in der JNI doku nachsehen.
    mittels native calls solltest es dir moeglich sein eine anwendung auf dem monitor zu starten

    welches betriebssystem willst du den nutzen?
    ich glaub direkt bietet java da kaum moeglichkeiten

    ich schau mich mal um

    Gomberl



  • hallo

    geht prima... die applikation öffnet sich problemlos...
    obwohl mir der sinn nicht ganz klar ist.

    zumindest auf einem windows rechner (win98, dann wird deiner auch gehen) und der tomcat läuft auf der gleichen maschine.
    denke, es gibt "von außen" schwierigkeiten..

    getestet habe ich (billig) mit einem standardservlet vom tomcat.. dem hello world.
    unten habe ich eine getRuntime.exec eingefügt..

    sie startet mein momentanes mail programm...**
    Achtung: willst du konsolenprogramme starten, wirst du über command.com gehen müssen..**

    der einfachheit halber das ganze stück.
    bis denn:

    public class HelloWorldExample extends HttpServlet {
    
        public void doGet(HttpServletRequest request,
                          HttpServletResponse response)
            throws IOException, ServletException
        {
            ResourceBundle rb =
                ResourceBundle.getBundle("LocalStrings",request.getLocale());
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
    
            out.println("<html>");
            out.println("<head>");
    
    	    String title = rb.getString("helloworld.title");
    
    	    out.println("<title>" + title + "</title>");
            out.println("</head>");
            out.println("<body bgcolor=\"white\">");
    
    	// note that all links are created to be relative. this
    	// ensures that we can move the web application that this
    	// servlet belongs to to a different place in the url
    	// tree and not have any harmful side effects.
    
            // XXX
            // making these absolute till we work out the
            // addition of a PathInfo issue
    
    	    out.println("<a href=\"/examples/servlets/helloworld.html\">");
            out.println("<img src=\"/examples/images/code.gif\" height=24 " +
                        "width=24 align=right border=0 alt=\"view code\"></a>");
            out.println("<a href=\"/examples/servlets/index.html\">");
            out.println("<img src=\"/examples/images/return.gif\" height=24 " +
                        "width=24 align=right border=0 alt=\"return\"></a>");
            out.println("<h1>" + title + "elise</h1>");
            out.println("</body>");
            out.println("</html>");
    
    //hier noch dazugefügt
            try {
    		String comand = "E:\\GeMail\\Gemail.exe";
    		Process proc = Runtime.getRuntime().exec(comand);
    		Reader inReader = new InputStreamReader(proc.getInputStream());
    
    		int ch;
    		while((ch = inReader.read()) != -1)
    		  System.out.println(ch);
    		} catch (Exception ex) {
    		  ex.printStackTrace();
             }
        }
    }
    


  • Hallo.

    Der Sinn hinter dieser Aktion ist folgender:
    Auf dem Server (W2k) soll eine Applikation laufen, welche auch über Servlets konfiguriert, gestopt und eben auch gestartet werden soll.

    @elise:
    Ich habe das von Dir gepostete Servlet mit der Notepad.exe auf dem Server getestet. Leider wurde auch das Notepad nur als Prozess gestartet und konnte nur über den Taskmanager gestoppt werden.

    Gruss,
    Markus



  • system windows98

    java 1.4.2_03

    folgender code funktioniert einwandfrei, notepadfenster öffnet sich:

    try {
    		String comand = "c:\\windows\\notepad.exe";
    		Process proc = Runtime.getRuntime().exec(comand);
    		Reader inReader = new InputStreamReader(proc.getInputStream());
    
    		int ch;
    		while((ch = inReader.read()) != -1)
    		  System.out.println(ch);
    		} catch (Exception ex) {
    		  ex.printStackTrace();
             }
    

    ich denke, es liegt dann an deinem windows.. oder der tomcatversion..

    tomcat version 4.1 geht auf win98



  • os: du hast einen nt rechner.. hmm

    versuch mal sowas :

    Runtime.getRuntime().exec("cmd /c \"start " ..... und weiter);

    schau dir mal die unterscheidung an, bei win98 läuft start ohne, bei nt mit cmd /c

    http://shovel.upb.de/cgi-bin/cvsweb/javaclient/steam/framework/BrowserStarter.java?rev=1.24

    könnte eventuell zu erfolgen führen, ansonsten treibe dich mal unter "Runtime.getRuntime().exec" und "nt" oder "xp" in google rum.

    viel glück 🙂


Anmelden zum Antworten