Dobrý den,
zde jsou odpovědi na otázky:

 * jak rychle ten interface reaguje
   Interface reaguje v řádech stovek ms
 * kolik bude souběžných klientů
   Jelikož to bude ovládání rodinného domu, nepočítám s více jak 5-ti
   klienty
 * jak bude výsledek prezentován přes web (response čeká na vyřešení
   požadavku, AJAX, nebo "podívejte se na URL xx jestli ej váš
   požadavek již uspokojen", ...)
   Bude to pomocí Apache Wicket s AJAXem. Na stránce bude zobrazena
   mapka domu, v mapce budou zobrazeny hodnoty nastavených a skutečných
   teplot (možná i obrázek technologie - čerpadla, atd ..). Hodnoty se
   budou v obrázku aktualizovat cca. po 5 sec.

Má představa je tato:
Jelikož to poběží někde na hostingu, tak vše musí být na Apache Tomcat.
Zatím jsem ve fázi že mám vytvořený servlet, který se spustí hned po startu aplikačního serveru a vytvoří thread. Thread sbírá požadavky pomocí XML-RPC (volím ho proto aby bylo komunikace nenáročná na vyskládání požadavku, chtěl bych udělat i klienta pro Android) do zásobníku FIFO a zpracováváje. Webová aplikace se připojuje jako každý jiný klient na XML-RPC threadu a zadává požadavky.

Zatím jsem nenašel lepší řešení na Apache Tomcat, na EE serverech jako JBoss jde spousta jiných věcí, ale já se chci držet jednoduchosti. Což znamená Tomcat a nic z Java EE.

Předem děkuji za Vaše postřehy a náměty,
Korecký


Dne 31.10.2011 14:37, jan_bar napsal(a):
In article<[email protected]>, vladislav_korecky-
[email protected] says...
Dobrý den,
jsem začátečník s Java a měl bych na Vás jeden dotaz.
Mám zařízení naslouchající na TCP a které dokáže obsloužit jen jednoho
klienta (neumí více připojení současně). Jedná se o interface k regulaci
domu.
Píši si webovou aplikaci (s použitím Apache Wicket), která by ovládala
dům, ale řeším následující problém. Pokud se k webovým stránkám přihlásí
více klientů, vytvoří se více instancí na webovém serveru a každá se
bude snažit komunikovat s interface regulace, ale to je nedokáže obsloužit.
Napadlo mě řešení s vytvořením systémové služby, která by pomocí XML-RPC
přijímala požadavky od webových aplikací a dávala by je do zásobníku
FIFO. Jednotlivé požadavky by posílala do regulace a výsledek vracela
zpět do webových aplikací.
Toto řešení má jednu chybu, nenajdu hosting (cenově dostupný) kam bych
mohl nainstalovat vlastní systémovou službu, takové služby nabízí jen
server hostingy a ty jsou moc drahé.
Lze tento problém nějak řešit přímo na aplikačním serveru ? Buď přes
nějaké sdílení session mezi instancemi téže aplikace nebo lze dokonce
vytvořit něco jako systémovou službu přímo v aplikačním serveru ?

Předem děkuji za nápady,
Korecký
Dobrý den

ideální řešení závisí na mnoha faktorech které jste neuvedl:

* jak rychle ten interface reaguje
* kolik bude souběžných klientů
* jak bude výsledek prezentován přes web (response čeká na vyřešení
požadavku, AJAX, nebo "podívejte se na URL xx jestli ej váš požadavek
již uspokojen", ...)
* ...

Předpokládám, že to píšete pro sebe a sousedy ve volném čase a možnost
kolize je minimální. Já bych použil lock s timeoutem (5-10s) a výsledek
vracel v response. Pokud to náhodovou timeoutuje, tak "sorry uživateli,
zkus to znovu".

Honza

Odpovedet emailem