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.Object
java.lang.Throwable
public void close()
close
in interface java.lang.AutoCloseable
public 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.EXCEPTION
public 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 ServerRuntimeException
get(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 ServerRuntimeException
get(iface)