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