クラス Service
- java.lang.ObjectSE
-
- jakarta.mail.Service
- 実装されているすべてのインターフェース:
AutoCloseableSE
public abstract class Service extends ObjectSE implements AutoCloseableSE
ストアやトランスポートなどのメッセージングサービスに共通の機能を含む抽象クラス。メッセージングサービスは
Sessionから作成され、URLNameを使用して名前が付けられます。サービスは、使用する前に接続する必要があります。接続イベントは、その接続ステータスを反映するために送信されます。- 作成者:
- Christopher Cotton, Bill Shannon, Kanwar Oberoi
方法の概要
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 voidaddConnectionListener(ConnectionListener l)このサービスの Connection イベントのリスナーを追加します。voidclose()このサービスを閉じて、接続を終了してください。voidconnect()パラメーターを取らない汎用の接続メソッド。voidconnect(StringSE host, int port, StringSE user, StringSE password)特定のポートを指定できることを除いて、connect(host、user、password)と同様です。voidconnect(StringSE user, StringSE password)指定したユーザー名とパスワードを使用して現在のホストに接続します。voidconnect(StringSE host, StringSE user, StringSE password)指定されたアドレスに接続します。protected voidfinalize()イベントディスパッチャースレッドを停止して、キューをガベージコレクションできるようにします。URLNamegetURLName()このサービスを表す URLName を返します。booleanisConnected()このサービスは現在接続されていますか?protected voidnotifyConnectionListeners(int type)すべての ConnectionListeners に通知します。protected booleanprotocolConnect(StringSE host, int port, StringSE user, StringSE password)サービス実装は、このメソッドをオーバーライドして、実際のプロトコル固有の接続試行を実行する必要があります。protected voidqueueEvent(MailEvent event, VectorSE<? extends EventListenerSE> vector)配信するキューにイベントとリスナーのベクトルを追加します。voidremoveConnectionListener(ConnectionListener l)Connection イベントリスナーを削除します。protected voidsetConnected(boolean connected)このサービスの接続状態を設定します。protected voidsetURLName(URLName url)このサービスを表す URLName を設定します。StringSEtoString()このサービスに URLName がある場合はgetURLName.toString()を返します。それ以外の場合は、デフォルトのtoStringを返します。
メソッドの詳細
connect
public void connect() throws MessagingExceptionパラメーターを取らない汎用の接続メソッド。サブクラスは適切な認証スキームを実装できます。追加情報を必要とするサブクラスは、いくつかのプロパティを使用するか、ポップアップウィンドウを使用してインタラクティブに取得する場合があります。接続が成功した場合、「オープン」
ConnectionEventがこのサービスのConnectionListenersに配信されます。ほとんどのクライアントは、このメソッドを呼び出してサービスに接続する必要があります。
すでに接続されているサービスに接続するとエラーになります。
ここで提供される実装は、次の
connect(String, String, String)メソッドを null で呼び出すだけです。- 例外:
AuthenticationFailedException- 認証失敗の場合MessagingException- その他の障害の場合IllegalStateExceptionSE- サービスがすでに接続されている場合- 関連事項:
ConnectionEvent
connect
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(jakarta.mail.URLName, jakarta.mail.PasswordAuthentication)
connect
public void connect(StringSE user, StringSE password) throws MessagingException
指定したユーザー名とパスワードを使用して現在のホストに接続します。このメソッドは、ホスト名に null を指定してconnect(host, user, password)メソッドを呼び出すのと同じです。- パラメーター:
user- ユーザー名password- このユーザーのパスワード- 例外:
AuthenticationFailedException- 認証失敗の場合MessagingException- その他の障害の場合IllegalStateExceptionSE- サービスがすでに接続されている場合- 導入:
- JavaMail 1.4
- 関連事項:
ConnectionEvent,Session.setPasswordAuthentication(jakarta.mail.URLName, jakarta.mail.PasswordAuthentication),connect(java.lang.String, java.lang.String, java.lang.String)
connect
public void connect(StringSE host, int port, StringSE user, StringSE password) throws MessagingException
特定のポートを指定できることを除いて、connect(host、user、password)と同様です。- パラメーター:
host- 接続するホストport- 接続するポート (-1 はデフォルトのポートを意味します)user- ユーザー名password- このユーザーのパスワード- 例外:
AuthenticationFailedException- 認証失敗の場合MessagingException- その他の障害の場合IllegalStateExceptionSE- サービスがすでに接続されている場合- 関連事項:
connect(java.lang.String, java.lang.String, java.lang.String),ConnectionEvent
protocolConnect
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- ユーザーのパスワード- 戻り値:
- 接続が成功した場合は true、認証が失敗した場合は false
- 例外:
AuthenticationFailedException- 認証失敗の場合MessagingException- 非認証の失敗の場合
isConnected
public boolean isConnected()
このサービスは現在接続されていますか?この実装では、プライベートブールフィールドを使用して接続状態を格納します。このメソッドは、そのフィールドの値を返します。
サブクラスはこのメソッドをオーバーライドして、メッセージストアへの接続がまだ有効であることを確認することができます。
- 戻り値:
- サービスが接続されている場合は true、接続されていない場合は false
setConnected
protected void setConnected(boolean connected)
このサービスの接続状態を設定します。接続状態は、connectおよびcloseメソッドの実行中にサービス実装によって自動的に設定されます。サービスが自動的に切断された場合、サブクラスはこのメソッドを呼び出して状態を設定する必要があります。このクラスの実装は、
isConnectedメソッドによって返されるプライベートフィールドを設定するだけです。- パラメーター:
connected- サービスが接続されている場合は true、接続されていない場合は false
close
public void close() throws MessagingExceptionこのサービスを閉じて、接続を終了してください。近い ConnectionEvent がどの ConnectionListeners にも配信されます。このサービスに属しているメッセージングコンポーネント(フォルダー、メッセージなど)は、このサービスを閉じた後は無効になります。このメソッドが MessagingException をスローすることによって異常終了した場合でも、サービスは閉じていることに注意してください。この実装は
setConnected(false)を使用して、このサービスの接続状態をfalseに設定します。次に、登録済みの ConnectionListeners にクローズ ConnectionEvent を送信します。実装固有のクリーンアップを行うためにこのメソッドをオーバーライドするサブクラスは、おそらくfinally句にsuper.close()への呼び出しを含めることにより、イベント通知を保証する最後のステップとしてこのメソッドを呼び出す必要があります。- 次で指定:
- インターフェース
AutoCloseableSEのclose - 例外:
MessagingException- クローズ中のエラー- 関連事項:
ConnectionEvent
getURLName
public URLName getURLName()
このサービスを表す URLName を返します。返される URLName には、パスワードフィールドは含まれません。サブクラスは、URLName が標準形式に従っていない場合にのみ、このメソッドをオーバーライドする必要があります。
Service クラスの実装は、パスワードとファイル情報を取り除いた
urlフィールド(通常はコピー)を返します。- 戻り値:
- このサービスを表す URLName
- 関連事項:
URLName
setURLName
protected void setURLName(URLName url)
このサービスを表す URLName を設定します。通常、サービスが正常に接続した後にurlフィールドを更新するために使用されます。サブクラスは、URL が標準形式に従っていない場合にのみ、このメソッドをオーバーライドする必要があります。特に、サブクラスは、URL が
URLNameでサポートされるすべての可能なフィールドを必要としない場合、このメソッドをオーバーライドする必要があります。新しいURLNameは、不要なフィールドを削除して構築する必要があります。Service クラスの実装は、
urlフィールドを設定するだけです。- パラメーター:
url- URLName- 関連事項:
URLName
addConnectionListener
public void addConnectionListener(ConnectionListener l)
このサービスの Connection イベントのリスナーを追加します。ここで提供されるデフォルトの実装は、このリスナーを ConnectionListeners の内部リストに追加します。
- パラメーター:
l- 接続イベントのリスナー- 関連事項:
ConnectionEvent
removeConnectionListener
public void removeConnectionListener(ConnectionListener l)
Connection イベントリスナーを削除します。ここで提供されるデフォルトの実装は、このリスナーを ConnectionListeners の内部リストから削除します。
- パラメーター:
l- リスナー- 関連事項:
addConnectionListener(jakarta.mail.event.ConnectionListener)
notifyConnectionListeners
protected void notifyConnectionListeners(int type)
すべての ConnectionListeners に通知します。サービス実装は、このメソッドを使用して接続イベントをブロードキャストすることが期待されています。提供されているデフォルトの実装は、イベントを内部イベントキューに入れます。イベントディスパッチャースレッドは、イベントをキューからデキューし、登録された ConnectionListeners にディスパッチします。イベントのディスパッチは別のスレッドで行われるため、潜在的なデッドロックの問題を回避できることに注意してください。
- パラメーター:
type- ConnectionEvent 型
toString
public StringSE toString()
このサービスに URLName がある場合はgetURLName.toString()を返します。それ以外の場合は、デフォルトのtoStringを返します。
queueEvent
protected void queueEvent(MailEvent event, VectorSE<? extends EventListenerSE> vector)
配信するキューにイベントとリスナーのベクトルを追加します。- パラメーター:
event- 行事vector- リスナーのベクトル
finalize
protected void finalize() throws ThrowableSEイベントディスパッチャースレッドを停止して、キューをガベージコレクションできるようにします。- オーバーライド:
- クラス
ObjectSEのfinalize - 例外:
ThrowableSE