Announcement

Collapse
No announcement yet.

applikation in tomcat JVM starten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • applikation in tomcat JVM starten

    Hallo!
    Ich moechte mit tomcat 5.0 eine konventionelle Applikation gemeinsam mit einer Web-Anwendung betreiben.
    Wenn die Web-Anwendung gestartet wird, soll auch die Applikation starten.
    Die konventionelle Applikation sammelt permanent Daten und Zustaende die dann mittels Servlet ausgelesen und angezeigt werden sollen (entweder als Beans oder mittels getter-Methoden).
    Wer kann mir einen Hinweis geben wo ich mich dazu naeher informieren kann oder kann mir kurz umreissen wie ich dazu vorgehen soll?

    Also z.B. soll folgendes Programm gestartet werden und die Methode getOuttext() dem Servlet zur Verfuegung stehen.

    public class SayHello {
    private String outtext;

    public SayHello(){
    this.outtext = "I say Hello.";
    }// end constructor()

    public String getOuttext() {
    return outtext;
    }// end getOuttext()

    public static void main(String[] args) {

    SayHello say = new SayHello();

    while(true){}

    }// end main()
    }// end SayHello

    Vielen Dank fuer Antworten im voraus.

    Ciao, gutux

  • #2
    Hi gutux,
    Die Klasse SayHello kannst du doch von einem Servlet aus instanzieren und dann deren Methoden benutzen. Wenn Du von allen Servlets der Webapplikation aus die selbe Instanz verwenden willst, packe sie per setAttribute() in den Appliactionkontext und hole sie überall, wo du auf ihre Methoden angewiesen bist, mit getAttribute() wieder heraus. Wenn Du möchtest, dass die Klasse beim Start der Webanwendung instanziert wird, kannst Du das Servlet, das die Instanzierung und der Klasse und das Packen in den Applikation-Kontext durchführt, mit einem entsprechenden Eintrag in der web.xml beim Start der Webanwendung loslaufen lassen. Wenn Du das so machst, brauchst Du keine extra Anwendung. Wenn Du allerdings wirklich unbedingt eine extra Anwendung brauchst, muss diese in einer separaten JWM gestartet werden. Die Kommunktation mit dieser Anwendung muss dann z.B. mittels RMI geschehen. Ich sehe aber nicht, dass das nötig ist
    http://www.winfonet.eu

    Comment


    • #3
      Hallo ngomo!

      Danke fuer Deine rasche Antwort.
      Wichtig ist, dass die main()-Methode (bzw. der Konstruktor) der Klasse SayHello aufgerufen wird und unabhaengig von Client-Requests weiterlaeuft.
      Die while-Schleife ist in Wirklichkeit eine endlos-Schleife die regelmaessig Kommandos abarbeitet (koennte auch im Konstruktor laufen).
      RMI oder eine gemeinsam verwendete Datenbasis moechte ich mir sparen.

      Ciao, gutu

      Comment


      • #4
        Hallo,

        Wenn Du in Deiner <i>main()</i> eine Endlosschleife laufen hast, würde Deine WebApp bei einem Aufruf blockiert werden.Daher hilft hier wohl nur entweder ein eigener Thread oder ein eigener Prozess.

        Sprich: Entweder Du schreibst Dir einen Multithreading-Wrapper, der in einem eigenen Thread die <i>main()</i> Methode Deiner externen App aufruft, oder Du musst die Applikation wirklich koplett extern starten - und dann mit RMI, CORBA, WebServices, ... darauf zugreifen.

        Ich hoffe, das hilft ein bißchen,

        Jör

        Comment


        • #5
          Hallo,
          die Endlosschleife hatte ich übersehen. Joerg hat Recht in so einem Fall muss die in einem eigenen Thread laufen. Kann sein, dass Dir da Sicherheitseinstellungen in die Quere kommen. Probiers einfach aus. Falls es Probleme gibt, musst Du das spawnen von Threads im Container explizit erlauben
          http://www.winfonet.eu

          Comment

          Working...
          X