Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Jedna instancja programu.

0 views
Skip to first unread message

Kretek Blady

unread,
Jan 15, 2003, 11:08:52 AM1/15/03
to

I jeszcze jedno pytanie: sposob na to,
zeby uzyszkodnik nie mogl odpalic wiecej
niz jedna instancje programu?
A jak sprobuje to najlepiej zeby ta juz
uruchomiona wyskoczyla mu przed oczy. Da rade?

jarek

Piotr Gabryanczyk

unread,
Jan 16, 2003, 2:32:14 AM1/16/03
to Kretek Blady
Sluchaj na jakims porcie TCP w pierwszej instancji.

Druga instancja nie bedzie sie mogla podpiac do portu. Wykryjesz to i
wyslesz komunikat po TCP do tej pierwszej, a pierwsza zrobi
bringToFront().

Oczywiscie ktos inny moze zajac port, ale mozna czekac na informacje
zwrotna i ewentualnie jesli taka nie przyjdzie sprobowac na kolejnym
porcie i tak do skutku.

Inny sposob to plik gdzies w systemie, ale to malo odporne na bledy.

Moznaby jeszcze tak( to by bylo odporne na pady).
Pierwsza instancja tworzy plik np. c:\x i obserwuje go w odstepach
czasowych (klasa Timer).
Kolejne instancje jesli stwierdza ze plik istnieje to kasuja go i czekaja
az pierwsza instancja to zauwazy i znowu utworzy plik.
Jesli po okreslonym czasie pliku nie bedzie to z duzym
prawdowpodobienstwem nie ma innej instancji.

pbs

unread,
Jan 16, 2003, 3:17:58 AM1/16/03
to
On Thu, 16 Jan 2003 08:32:14 +0100
Piotr Gabryanczyk <pio...@duch.mimuw.edu.pl> wrote:

(..)


> Pierwsza instancja tworzy plik np. c:\x i obserwuje go w odstepach
> czasowych (klasa Timer).

(..)

bez sensu - nie mam dysków a,b,c,d,e,f,... ? i co dalej ? gdzie ten plik ?
;-)

--
slackware powered #165326 linux user
http://pbs.linux.net.pl - różne rzeczy dla linuksa
p...@linux.net.pl - napisz do mnie

Marcin Sciesinski

unread,
Jan 16, 2003, 3:35:09 AM1/16/03
to
"pbs" <p...@linux.net.pl> wrote in message
news:2003011609175...@linux.net.pl...

On Thu, 16 Jan 2003 08:32:14 +0100
Piotr Gabryanczyk <pio...@duch.mimuw.edu.pl> wrote:

(..)
> Pierwsza instancja tworzy plik np. c:\x i obserwuje go w odstepach
> czasowych (klasa Timer).
(..)

bez sensu - nie mam dysków a,b,c,d,e,f,... ? i co dalej ? gdzie ten plik ?
;-)

Trzeba zmienic system na jakis bardziej odpowiedni. ;)

Patrz post o banku czytajacym plik uwierzytelniajacy z napedu a:

Pozdrawiam,
Marcin Sciesniski


Pawel Grotowski

unread,
Jan 16, 2003, 6:39:34 AM1/16/03
to

Użytkownik "pbs" <p...@linux.net.pl> napisał w wiadomości
news:2003011609175...@linux.net.pl...

On Thu, 16 Jan 2003 08:32:14 +0100
Piotr Gabryanczyk <pio...@duch.mimuw.edu.pl> wrote:

(..)
> Pierwsza instancja tworzy plik np. c:\x i obserwuje go w odstepach
> czasowych (klasa Timer).
(..)

bez sensu - nie mam dysków a,b,c,d,e,f,... ? i co dalej ? gdzie ten plik ?
;-)

Mozna uzyc metody zwracajacej plik reprezentujacy katalog "tmp".


darioka

