2012-04-11 21 views
6

Mam klasę Java z metodą main(). Zawiera logikę, która pozwala na pewne pomijanie liczb i analizę. Zaplanowane jest uruchamianie raz dziennie i może być ponownie uruchomione ręcznie w razie potrzeby. Procedura używa Log4j do rejestrowania swoich działań. Uruchomienie go i sprawdzenie logu wymaga zdalnego zalogowania do skrzynki hosta.Konwersja programu konsoli Java na aplikację Webapp

Chciałbym przekonwertować go do aplikacji internetowej, gdzie mogę go uruchomić poprzez stronę internetową i zobaczyć wyjście dziennika, najlepiej jak przewija.

Jaki byłby najlepszy sposób na zrobienie tego? Java Webapp? Prosty ogólny internetowy skrypt uruchamiający skrypt? lub jakiejkolwiek innej opcji, której mogę nie znać.

Aktualizacja: trochę więcej szczegółów na temat wymogów:

  1. możliwość uruchamiania programu ze strony internetowej
  2. zdolność dostrzegania wyjście przewijania z Log4j
  3. Gdybym opuścić stronę i wróć ponownie, powinien dać mi znać, że ostatni bieg nadal działa i pokazać dziennik. Nie muszę mieć możliwości równoległego uruchamiania wielu instancji.
+2

Czy masz doświadczenie z dowolnym środowiskiem sieciowym Java? –

+0

Hm, prosta aplikacja Swing nie działa? –

+0

@Shagaan - Tak, moją ramą sieciową Javy jest Spring MVC – Danish

Odpowiedz

5

Czy zastanawiałeś się nad skonfigurowaniem serwera Hudson/Jenkins do uruchomienia zadania? Ponieważ ma on opisywane funkcje, jest to aplikacja internetowa java i może działać bez modyfikacji w istniejącym projekcie.

+0

Jako dodatkowy bonus, możesz użyć Jenkinsa do zbudowania kodu źródłowego Java i przetestowania go. – Bernard

+0

i jeśli będziesz mieć dodatkowe zadania w przyszłości, możesz dodać je bez modyfikacji. A jeśli pracujesz w zespole, ludzie mogą już znać Jenkinsa. I dostajesz poprawki błędów (i prawdopodobnie wtyczki) za darmo. I ... – Kevin

+0

To wygląda całkiem fajnie! Na pewno dam temu strzał. Czy można to wdrożyć w chmurze Windows Azure? – Danish

0

można spróbować nazywając usługę internetową z JSP/JSF

+0

Przykro mi, że nie miałem jasności co do moich wymagań. Zaktualizowałem moje pytanie, aby je odzwierciedlić. Myślę, że to zadziała, ale chciałbym zobaczyć dziennik przewijania. Ponadto proces może działać dłużej niż limit czasu HTTP. – Danish

+0

Podejrzewam, że usługa sieciowa jest nadal dostępna w twoim przypadku. prawda? – vkantiya

+1

można zrobić przewijanie dziennika za pomocą pewnego rodzaju rozwiązania komet/długiego wyboru. – Kevin

1

Można przesłać formularz za pośrednictwem AJAX i użyć Ajax z wiosny MVC do sondowania nowych wpisów do dziennika i dodać je do tabeli na stronie. Oto krótki przykładowy kod dla wywołania AJAX w celu sprawdzenia nowego wpisu dziennika przy użyciu JQuery i metody kontrolera Spring MVC do obsługi tego wpisu.

JSP:

$.getJSON("logs.htm", { lastLogId: logId }, function(response) { 
    $('#myTable tr:last').after('<tr><td>' + response + '</td></tr>'); 
}); 

Wiosna MVC Controller (zwraca JSON):

@Controller 
public class LogController { 

    @RequestMapping("logs.htm") 
    public @ResponseBody String getLogs(@RequestAttribute("lastLogId") Integer lastLogId, HttpSession sess) { 
     LogList logs = sess.getAttribute("logs"); // just an example using user-defined class "LogList" 
     return logs.getNextLog(lastLogId); 
    } 
} 

Istnieje kilka sztuk nie wspominając tu (musiałby przechowywać dane logowania do sesji kiedy log4j logi, itp ..), ale mam nadzieję, że jest to przynajmniej pomocne, aby zobaczyć sposób na to, używając Spring MVC i AJAX.