パッケージ jakarta.mail

クラス Service

  • 実装されたすべてのインターフェース:
    AutoCloseableSE
    既知の直属サブクラス
    StoreTransport

    public abstract class Service
    extends ObjectSE
    implements AutoCloseableSE
    ストアやトランスポートなどのメッセージングサービスに共通の機能を含む抽象クラス。

    メッセージングサービスは Session から作成され、URLName を使用して名前が付けられます。サービスは、使用する前に接続する必要があります。接続イベントは、その接続ステータスを反映するために送信されます。

    作成者:
    Christopher Cotton, Bill Shannon, Kanwar Oberoi
    • フィールドサマリー

      フィールド  
      修飾子と型 フィールド 説明
      protected booleandebug
      このサービスのデバッグフラグ。
      protected Sessionsession
      このサービスが作成されたセッション。
      protected URLNameurl
      このサービスの URLName
    • コンストラクターのサマリー

      コンストラクター  
      修飾子 コンストラクター 説明
      protected Service​(Session session, URLName urlname)
      コンストラクター。
    • フィールドの詳細

      • session

        protected Session session
        このサービスが作成されたセッション。
      • url

        protected volatile URLName url
        このサービスの URLName
      • debug

        protected boolean debug
        このサービスのデバッグフラグ。このサービスの作成時にセッションのデバッグフラグから設定します。
    • コンストラクターの詳細

      • Service

        protected Service​(Session session,
                          URLName urlname)
        コンストラクター。
        パラメーター:
        session - このサービスのセッションオブジェクト
        urlname - このサービスに使用される URLName オブジェクト
    • メソッドの詳細

      • 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)
      • 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() への呼び出しを含めることにより、イベント通知を保証する最後のステップとしてこのメソッドを呼び出す必要があります。

        次で指定:
        インターフェース AutoCloseableSEclose 
        例外:
        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 を返します。
        オーバーライド:
        クラス ObjectSEtoString 
      • queueEvent

        protected void queueEvent​(MailEvent event,
                                  VectorSE<? extends EventListenerSE> vector)
        配信するキューにイベントとリスナーのベクトルを追加します。
        パラメーター:
        event - 行事
        vector - リスナーのベクトル
      • finalize

        protected void finalize()
                         throws ThrowableSE
        イベントディスパッチャースレッドを停止して、キューをガベージコレクションできるようにします。
        オーバーライド:
        クラス ObjectSEfinalize 
        例外:
        ThrowableSE