Visualizzazione dei risultati da 1 a 6 su 6

Discussione: batch script con Java

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    3

    batch script con Java

    Ciao tutti,

    questo è il mio primo post, e sono una total beginner di java , quindi mi scuso in anticipo se la mia domanda è troppo low level.
    Dunque io ho fatto un programma in cui ci sono un Capo(con il suo proprio main) e Servitori(con il suo main). Ognuno ha il suo main perchè lo scopo è quello che questi oggetti siano dei programmi indipendenti. in pseudo codice la situazione è la seguente:

    Capo{ main()} - lanciato una volta

    Servitori{ main()} -lanciato più volte a seconda del numero di servitori richiesto(2, 3,..)

    Ogni servitore ha il suo proprio id e comunicano tramite socket UDP. Dunque il mio problema è quello di far partire i programmi:
    -far partire il Capo
    -far partire i Servitori, ognuno con il suo id

    Come dunque far uno star-up semplice e allo stesso tempo intelligente?
    Secondo voi è conveniente usare un batch script ?
    In tal caso, quali sono i comandi e come lo devo scrivere e dove lo metto?

    grazie per l'attenzione

    maribo

  2. #2
    La domanda non è chiara. Non si capisce cosa intendi per startup "intelligente". In ogni modo dallo scenario che hai descritto mi sembra che tu abbia deciso di stare in ascolto con dei thread, e se non sai nemmeno far partire un applicativo java stai facendo il passo più lungo della gamba. Ti consiglio di partire un po più dalle basi. In ogni caso se spieghi meglio il problema si cercherà di risponderti
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    3
    Originariamente inviato da unomichisiada
    La domanda non è chiara. In ogni caso se spieghi meglio il problema si cercherà di risponderti
    Si dunque, ORA lancio i programi in questo modo:

    faccio partire con il bottone RUN l'oggetto BOSS e appunto con dei thread si pone in ascolto e trasmette messaggi, poi faccio partire con il bottone RUN l'oggetto SERVITORE, dandogli da tastiera il suo id. Nella stessa maniera lancio l'oggetto SERVITORE il numero di volte necessario, per esempio se mi servono 3 servitori ripeto tre volte la stessa operazione danno id diversi.

    Perciò per START_UP intelligente intendo un modo che possa essere meno macchinoso di quello attuale.
    Ho letto su internet che si potrebbe far partire tutti i programmi con un batch script, ma io non saprei da dove iniziare.

    Quindi le mie domande sono le seguenti:
    -secondo voi è conveniente fare lo start_up con un batch script?
    -se si, come si scrive, con quali comandi?
    -se no, come si potrebbe fare altrimenti?

    grazie per l'attenzione

    maribo

  4. #4
    Certo è possibile farlo anche con uno script, il come è fatto questo script dipende dal sistema operativo da cui esegui i programmi. Ma per fare le cose ancora più semplici puoi banalmente scriverti un Master Program che faccia da launcher per i tuoi Boss e servitori e avviare sempre e solo quello.
    una cosa del tipo:

    codice:
    package test;
    
    public class A {
    
    	public static void main(String[] args) {
    		System.out.println("ciao sono A");
    	}
    }
    
    package test;
    
    public class B {
    
    	public static void main(String[] args) {
    		System.out.println("ciao sono B");
    	}
    }
    
    package test;
    
    public class Launcher {
    
    	public static void main(String[] args) {
    		A.main(null);
    		B.main(null);
    	}
    }
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    3
    unomichisiada,mille grazie per la risposta...ho provato ma non funziona.

    Il risultato è quello di avere una sola console, mostra solo i log di Boss, mentre gli altri log non lo vedo.

    Per avere più chiare le idee, scrivo un po' di codicillo:

    questo è BOSS :

    codice:
       1. Boss{       2. public static void main(String[] args) {      3.                 Thread boss = null;      4.                  boss = new Thread( new Peer(0, numberServant , Peer.Role.BOSS),      5.                 "Boss");      6.                 boss.start();      7. }
    questo è SERVANT:

    codice:
       1. Servant{       2. public static void main(String[] args) {      3.         Thread servant = null;      4.         servant = new Servant(new Peer(index, numberServant, Peer.Role.SERVANT),"Servant#" + index);      5.       6.         servant.start();      7. }
    Dovrei procedere con una procedura che mi faccia girare il Boss, e poi un numero fissato di Servant, a cui devo passare un id [l'index nel codice]: ora come ora glielo passo io l'id, ma questo vorrei evitarlo. Ogni oggetto poi deve avere la sua bella console perchè ci sono molti output di testo per vedere se e come interagiscono Boss+ Servants tra loro.
    Meccanicamente funziona (ho descritto la procedura che seguo nel precedente post), ma chiedo cortesemente se c'è un'altra via più intelligente.

    Grazie per l'attenzione

    maribo

  6. #6
    ora come ora glielo passo io l'id, ma questo vorrei evitarlo
    A questo punto mi sorge il dubbio che parliamo di come lanciare diversi programmi (scritti in java) ottenendo il process id dal sistema operativo e usandolo in qualche maniera, che mi sfugge, ma in questo caso saresti sulla sezione errata del forum, perchè tutto ciò poco c'entra con la programmazione java.

    mostra solo i log di Boss, mentre gli altri log non lo vedo
    Questo mi pare piuttosto strano, vedi tutto sulla stessa console ovviamente, ma vedi i log di tutti i thread su System.out , se usi una libreria di logging tutto dipende da come la usi e da quale usi...

    Ogni oggetto poi deve avere la sua bella console
    Di nuovo, se usi System.out va tutto a finire sulla stessa console ovviamente, quindi puoi loggare su file o su un un pannello di testo Swing se vuoi ottenere questo risultato programmando in java, se l'obiettivo è lanciare i 3 o più programmi da shell del sistema operativo (che giustamente non dovrebbe essere noto a priori programmando in java) allora sei nella sezione sbagliata perché è un quesito relativo alla programmazione shell del tuo specifico Sistema Operativo.


    Riassumendo: questa cosa la vuoi fare in java oppure no? Se si, ti ho dato le risposte (che se non sono chiare posso aiutarti a chiarire), se no devi chiedere a un moderatore di spostare il thread sulla sezione opportuna.

    Ciao
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.