unread,
Jan 16, 2003, 8:04:42 AM1/16/03
to
Kretek Blady <kretek...@nospam.wp.pl> napisał(a):

Cośgdzieś widziałem w specyfikacji może była to klasa Runtime w tej chwili
nie mam możliwości tego sprawdzić.

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

darioka

unread,
Jan 16, 2003, 8:06:00 AM1/16/03
to
Kretek Blady <kretek...@nospam.wp.pl> napisał(a):

Cośgdzieś widziałem w specyfikacji może była to klasa Runtime w tej chwili

Kretek Blady

unread,
Jan 16, 2003, 1:15:37 PM1/16/03
to

Z zaproponowanych, najbardziej przemawia do mnie
sposob z soketem. W zasadzie widze tylko jedna jego
wade - co gdy mamy do czynienia z systemem
wielouzytkownikowym (np. aplikacja odpalana na Unixie).

A moze by tak wykorzystac dostepne od 1.4.0 java.util.prefs
poprzez ktore wpisywac jakis klucz sygnalizujacy dzialanie aplikacji?

jarek

Marcin Sperka

unread,
Jan 16, 2003, 4:22:09 PM1/16/03
to
Wykorzystaj obiekt typu Singleton - masz wtedy jedna instancje na JVM
(mozesz tak odpalac glowne okno - wtedy przy probie ponownego
uruchomienia zostaniesz przerzucony do istniejacej instancji).

Pozdrawiam
ms

Kretek Blady

unread,
Jan 16, 2003, 5:20:51 PM1/16/03
to

Chcesz mi powiedziec, ze singleton zabezpieczy
mnie przed dwukrotnym wykonaniem?

java -jar aplikacja.jar
java -jar aplikacja.jar

jarek

Jezuch

unread,
Jan 16, 2003, 6:15:01 PM1/16/03
to
Pewnego, oczywiscie beznadziejnego dnia Thu, 16 Jan 2003 22:22:09 +0100,
Marcin Sperka <msp...@hoga.pl.nospam> wykrztusil(a):

>Wykorzystaj obiekt typu Singleton - masz wtedy jedna instancje na JVM
>(mozesz tak odpalac glowne okno - wtedy przy probie ponownego
>uruchomienia zostaniesz przerzucony do istniejacej instancji).

Ale jak odpalasz drugą kopię programu, to masz dwie JVM, a zatem dwa
singletony.
--
Ecce Jezuch
http://free.polbox.pl/j/jezuch - Kronika paranoika
"All the world around enemy; they're tearing up the ground enemy
They're drawn in by the sound; enemy, enemy, i must eliminate my enemy"
- D. Draiman

--
Serwis Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

pbs

unread,
Jan 19, 2003, 2:10:59 PM1/19/03
to

pewnie da - własnie sprawdziłem, zobacz jak to robi jedit (www.jedit.org)
:)

Marcin Sperka

unread,
Jan 19, 2003, 4:17:20 PM1/19/03
to
W ramach JVM nie, ale mozesz napisac Singletona w ramach pracujacego
systemu (nie na JVM - wtedy masz faktycznie kilka rownoleglych kopii
JVM, gdy tak uruchamiasz). Nie wiem na jakim systemie to robisz ale
mozesz wykorzystac: blokowany dostep do pliku, otwarcie lokalnego
gniazda, wykorzystanie elementow systemu operacyjnego (jezeli takie
udostepnia), baza danych - jezeli Twoja aplikacja z niej korzysta,
dodanie wlasnych bibliiotek w C i wykorzystanie ich do tego celu (JNI).

Pozdrawiam
ms

Kretek Blady

unread,
Jan 20, 2003, 6:22:40 AM1/20/03
to
pbs wrote:

>>uruchomiona wyskoczyla mu przed oczy. Da rade?
>>

> pewnie da - własnie sprawdziłem, zobacz jak to robi jedit (www.jedit.org)

Wlasnie patrze... I wlasnie sobie "pozyczam"
kod do obslugi helpa w HTML :-)

