public abstract class Service extends ObjectSE implements AutoCloseableSE
メッセージングサービスは Session
から作成され、URLName
を使用して名前が付けられます。サービスは、使用する前に接続する必要があります。接続イベントは、その接続ステータスを反映するために送信されます。
修飾子と型 | フィールドと説明 |
---|---|
protected boolean | debug このサービスのデバッグフラグ。 |
protected Session | session このサービスが作成されたセッション。 |
protected URLName | url このサービスの URLName 。 |
修飾子 | コンストラクターと説明 |
---|---|
protected | Service(Session session, URLName urlname) コンストラクター。 |
修飾子と型 | メソッドと説明 |
---|---|
void | addConnectionListener(ConnectionListener l) このサービスの Connection イベントのリスナーを追加します。 |
void | close() このサービスを閉じて、接続を終了してください。 |
void | connect() パラメーターを取らない汎用の接続メソッド。 |
void | connect(StringSE host, int port, StringSE user, StringSE password) 特定のポートを指定できることを除いて、connect(host、user、password)と同様です。 |
void | connect(StringSE user, StringSE password) 指定したユーザー名とパスワードを使用して現在のホストに接続します。 |
void | connect(StringSE host, StringSE user, StringSE password) 指定されたアドレスに接続します。 |
protected void | finalize() イベントディスパッチャースレッドを停止して、キューをガベージコレクションできるようにします。 |
URLName | getURLName() このサービスを表す URLName を返します。 |
boolean | isConnected() このサービスは現在接続されていますか? |
protected void | notifyConnectionListeners(int type) すべての ConnectionListeners に通知します。 |
protected boolean | protocolConnect(StringSE host, int port, StringSE user, StringSE password) サービス実装は、このメソッドをオーバーライドして、実際のプロトコル固有の接続試行を実行する必要があります。 |
protected void | queueEvent(MailEvent event, VectorSE<? extends EventListenerSE> vector) 配信するキューにイベントとリスナーのベクトルを追加します。 |
void | removeConnectionListener(ConnectionListener l) Connection イベントリスナーを削除します。 |
protected void | setConnected(boolean connected) このサービスの接続状態を設定します。 |
protected void | setURLName(URLName url) このサービスを表す URLName を設定します。 |
StringSE | toString() このサービスに URLName がある場合は getURLName.toString() を返します。それ以外の場合は、デフォルトの toString を返します。 |
cloneSE, equalsSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
protected Session session
protected volatile URLName url
URLName
。protected boolean debug
public void connect() throws MessagingException
接続が成功した場合、「オープン」 ConnectionEvent
がこのサービスの ConnectionListeners
に配信されます。
ほとんどのクライアントは、このメソッドを呼び出してサービスに接続する必要があります。
すでに接続されているサービスに接続するとエラーになります。
ここで提供される実装は、次の connect(String, String, String)
メソッドを null で呼び出すだけです。
AuthenticationFailedException
- 認証失敗の場合 MessagingException
- その他の障害の場合 IllegalStateExceptionSE
- サービスがすでに接続されている場合 ConnectionEvent
public void connect(StringSE host, StringSE user, StringSE password) throws MessagingException
接続が成功した場合、「オープン」 ConnectionEvent
がこのサービスの ConnectionListeners
に配信されます。
すでに接続されているサービスに接続するとエラーになります。
Service クラスの実装は、セッション、このサービスの URLName
、指定されたパラメーターからホスト、ユーザー、パスワードのデフォルトを収集してから、protocolConnect
メソッドを呼び出します。protocolConnect
メソッドが false
を返す場合、不足している情報についてユーザーにプロンプトが表示され、protocolConnect
メソッドが再度呼び出されます。サブクラスは protocolConnect
メソッドをオーバーライドする必要があります。サブクラスは、getURLName
メソッドも実装するか、このクラスの実装を使用する必要があります。
接続が成功すると、setURLName
メソッドが、パスワードなど、接続に使用された情報を含む URLName を指定して呼び出されます。
渡されたユーザー名が null の場合、上記のようにデフォルト値が選択されます。渡されたパスワードが null で、これがこのサービスへの最初の成功した接続である場合、ユーザーから収集されたユーザー名とパスワードは、他のサービスオブジェクトインスタンス(接続通常、情報は常に特定のサービスオブジェクトインスタンス内に保存されます)。パスワードは、セッションメソッド setPasswordAuthentication
を使用して保存されます。渡されたパスワードが null でない場合、アプリケーションがパスワードを明示的に管理していると想定して、パスワードは保存されません。
host
- 接続するホスト user
- ユーザー名 password
- このユーザーのパスワード AuthenticationFailedException
- 認証失敗の場合 MessagingException
- その他の障害の場合 IllegalStateExceptionSE
- サービスがすでに接続されている場合 ConnectionEvent
, Session.setPasswordAuthentication(javax.mail.URLName, javax.mail.PasswordAuthentication)
public void connect(StringSE user, StringSE password) throws MessagingException
connect(host, user, password)
メソッドを呼び出すのと同じです。user
- ユーザー名 password
- このユーザーのパスワード AuthenticationFailedException
- 認証失敗の場合 MessagingException
- その他の障害の場合 IllegalStateExceptionSE
- サービスがすでに接続されている場合 ConnectionEvent
, Session.setPasswordAuthentication(javax.mail.URLName, javax.mail.PasswordAuthentication)
, connect(java.lang.String, java.lang.String, java.lang.String)
public void connect(StringSE host, int port, StringSE user, StringSE password) throws MessagingException
host
- 接続するホスト port
- 接続するポート (-1 はデフォルトのポートを意味します)user
- ユーザー名 password
- このユーザーのパスワード AuthenticationFailedException
- 認証失敗の場合 MessagingException
- その他の障害の場合 IllegalStateExceptionSE
- サービスがすでに接続されている場合 connect(java.lang.String, java.lang.String, java.lang.String)
, ConnectionEvent
protected boolean protocolConnect(StringSE host, int port, StringSE user, StringSE password) throws MessagingException
connect
メソッドのデフォルト実装は、必要に応じてこのメソッドを呼び出します。 認証にユーザー名またはパスワードが必要だが、対応するパラメーターが null の場合、protocolConnect
メソッドは false
を返す必要があります。connect
メソッドは、不足している情報を提供する必要がある場合にユーザーにプロンプトを表示します。このメソッドは、指定されたユーザー名またはパスワードの認証が失敗した場合にも false
を返す場合があります。または、このメソッドは、認証が失敗したときに AuthenticationFailedException をスローする場合があります。この例外には、失敗に関する詳細を示す文字列メッセージが含まれる場合があります。
protocolConnect
メソッドは例外をスローして、無効なホスト名またはポート番号、認証プロセス中の接続の喪失、サーバーの利用不可など、認証に関係のない障害を報告する必要があります。
host
- 接続するホストの名前 port
- 使用するポート (-1 はデフォルトのポートを使用することを意味します)user
- ログインするユーザーの名前 password
- ユーザーのパスワード AuthenticationFailedException
- 認証失敗の場合 MessagingException
- 非認証の失敗の場合 public boolean isConnected()
この実装では、プライベートブールフィールドを使用して接続状態を格納します。このメソッドは、そのフィールドの値を返します。
サブクラスはこのメソッドをオーバーライドして、メッセージストアへの接続がまだ有効であることを確認することができます。
protected void setConnected(boolean connected)
connect
および close
メソッドの実行中にサービス実装によって自動的に設定されます。サービスが自動的に切断された場合、サブクラスはこのメソッドを呼び出して状態を設定する必要があります。 このクラスの実装は、isConnected
メソッドによって返されるプライベートフィールドを設定するだけです。
connected
- サービスが接続されている場合は true、接続されていない場合は falsepublic void close() throws MessagingException
この実装は setConnected(false)
を使用して、このサービスの接続状態を false
に設定します。次に、登録済みの ConnectionListeners にクローズ ConnectionEvent を送信します。実装固有のクリーンアップを行うためにこのメソッドをオーバーライドするサブクラスは、おそらく finally
句に super.close()
への呼び出しを含めることにより、イベント通知を保証する最後のステップとしてこのメソッドを呼び出す必要があります。
AutoCloseableSE
の closeSE
MessagingException
- クローズ中のエラー ConnectionEvent
public URLName getURLName()
サブクラスは、URLName が標準形式に従っていない場合にのみ、このメソッドをオーバーライドする必要があります。
Service クラスの実装は、パスワードとファイル情報を取り除いた url
フィールド(通常はコピー)を返します。
URLName
protected void setURLName(URLName url)
url
フィールドを更新するために使用されます。 サブクラスは、URL が標準形式に従っていない場合にのみ、このメソッドをオーバーライドする必要があります。特に、サブクラスは、URL が URLName
でサポートされるすべての可能なフィールドを必要としない場合、このメソッドをオーバーライドする必要があります。新しい URLName
は、不要なフィールドを削除して構築する必要があります。
Service クラスの実装は、url
フィールドを設定するだけです。
url
- URLNameURLName
public void addConnectionListener(ConnectionListener l)
ここで提供されるデフォルトの実装は、このリスナーを ConnectionListeners の内部リストに追加します。
l
- 接続イベントのリスナー ConnectionEvent
public void removeConnectionListener(ConnectionListener l)
ここで提供されるデフォルトの実装は、このリスナーを ConnectionListeners の内部リストから削除します。
l
- リスナー addConnectionListener(javax.mail.event.ConnectionListener)
protected void notifyConnectionListeners(int type)
提供されているデフォルトの実装は、イベントを内部イベントキューに入れます。イベントディスパッチャースレッドは、イベントをキューからデキューし、登録された ConnectionListeners にディスパッチします。イベントのディスパッチは別のスレッドで行われるため、潜在的なデッドロックの問題を回避できることに注意してください。
type
- ConnectionEvent 型 public StringSE toString()
getURLName.toString()
を返します。それ以外の場合は、デフォルトの toString
を返します。ObjectSE
の toStringSE
protected void queueEvent(MailEvent event, VectorSE<? extends EventListenerSE> vector)
event
- 行事 vector
- リスナーのベクトル protected void finalize() throws ThrowableSE
ObjectSE
の finalizeSE
ThrowableSE
Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.