public class Connection
extends java.lang.Object
implements java.io.Serializable, java.lang.AutoCloseable
Základní paradigma:
try (Connection c = new Connection()) {
try (RemoteSupplier<SomeInterface> s = c.get(SomeInterface.class)) {
SomeInterface i = s.get();
i.someMethod();
}
}
| Modifier and Type | Class and Description |
|---|---|
static class |
Connection.VersionCheckStrictness
Hned po připojení automaticky nebo i kdykoliv potom manuálně lze
zkontrolovat shodu verzí knihovny ArabTools na klientu a na serveru.
|
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
DEFAULT_HOST
Výchozí jméno hostitele.
|
static int |
DEFAULT_PORT
Výchozí TCP pro RMI připojení k serveru.
|
| Constructor and Description |
|---|
Connection()
Vytvoří instanci připojení k výchozímu serveru na jeho výchozí port.
|
Connection(java.lang.String serverHostName)
Vytvoří instanci připojení k serveru se specifikovaným doménovým názvem
na jeho výchozí port.
|
Connection(java.lang.String serverHostName,
int serverPort)
Vytvoří instanci připojení k serveru se specifikovaným názvem a na
specifikované číslo portu.
|
| Modifier and Type | Method and Description |
|---|---|
void |
close()
Zavře spojení se serverem a uzavře tento objekt tak, že už ho nelze
použít pro další připojení nebo získání jakýchkoliv informací ze serveru.
|
protected void |
finalize() |
<I> RemoteSupplier<I> |
get(java.lang.Class<I> iface)
Získá dodavatele cílového rozhraní.
|
<I> RemoteSupplier<I> |
get(java.lang.Class<I> iface,
java.io.Serializable key)
Získá dodavatele cílového rozhraní.
|
java.util.Date |
getLastHeartbeat()
Zjistí serverový čas poslední kontroly dostupnosti serveru.
|
static java.util.logging.Level |
getLogLevel()
Zjistí úroveň logování.
|
java.lang.String |
getServerHostName()
Zjistí jméno nebo IP adresu serveru, ke kterému se klient připojuje.
|
int |
getServerPort()
Zjistí číslo TCP portu RMI spojení k serveru.
|
Version |
getServerVersion()
Zjistí verzi knihovny ArabTools.
|
java.lang.String |
getUserName()
Zjistí uživatelské jméno, pod kterým se klient přihlašuje.
|
Connection.VersionCheckStrictness |
getVersionCheckStrictness()
Zjistí současnou přísnost kontroly verze serveru proti klientu.
|
void |
checkServerVersion()
Zkontroluje shodu verze místní knihovny ArabTools a té na serveru.
|
static void |
main(java.lang.String[] args)
Demostrace použití.
|
static void |
setLogLevel(java.util.logging.Level logLevel)
Mastaví úroveň logování.
|
void |
setPassword(java.lang.String password)
Nastaví heslo pro uživatele.
|
void |
setUserName(java.lang.String userName)
Nastaví uživatelské jméno.
|
void |
setVersionCheckStrictness(Connection.VersionCheckStrictness versionCheckStrictness)
Nastaví přísnost kontroly verze serveru proti klientu.
|
public static final int DEFAULT_PORT
public static final java.lang.String DEFAULT_HOST
public Connection()
public Connection(java.lang.String serverHostName)
serverHostName - název nebo IP adresa serverupublic Connection(java.lang.String serverHostName,
int serverPort)
serverHostName - název nebo IP adresa serveruserverPort - číslo portu (výchozí je DEFAULT_PORT), musí
být stejné jako číslo portu serveru, ke kterému se klient připojuje)public static void main(java.lang.String[] args)
throws java.rmi.RemoteException
SimpleChat (např.
SimpleSampleChat.runServer()).args - (ignoruje)java.rmi.RemoteException - při I/O problémupublic static java.util.logging.Level getLogLevel()
public static void setLogLevel(java.util.logging.Level logLevel)
logLevel - úroveň logováníprotected void finalize()
throws java.lang.Throwable
finalize in class java.lang.Objectjava.lang.Throwablepublic void close()
close in interface java.lang.AutoCloseablepublic java.lang.String getServerHostName()
public int getServerPort()
public Version getServerVersion()
Connection.VersionCheckStrictness.EXCEPTION a verze se neshodují, tato
metoda skončí s výjimkou WrongVersionException v kauzálním řetězu
ServerRuntimeException. Verzi je pak možné získat z této výjimky
voláním WrongVersionException.getServerVersion(). A nebo dočasně
vypnout kontrolu Connection.VersionCheckStrictness.IGNORE.public void checkServerVersion()
throws WrongVersionException
ServerRuntimeException prakticky v
libovolné metodě.WrongVersionException - pokud verze nesouhlasí a přísnost kontroly
je nastavena na Connection.VersionCheckStrictness.EXCEPTIONpublic Connection.VersionCheckStrictness getVersionCheckStrictness()
checkServerVersion()public void setVersionCheckStrictness(Connection.VersionCheckStrictness versionCheckStrictness)
versionCheckStrictness - přísnost kontroly verzecheckServerVersion()public java.lang.String getUserName()
public final void setUserName(java.lang.String userName)
userName - nové uživatelské jméno; může být null, v takovém
případě se použije systémové jméno uživatele (výchozí hodnota)public void setPassword(java.lang.String password)
Hesla nejsou nijak šifrována a i sítí se přenášejí v otevřené podobě. Použití oblíbených hesel pro tyto demonstrační účely je krajně nezodpovědné.
password - uživatelské heslopublic java.util.Date getLastHeartbeat()
Po připojení klientu k serveru klient zahájí (v samostatném vlákně) pravidelné kontroly dostupnosti serveru. Při kontrole server odpoví svým lokálním systémovým časem. Tato metoda zjistí a předá poslední známé časové razítko této úspěšné kontroly.
null, pokud kontrola ještě neproběhla, nebo poslední
známý čas serveruRemoteSession.heartbeat()public <I> RemoteSupplier<I> get(java.lang.Class<I> iface) throws ServerRuntimeException
I - cílové rozhraníiface - cílové rozhraníServerRuntimeException - v případě problému takový proxy objekt
vytvořit, v kauzálním řetězci je možné dohledat pravou příčinu, např.
WrongVersionException, AuthException; je možné v
kauzálním řetězu najít i další výjimky ServerRuntimeExceptionget(iface, key)public <I> RemoteSupplier<I> get(java.lang.Class<I> iface, java.io.Serializable key) throws ServerRuntimeException
I - cílové rozhraníiface - cílové rozhraníkey - klíč, pokud to serverová implementace umožňuje, může být
klíčem null (stejně jako v případě volání
přetížené verze metody) nebo naopak
nesmí; některé implementace mohou povolit obě možnosti, jiné klíč mohou
ignorovat úplněServerRuntimeException - v případě problému takový proxy objekt
vytvořit, v kauzálním řetězci je možné dohledat pravou příčinu, např.
WrongVersionException, AuthException; je možné v
kauzálním řetězu najít i další výjimky ServerRuntimeExceptionget(iface)