jarek

pbs

unread,
Jan 20, 2003, 2:39:32 PM1/20/03
to

to jak już wypatrzysz, jak to jest z tą jedną instancją, to napisz tutaj
:) bo sam jestem zbyt wielka lama, by to wyssać z kodu ;-)

Kretek Blady

unread,
Jan 21, 2003, 5:56:53 AM1/21/03
to
pbs wrote:


> to jak ju? wypatrzysz, jak to jest z t? jedn? instancj?, to napisz tutaj
> :) bo sam jestem zbyt wielka lama, by to wyssa? z kodu ;-)

Sprawa z jEditem wydaje sie byc prosta (po tym jak
ktos tu napisal ze mozna sluchac na sokecie :-)


$ netstat -anp 2> /dev/null | grep java

$ /usr/local/bin/jedit &
[1] 739

$ netstat -anp 2> /dev/null | grep java
tcp 0 0 127.0.0.1:32843 0.0.0.0:* LISTEN
739/java
unix 3 [ ] STREAM CONNECTED 27095 739/java

$ telnet 127.0.0.1 32843
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
[error] java.net.SocketTimeoutException: Read timed out
[error] at java.net.SocketInputStream.socketRead0(Native Method)
[error] at
java.net.SocketInputStream.read(SocketInputStream.java:129)
[error] at
java.net.SocketInputStream.read(SocketInputStream.java:182)
[error] at java.io.DataInputStream.readInt(DataInputStream.java:392)
[error] at org.gjt.sp.jedit.EditServer.handleClient(Unknown Source)
[error] at org.gjt.sp.jedit.EditServer.run(Unknown Source)
Connection closed by foreign host.


jarek

--
Kazdy moze byc pedalem, ale nie kazdy pedal moze byc Oskarem Wildem. /
Waldemar Lysiak

pbs

unread,
Jan 22, 2003, 1:19:09 AM1/22/03
to
On Tue, 21 Jan 2003 11:56:53 +0100
Kretek Blady <kretek...@nospam.wp.pl> wrote:

> pbs wrote:
>
>
> > to jak ju? wypatrzysz, jak to jest z t? jedn? instancj?, to napisz
> > tutaj:) bo sam jestem zbyt wielka lama, by to wyssa? z kodu ;-)
>
> Sprawa z jEditem wydaje sie byc prosta (po tym jak
> ktos tu napisal ze mozna sluchac na sokecie :-)
>
>
> $ netstat -anp 2> /dev/null | grep java
>

(..)
czyli tak jak sugerował ktoś (albo i ty ;-))

Marcin Sperka

unread,
Jan 23, 2003, 4:03:09 PM1/23/03
to
Piotr Gabryanczyk wrote:
> Sluchaj na jakims porcie TCP.
>
> Druga instancja nie bedzie sie mogla podpiac, wiec wysle komunikat po TCP do

> tej pierwszej, a pierwsza zrobi bringToFront().
>
>
> --
> Piotr Gabryanczyk
> email: pio...@o2.pl
>
> Uzytkownik "Kretek Blady" <kretek...@nospam.wp.pl> napisal w wiadomosci
> news:b0412l$2hin$1...@news2.ipartners.pl...

Niby OK, ale co zrobic gdy port jest uzywany przez inny program. Porty
sa dobrem wspolnym i nikt nie ma monopolu na ich uzywanie. Nawet porty
ogolnie przyjete za zastrzezone sa takie tylko z nazwy - to tylko umowa.

pozdrawiam
ms


darioka

unread,
Jan 25, 2003, 6:05:15 PM1/25/03
to
pbs <p...@linux.net.pl> napisał(a):

> > $ netstat -anp 2> /dev/null | grep java

> czyli tak jak sugerowa=B3 kto=B6 (albo i ty ;-))

A co jak będą odpalone dwa lub więcej programy chodzące z interpreterem Java.

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

0 new messages