ヘッダーをスキップ

Oracle XML Publisherユーザーズ・ガイド
リリース11i
B25754-01
目次へ
目次
前のページへ
前へ
次のページへ
次へ

配信マネージャ

概要

配信マネージャは、XMLパブリッシャ文書の配信を制御できる一連のJava APIです。配信マネージャは次の各操作に使用します。

配信マネージャの使用

配信マネージャを使用する手順は、次のとおりです。

  1. DeliveryManagerインスタンスを作成します。

  2. createRequest()メソッドを使用して、DeliveryRequestインスタンスを作成します。

  3. 要求のプロパティ(DeliveryRequestの宛先など)を追加します。ほとんどのプロパティでは文字列値が必要です。詳細は、各配信チャネルでサポートされるプロパティを参照してください。

  4. DeliveryRequestに文書を設定します。

  5. submit()をコールしてこの配信要求を発行します。

1つの配信要求によって、1つの文書と1つの宛先を処理できます。必要な場合は、この処理によって監視と再発行が容易になります。

DeliveryRequestでは、文書を次の3つの方法で設定できます。

ダイレクト・モードを設定をすると、配信マネージャによって効率的な配信がサポートされます。「ダイレクト・モードとバッファリング・モード」を参照してください。

このマニュアルで説明する配信チャネルは、次のとおりです。

Eメールを介した文書の配信

次に、Eメールを介した配信のコード例を示します。

// create delivery manager instance
     DeliveryManager dm = new DeliveryManager();
     // create a delivery request
     DeliveryRequest req = dm.createRequest(DeliveryManager.TYPE_SMTP_EMAIL);

     // set email subject
     req.addProperty(DeliveryPropertyDefinitions.SMTP_SUBJECT, "test mail");
     // set SMTP server host
     req.addProperty(
       DeliveryPropertyDefinitions.SMTP_HOST, "mysmtphost");
     // set the sender email address
     req.addProperty(DeliveryPropertyDefinitions.SMTP_FROM, "myname@mydomain.com");
     // set the destination email address
     req.addProperty(
       DeliveryPropertyDefinitions.SMTP_TO_RECIPIENTS, "user1@mydomain.com, user2@mydomain.com" );
     // set the content type of the email body
     req.addProperty(DeliveryPropertyDefinitions.SMTP_CONTENT_TYPE, "application/pdf");
     // set the document file name appeared in the email
     req.addProperty(DeliveryPropertyDefinitions.SMTP_CONTENT_FILENAME, "test.pdf");
     // set the document to deliver
     req.setDocument("/document/test.pdf");

     // submit the request
     req.submit();
     // close the request
     req.close();

次の表に、サポートされるプロパティを示します。

プロパティ 説明
SMTP_TO_RECIPIENTS 必須
複数の受信者をカンマで区切って入力します(例: user1@mydomain.com, user2@mydomain.com)。
SMTP_CC_RECIPIENTS オプション
複数の受信者をカンマで区切って入力します。
SMTP_BCC_RECIPIENTS オプション
複数の受信者をカンマで区切って入力します。
SMTP_FROM 必須
送信側パーティのEメール・アドレスを入力します。
SMTP_REPLY_TO オプション
返信先のEメール・アドレスを入力します。
SMTP_SUBJECT 必須
Eメールの件名を入力します。
SMTP_CHARACTER_ENCODING オプション
デフォルトはUTF-8です。
SMTP_ATTACHMENT オプション
添付ファイルを含める場合は、その添付ファイルのオブジェクト名を入力します。
SMTP_CONTENT_FILENAME 必須
文書のファイル名を入力します(例: invoice.pdf)。
SMTP_CONTENT_TYPE 必須
MIMEタイプを入力します。
SMTP_SMTP_HOST 必須
SMTPホスト名を入力します。
SMTP_SMTP_PORT オプション
SMTPポートを入力します。デフォルトは25です。
SMTP_SMTP_USERNAME オプション
SMTPサーバーで認証が必要な場合は、そのサーバーに対してユーザー名を入力します。
SMTP_SMTP_PASSWORD オプション
SMTPサーバーで認証が必要な場合は、入力したユーザー名のパスワードを入力します。
SMTP_ATTACHMENT_FIRST オプション
Eメールに含まれている添付ファイルを最初に表示する場合は、trueと入力し、表示しない場合は、falseと入力します。

複数の受信者の定義

Eメール配信サーバー・チャネルでは、要求ごとに複数の文書と複数の宛先がサポートされます。次に、複数のTOアドレスとCCアドレスのコード例を示します。

    // set the TO email addresses
     req.addProperty(
       DeliveryPropertyDefinitions.SMTP_TO_RECIPIENTS,
        "user1@mydomain.com", user2@mydomain.com, user3@mydomain.com");

     // set the CC email addresses
     req.addProperty(
       DeliveryPropertyDefinitions.SMTP_CC_RECIPIENTS,
        "user4@mydomain.com, user5@mydomain.com, user6@mydomain.com");
 

1つの要求に対する複数文書の添付

添付ユーティリティ・クラスを使用して、1つの要求に複数の文書を添付します。次に、使用方法の例を示します。

// Properties for Attachment
   Hashtable props = new Hashtable();
   // Set encoding property for the non-ASCII file names.
   // It's optional. Default value is "UTF-8"
   props.put(DeliveryPropertyDefinitions.SMTP_CHARACTER_ENCODING, "UTF-8");
     :
     :
   (You can append other properties also)
     :
     :

   // create Attachment instance
   Attachment m = new Attachment(props);

   // add attachment files
   m.addAttachment(
       "/pdf_sample/pdfTest5.pdf",        // source file name
       "a1.pdf",                          // file name appeared on the email
       "application/pdf");                // content type
   m.addAttachment(
       "/rtf_sample/rtfsample_en00.rtf",  // source file name
       "a2.rtf",                          // file name appeared on the email
       "application/rtf");                // content type
   m.addAttachment(
       "/xml_sample/pdfTest5.xml",        // source file name
       "a3.xml",                          // file name appeared on the email
       "text/xml");                       // content type

     :
     :

   req.addProperty(DeliveryPropertyDefinitions.SMTP_ATTACHMENT, m);   

複数のHTML文書の添付

1つの要求に複数のHTML文書を添付できます。HTML文書に、ローカル・ファイル・システムに配置されたイメージ・ファイルへの参照がある場合は、添付ユーティリティによって、そのイメージ・ファイルも自動的に添付されます。次に、使用方法の例を示します。

   Attachment m = new Attachment();
   m.addHtmlAttachment("/path/to/my.html");
     :
     :

   req.addProperty(DeliveryPropertyDefinitions.SMTP_ATTACHMENT, m);

添付ファイルのEメール最上部での表示

Eメールの最上部に添付ファイルを表示する場合は、SMTP_ATTACHMENT_FIRSTプロパティをtrueに設定します。次に、使用方法の例を示します。

   Attachment m = new Attachment();
   m.addHtmlAttachment("/path/to/my.html");
     :
     :
   req.addProperty(DeliveryPropertyDefinitions.SMTP_ATTACHMENT_FIRST, "true");
     :

認証用のユーザー名とパスワードの指定

SMTPサーバーで認証が必要な場合は、配信要求にユーザー名とパスワードを指定できます。

 :
   req.addProperty(DeliveryPropertyDefinitions.SMTP_USERNAME, "scott");
   req.addProperty(DeliveryPropertyDefinitions.SMTP_PASSWORD, "tiger");
     :

プリンタへの文書の配信

配信サーバーでは、IPPサポート対象のプリンタやサーバー(CUPSなど)への文書配信について、RFC 2910とRFC 2911で定義されているInternet Printing Protocol(IPP)をサポートしています。

Common Unix Printing System(CUPS)は、無償のサーバー・スタイルのIPPベース・ソフトウェアです。このソフトウェアは、IPP要求を受け入れ、その要求をプリンタやFAXなどのIPPおよび非IPPベースのデバイスにディスパッチします。CUPSの詳細は、http://www.cups.org/を参照してください。使用しているシステムへのCUPS設定の詳細は、「CUPSの設定」を参照してください。

次に、プリンタへの配信のコード例を示します。

// create delivery manager instance
     DeliveryManager dm = new DeliveryManager();
     // create a delivery request
     DeliveryRequest req = dm.createRequest(DeliveryManager.TYPE_IPP_PRINTER);

     // set IPP printer host
     req.addProperty(DeliveryPropertyDefinitions.IPP_HOST, "myhost");
     // set IPP printer port
     req.addProperty(DeliveryPropertyDefinitions.IPP_PORT, "631");
     // set IPP printer name
     req.addProperty(DeliveryPropertyDefinitions.IPP_PRINTER_NAME, "/printers/myprinter");
     // set the document format
     req.addProperty(DeliveryPropertyDefinitions.IPP_DOCUMENT_FORMAT,
       DeliveryPropertyDefinitions.IPP_DOCUMENT_FORMAT_POSTSCRIPT);
     // set the document
     req.setDocument("/document/invoice.ps");

     // submit the request
     req.submit();
     // close the request
     req.close();

次のプロパティがサポートされています。特に記載がないかぎり、各プロパティには、1つの文字列値が必要です。IPP_SIDES、IPP_COPIES、IPP_ORIENTATIONなどのプリンタ固有のプロパティは、プリンタ機能に依存しています。たとえば、対象プリンタが両面印刷をサポートしていない場合、IPP_SIDES設定は機能しません。

プロパティ 説明
IPP_HOST 必須
ホスト名を入力します。
IPP_PORT オプション
デフォルトは631です。
IPP_PRINTER_NAME 必須
出力を受信するプリンタ名(例: /printers/myPrinter)を入力します。
IPP_AUTHTYPE オプション
認証タイプの有効な値は次のとおりです。
IPP_AUTHTYPE_NONE: 認証しません(デフォルト)
IPP_AUTHTYPE_BASIC: HTTPのBasic認証を使用します。
IPP_AUTHTYPE_DIGEST: HTTPのDigest認証を使用します。
IPP_USERNAME オプション
HTTP認証用のユーザー名を入力します。
IPP_PASSWORD オプション
HTTP認証用のパスワードを入力します。
IPP_ENCTYPE オプション
暗号化タイプは、次のいずれかに設定できます。
IPP_ENCTYPE_NONE: 暗号化しません(デフォルト)。
IPP_ENCTYPE_SSL: Secure Sockets Layerを使用します。
IPP_USE_FULL_URL オプション
trueに設定すると、HTTP要求ヘッダーの完全なURLが送信されます。有効な値は、trueまたはfalse(デフォルト)です。
IPP_USE_CHUNKED_BODY オプション
メッセージ本文にHTTPのチャンク形式転送コーディングを使用する場合は、trueに設定します。有効な値は、true(デフォルト)またはfalseです。
IPP_ATTRIBUTE_CHARSET オプション
IPP要求の属性キャラクタ・セット。デフォルトは、UTF-8です。
IPP_NATURAL_LANGUAGE オプション
IPP要求の自然言語。デフォルトは、enです。
IPP_JOB_NAME オプション
IPP要求のジョブ名。
IPP_COPIES オプション
印刷するコピー数を定義します(例: 1、5、10)。デフォルトは、1です。
IPP_SIDES オプション
両面印刷を有効にします。対象プリンタが両面印刷をサポートしていない場合、この設定は無視されます。有効な値は、次のとおりです。
IPP_SIDES_ONE_SIDED: デフォルト
IPP_SIDES_TWO_SIDED_LONG_EDGE: 長い端を重ねて両面印刷します。
IPP_SIDES_TWO_SIDED_SHORT_EDGE: 短い端を重ねて両面印刷します。
IPP_ORIENTATIONS オプション
紙の印刷方向を設定します。対象プリンタが印刷方向の設定をサポートしていない場合、この設定は無視されます。有効な値は、次のとおりです。
IPP_ORIENTATIONS_PORTRAIT(デフォルト)
IPP_ORIENTATIONS_LANDSCAPE
IPP_DOCUMENT_FORMAT オプション
対象プリンタは、特定の書式をサポートしている必要があります。有効な値は、次のとおりです。
IPP_DOCUMENT_FORMAT_POSTSCRIPT
IPP_DOCUMENT_FORMAT_PLAINTEXT
IPP_DOCUMENT_FORMAT_PDF
IPP_DOCUMENT_FORMAT_OCTETSTREAM(デフォルト)

HTTPプロキシ・サーバーを介した印刷

HTTPプロキシ・サーバーを介してIPPプリンタやFAXに文書を配信する場合は、CUPSとプロキシ・サーバー間でのHTTP実装の相違によって、配信に問題が発生する場合があります。次の2つのプロパティを設定することで、これらの問題のほとんどは解決できます。

FAXを介した文書の配信

この配信システムは、CUPS上に構成されたFAXモデムに対する文書の配信をサポートしています。FAXモデムは、efax(http://www.cce.com/efax/)およびFAX4CUPS(http://www.gnu.org/directory/productivity/special/fax4CUPS.html)を使用してCUPS上に構成できます。

次に、FAX配信のコード例を示します。

// create delivery manager instance
     DeliveryManager dm = new DeliveryManager();
     // create a delivery request
     DeliveryRequest req = dm.createRequest(DeliveryManager.TYPE_IPP_FAX);

     // set IPP fax host
     req.addProperty(DeliveryPropertyDefinitions.IPP_HOST, "myhost");
     // set IPP fax port
     req.addProperty(DeliveryPropertyDefinitions.IPP_PORT, "631");
     // set IPP fax name
     req.addProperty(DeliveryPropertyDefinitions.IPP_PRINTER_NAME, "/printers/myfax");
     // set the document format
     req.addProperty(DeliveryPropertyDefinitions.IPP_DOCUMENT_FORMAT, "application/postscript");
     // set the phone number to send
     req.addProperty(DeliveryPropertyDefinitions.IPP_PHONE_NUMBER, "9999999");
     // set the document
     req.setDocument("/document/invoice.pdf");

     // submit the request
     req.submit();
     // close the request
     req.close();

サポートされるプロパティは、プリンタ文書でサポートされるプロパティと同じです。また、次のプロパティもサポートされます。

プロパティ 説明
IPP_PHONE_NUMBER 必須
FAX番号を入力します。

WebDAVサーバーへの文書の配信

次に、WebDAVサーバーへの配信のコード例を示します。

// create delivery manager instance
     DeliveryManager dm = new DeliveryManager();
     // create a delivery request
     DeliveryRequest req = dm.createRequest(DeliveryManager.TYPE_WEBDAV);

     // set document content type
     req.addProperty(DeliveryPropertyDefinitions.WEBDAV_CONTENT_TYPE, "application/pdf");
     // set the WebDAV server hostname
     req.addProperty(DeliveryPropertyDefinitions.WEBDAV_HOST, "mywebdavhost");
     // set the WebDAV server port number
     req.addProperty(DeliveryPropertyDefinitions.WEBDAV_PORT, "80");
     // set the target remote directory
     req.addProperty(DeliveryPropertyDefinitions.WEBDAV_REMOTE_DIRECTORY, "/content/");
     // set the remote filename
     req.addProperty(DeliveryPropertyDefinitions.WEBDAV_REMOTE_FILENAME, "xdotest.pdf");

     // set username and password to access WebDAV server
     req.addProperty(DeliveryPropertyDefinitions.WEBDAV_USERNAME, "xdo");
     req.addProperty(DeliveryPropertyDefinitions.WEBDAV_PASSWORD, "xdo");
     // set the document
     req.setDocument("/document/test.pdf");

     // submit the request
     req.submit();
     // close the request
     req.close();

次のプロパティがサポートされています。特に記載がないかぎり、各プロパティには、1つの文字列値が必要です。

プロパティ 説明
WEBDAV_CONTENT_TYPE 必須
文書のコンテンツ・タイプを入力します(例: application/pdf)。
WEBDAV_HOST 必須
サーバーのホスト名を入力します。
WEBDAV_PORT オプション
サーバーのポート番号を入力します。
デフォルトは80です。
WEBDAV_REMOTE_DIRECTORY 必須
リモート・ディレクトリ名を入力します(例: /myreports/)。
WEBDAV_REMOTE_FILENAME 必須
リモート・ファイル名を入力します。
WEBDAV_AUTHTYPE オプション
認証タイプの有効な値は、次のとおりです。
WEBDAV_AUTHTYPE_NONE: 認証しません(デフォルト)。
WEBDAV_AUTHTYPE_BASIC: HTTPのBasic認証を使用します。
WEBDAV_AUTHTYPE_DIGEST: HTTPのDigest認証を使用します。
WEBDAV_USERNAME オプション
HTTP認証用のユーザー名を入力します。
WEBDAV_PASSWORD オプション
HTTP認証用のパスワードを入力します。
WEBDAV_ENCTYPE オプション
暗号化タイプの有効な値は、次のとおりです。
WEBDAV_ENCTYPE_NONE: 暗号化しません(デフォルト)。
WEBDAV_ENCTYPE_SSL: Secure Sockets Layerを使用します。
WEBDAV_USE_FULL_URL オプション
trueに設定すると、HTTP要求ヘッダーの完全なURLが送信されます。有効な値は、trueまたはfalse(デフォルト)です。
WEBDAV_USE_CHUNKED_BODY オプション
メッセージ本文にHTTPのチャンク形式転送コーディングを使用する場合は、trueに設定します。有効な値は、true(デフォルト)またはfalseです。

FTPを使用した文書の配信

次に、FTPサーバーへの配信のコード例を示します。

// create delivery manager instance
     DeliveryManager dm = new DeliveryManager();
     // create a delivery request
     DeliveryRequest req = dm.createRequest(DeliveryManager.TYPE_FTP);

     // set hostname of the FTP server
     req.addProperty(DeliveryPropertyDefinitions.FTP_HOST, "myftphost");
     // set port# of the FTP server
     req.addProperty(DeliveryPropertyDefinitions.FTP_PORT, "21");
     // set username and password to access WebDAV server
     req.addProperty(DeliveryPropertyDefinitions.FTP_USERNAME, "xdo");
     req.addProperty(DeliveryPropertyDefinitions.FTP_PASSWORD, "xdo");
     // set the remote directory that you want to send your document to
     req.addProperty(DeliveryPropertyDefinitions.FTP_REMOTE_DIRECTORY, "pub");
     // set the remote file name
     req.addProperty(DeliveryPropertyDefinitions.FTP_REMOTE_FILENAME, "test.pdf");
     // set the document
     req.setDocument("/document/test.pdf");

     // submit the request
     req.submit();
     // close the request
     req.close();

次のプロパティがサポートされています。特に記載がないかぎり、1つの文字列値が必要です。

プロパティ 説明
FTP_HOST 必須
サーバーのホスト名を入力します。
FTP_PORT オプション
サーバーのポート番号を入力します。デフォルトは21です。
FTP_USERNAME 必須
FTPサーバーへのログイン・ユーザー名を入力します。
FTP_PASSWORD 必須
FTPサーバーへのログイン・パスワードを入力します。
FTP_REMOTE_DIRECTORY 必須
文書の配信先のディレクトリを入力します(例: /pub/))。
FTP_REMOTE_FILENAME 必須
リモート・サーバーの文書ファイル名を入力します。
FTP_BINARY_MODE オプション
有効な値は、true(デフォルト)またはfalseです。

Secure FTPを介した文書の配信

Secure FTPは、Secure Shellテクノロジ(ssh)に基づくプロトコルであり、セキュアな方法でファイルを転送するために一般に使用されています。Secure ShellおよびSecure FTPのいずれもInternet Engineering Task Force(IETF)により定義され、仕様はIETFのWebサイト(http://www.ietf.org)で参照できます。配信システムでは、Secure FTPサーバーへの文書の配信をサポートしています。

次の表に、サポートされるプロパティを示します。特に記載がないかぎり、各プロパティには、1つの文字列値が必要です。

// create delivery manager instance
     DeliveryManager dm = new DeliveryManager();
     // create a delivery request
     DeliveryRequest req = dm.createRequest(DeliveryManager.TYPE_SFTP);
     // set hostname of the SFTP server
     req.addProperty(DeliveryPropertyDefinitions.SFTP_HOST, "mysftphost");
     // set username and password to access server
     req.addProperty(DeliveryPropertyDefinitions.SFTP_USERNAME, "myname");
     req.addProperty(DeliveryPropertyDefinitions.SFTP_PASSWORD, "mypassword");
     // set the remote directory that you want to send your document to
     req.addProperty(DeliveryPropertyDefinitions.SFTP_REMOTE_DIRECTORY, "pub");
     // set the remote file name
     req.addProperty(DeliveryPropertyDefinitions.SFTP_REMOTE_FILENAME, "test.pdf");
     // set the document
     req.setDocument("/document/test.pdf");

     // submit the request
     req.submit();
     // close the request
     req.close();
プロパティ 説明
SFTP_HOST 必須
ターゲット・サーバーのホスト名を入力します。
SFTP_PORT オプション
ターゲット・サーバーのSSHポート番号を入力します。デフォルトは22です。
SFTP_USERNAME 必須
ログイン・ユーザー名を入力します。
SFTP_PASSWORD SFTP_AUTH_TYPE_PASSWORD認証タイプを選択した場合は必須です。
ログイン・パスワードを入力します。
SFTP_REMOTE_DIRECTORY 文書の配信先となるディレクトリ(例: /pub/)を入力します。値を入力しない場合、文書はログイン・ディレクトリに配信されます。
SFTP_REMOTE_FILENAME 必須
リモート・サーバーの文書ファイル名を入力します。
SFTP_AUTH_TYPE 次のいずれかを設定します。
SFTP_AUTH_TYPE_PASSWORD(デフォルト): ログイン時にパスワードの指定が必要です。
SFTP_AUTH_TYPE_PUBLIC_KEY: 公開鍵承認タイプです。
SFTP_PRIVATE_KEY_FILE クライアント秘密鍵ファイルを入力します。SFTP_AUTH_TYPE_PUBLIC_KEYを選択した場合は必須です。
SFTP_PRIVATE_KEY_PASSWORD クライアント秘密鍵パスワードを入力します。SFTP_AUTH_TYPE_PUBLIC_KEYを選択した場合は必須です。
SFTP_FILE_PERMISSION 作成中のファイルに対して設定する権限を入力します。デフォルトは0755です。

認証モード

Secure FTPを介した配信では、パスワード認証および公開鍵認証という2つの認証モードがサポートされています。モードを選択するには、プロパティSFTP_AUTH_TYPEを設定します。デフォルト・モードはパスワード認証です。

:
         :
      // set public key auth type
      req.addProperty(DeliveryPropertyDefinitions.SFTP_AUTH_TYPE,
                      DeliveryPropertyDefinitions.SFTP_AUTH_TYPE_PUBLIC_KEY);
      // set username
      req.addProperty(DeliveryPropertyDefinitions.SFTP_USERNAME, "myname");
      // set the client's private key file
      req.addProperty(DeliveryPropertyDefinitions.SFTP_PRIVATE_KEY_FILE ,
                      "/path/to/the/key");
      // set the client's private key password
      req.addProperty(DeliveryPropertyDefinitions.SFTP_PRIVATE_KEY_PASSWORD, "myPrivateKeyPass");
         :
         :

パスワード認証モードでは、Secure FTPサーバーにログインする際にユーザー名とパスワードが必要です。次の例で、サンプル・コードを示しています。

:
         :
     // set password auth type
      req.addProperty(DeliveryPropertyDefinitions.SFTP_AUTH_TYPE,
                      DeliveryPropertyDefinitions.SFTP_AUTH_TYPE_PASSWORD);
      // set username and password to access server
      req.addProperty(DeliveryPropertyDefinitions.SFTP_USERNAME, "myname");
      req.addProperty(DeliveryPropertyDefinitions.SFTP_PASSWORD, "mypassword");
         :
         :

公開鍵承認モードでは、ユーザー名、秘密鍵および秘密鍵のパスワードが必要です。このモードはパスワード認証よりもセキュアな方法です。公開鍵認証モードを使用するには、事前にssh/Secure FTPサーバーで公開鍵を設定する必要があるので注意してください。次の例で、サンプル・コードを示しています。

:
         :
      // set public key auth type
      req.addProperty(DeliveryPropertyDefinitions.SFTP_AUTH_TYPE,
                      DeliveryPropertyDefinitions.SFTP_AUTH_TYPE_PUBLIC_KEY);
      // set username
      req.addProperty(DeliveryPropertyDefinitions.SFTP_USERNAME, "myname");
      // set the client's private key file
      req.addProperty(DeliveryPropertyDefinitions.SFTP_PRIVATE_KEY_FILE ,
                      "/path/to/the/key");
      // set the client's private key password
      req.addProperty(DeliveryPropertyDefinitions.SFTP_PRIVATE_KEY_PASSWORD, "myPrivateKeyPass");
         :
         :

HTTPを介した文書の配信

この配信マネージャは、HTTPサーバーへの文書の配信をサポートします。次のコード例では、HTTP POSTメソッドを介して文書を送信しています。受信するHTTPサーバーは、カスタムHTTP要求を(カスタム・サーブレットまたはCGIプログラムを介して)事前に受け入れることができる必要があります。

// create delivery manager instance
     DeliveryManager dm = new DeliveryManager();
     // create a delivery request
     DeliveryRequest req = dm.createRequest(DeliveryManager.TYPE_HTTP);

     // set request method
     req.addProperty(DeliveryPropertyDefinitions.HTTP_METHOD, DeliveryPropertyDefinitions.HTTP_METHOD_POST);
     // set document content type
     req.addProperty(DeliveryPropertyDefinitions.HTTP_CONTENT_TYPE, "application/pdf");
     // set the HTTP server hostname
     req.addProperty(DeliveryPropertyDefinitions.HTTP_HOST, "myhost");
     // set the HTTP server port number
     req.addProperty(DeliveryPropertyDefinitions.HTTP_PORT, "80");
     // set the target remote directory
     req.addProperty(DeliveryPropertyDefinitions.HTTP_REMOTE_DIRECTORY, "/servlet/");
     // set the remote filename (servlet class)
     req.addProperty(DeliveryPropertyDefinitions.HTTP_REMOTE_FILENAME, "uploadDocument");

     // set the document
     req.setDocument("/document/test.pdf");

     // submit the request
     req.submit();
     // close the request
     req.close();

次の表に、サポートされるプロパティを示します。特に記載がないかぎり、各プロパティには、1つの文字列値が必要です。

プロパティ 説明
HTTP_METHOD オプション
HTTP要求メソッドを設定します。有効な値は、次のとおりです。
HTTP_METHOD_POST(デフォルト)
HTTP_METHOD_PUT
HTTP_CONTENT_TYPE 必須
文書のコンテンツ・タイプ(例: application/pdf)。
HTTP_HOST 必須
サーバーのホスト名を入力します。
HTTP_PORT オプション
サーバーのポート番号を入力します。デフォルトは80です。
HTTP_REMOTE_DIRECTORY 必須
リモート・ディレクトリ名を入力します(例: /home/)。
HTTP_REMOTE_FILENAME 必須
文書をリモート・ディレクトリに保存するためのファイル名を入力します。
HTTP_AUTHTYPE オプション
認証タイプの有効な値は、次のとおりです。
HTTP_AUTHTYPE_NONE: 認証しません(デフォルト)
HTTP_AUTHTYPE_BASIC: HTTPのBasic認証を使用します。
HTTP_AUTHTYPE_DIGEST: HTTPのDigest認証を使用します。
HTTP_USERNAME オプション
サーバーで認証が必要な場合は、ユーザー名を入力します。
HTTP_PASSWORD オプション
サーバーで認証が必要な場合は、ユーザー名のパスワードを入力します。
HTTP_ENCTYPE オプション
次の暗号化タイプを入力します。
HTTP_ENCTYPE_NONE: 暗号化しません(デフォルト)。
HTTP_ENCTYPE_SSL: Secure Sockets Layerを使用します。
HTTP_USE_FULL_URL オプション
trueに設定すると、HTTP要求ヘッダーの完全なURLが送信されます。有効な値は、trueまたはfalse(デフォルト)です。
HTTP_USE_CHUNKED_BODY オプション
メッセージ本文にHTTPのチャンク形式転送コーディングを使用する場合は、trueに設定します。有効な値は、true(デフォルト)またはfalseです。
HTTP_TIMEOUT オプション
HTTPサーバーに接続されない場合に要求を終了するまでの長さをミリ秒で入力します。デフォルトは60000(1分)です。

AS2を介した文書の配信

AS2は、Electronic Data Interchange-Internet Integration(EDI-INT)で定義された標準プロトコルの1つです。AS2はHTTPおよびその他のインターネット標準テクノロジに基づいており、セキュアな方法でインターネットを介してデータを交換するように設計されています。AS2の仕様は、RFC4130(http://www.ietf.org/で参照可能)で定義されています。配信システムでは、AS2サーバーへの文書の配信がサポートされています。サンプル・コードは次のとおりです。

// create delivery manager instance
    DeliveryManager dm = new DeliveryManager();
    // create a delivery request
    DeliveryRequest req = dm.createRequest(DeliveryManager.TYPE_AS2);

    // set AS2 message properties
    req.addProperty(DeliveryPropertyDefinitions.AS2_FROM, "Me");
    req.addProperty(DeliveryPropertyDefinitions.AS2_TO, "You");
    req.addProperty(DeliveryPropertyDefinitions.AS2_SUBJECT, "My EDI Message");
    req.addProperty(DeliveryPropertyDefinitions.AS2_CONTENT_TYPE, "applications/EDIFACT");

    // set HTTP properties
    req.addProperty(DeliveryPropertyDefinitions.AS2_HTTP_HOST, "as2hsot");
    req.addProperty(DeliveryPropertyDefinitions.AS2_HTTP_REMOTE_DIRECTORY, "/");
    req.addProperty(DeliveryPropertyDefinitions.AS2_HTTP_REMOTE_FILENAME, "as2");

    // set the document
    req.setDocument("/document/myEDIdoc");
    // submit the request
    DeliveryResponse res = req.submit();
    // close the request
    req.close();

次の表に、サポートされるプロパティを示します。特に記載がないかぎり、各プロパティには、1つの文字列値が必要です。

プロパティ 説明
AS2_FROM 必須。
AS2メッセージの送信者を入力します。
AS2_TO 必須。
AS2メッセージの受信者を入力します。
AS2_SUBJECT 必須。
メッセージの件名を入力します。
AS2_MESSAGE_COMPRESSION デフォルト値はFalseです。メッセージを圧縮するにはTrueを入力します。
AS2_MESSAGE_SIGNATURE デフォルト値はFalseです。メッセージに署名するにはTrueを入力します。
AS2_MESSAGE_ENCRYPTION デフォルト値はFalseです。メッセージを暗号化するにはTrueを入力します。
AS2_CONTENT_TYPE 必須。
文書のコンテンツ・タイプを入力します。有効な値は次のとおりです。
  • application/EDIFACT

  • application/xml

AS2_ENC_ALGO AS2暗号化アルゴリズムです。次のいずれかを設定します。
  • AS2_ENC_ALGO_RC2_40

  • AS2_ENC_ALGO_RC2_64

  • AS2_ENC_ALGO_RC2_128

  • AS2_ENC_ALGO_DES

  • AS2_ENC_ALGO_DES_EDE3(デフォルト)

  • AS2_ENC_ALGO_AES_128

  • AS2_ENC_ALGO_AES_192

  • AS2_ENC_ALGO_AES_256

AS2_DIGEST_ALGO メッセージに署名するためのAS2ダイジェスト・アルゴリズムを入力します。次のいずれかを設定します。
  • AS2_DIGEST_ALGO_MD5(デフォルト)

  • AS2_DIGEST_ALGO_SHA1

AS2_ASYNC_ADDRESS MDN通知を設定する必要がある非同期アドレスを入力します。
AS2_ASYNC_EMAIL_SERVER_HOST 非同期EメールMDNのEメール・サーバー・ホストを入力します。
AS2_ASYNC_EMAIL_SERVER_PORT 非同期EメールMDNのEメール・サーバー・ポートを入力します。
AS2_ASYNC_EMAIL_SERVER_USERNAME 非同期EメールMDNのEメール・サーバーのUSERNAMEを入力します。
AS2_ASYNC_EMAIL_SERVER_PASSWORD 非同期EメールMDNのEメール・サーバーのPASSWORDを入力します。
AS2_ASYNC_EMAIL_SERVER_FOLDER_NAME 非同期EメールMDNのIMAPフォルダ名を入力します。
AS2_HTTP_HOST 必須。
サーバーのホスト名を入力します。
AS2_HTTP_PORT サーバーのHTTPポート番号を入力します。デフォルトは80です。
AS2_HTTP_REMOTE_DIRECTORY 必須。
リモート・ディレクトリ名を入力します(例: /home/)。
AS2_HTTP_REMOTE_FILENAME 必須
リモート・ファイル名を入力します。
AS2_HTTP_AUTHTYPE HTTP認証タイプを入力します。有効な値は次のとおりです。
  • AS2_HTTP_AUTHTYPE_NONE: 認証なし(デフォルト)

  • AS2_HTTP_AUTHTYPE_BASIC: HTTP基本認証を使用します。

  • AS2_HTTP_AUTHTYPE_DIGEST: ユーザーHTTPダイジェスト認証です。

AS2_HTTP_USERNAME HTTP認証用のユーザー名を入力します。
AS2_HTTP_PASSWORD HTTP認証用のパスワードを入力します。
AS2_HTTP_ENCTYPE 暗号化タイプを設定します。有効な値は次のとおりです。
  • AS2_HTTP_ENCTYPE_NONE: 暗号化なし(デフォルト)

  • AS2_HTTP_ENCTYPE_SSL: Secure Sockets Layer(SSL)を使用

AS2_HTTP_TIMEOUT タイムアウトの許容値をミリ秒で入力します。デフォルトは60,000(1分)です。
AS2_HTTP_PROXY_HOST 必須。
プロキシ・サーバーのホスト名を入力します。
AS2_HTTP_PROXY_PORT プロキシ・サーバーのポート番号を入力します。デフォルトは80です。
AS2_HTTP_PROXY_AUTHTYPE
  • AS2_HTTP_AUTHTYPE_NONE: 認証なし(デフォルト)

  • AS2_HTTP_AUTHTYPE_BASIC: HTTP基本認証を使用します。

  • AS2_HTTP_AUTHTYPE_DIGEST: ユーザーHTTPダイジェスト認証です。

AS2_HTTP_PROXY_USERNAME プロキシ認証用のユーザー名を入力します。
AS2_HTTP_PROXY_PASSWORD HTTPプロキシ認証用のパスワードを入力します。

同期性

AS2サーバーには、同期または非同期の配信要求を送信できます。デフォルトでは要求は同期であるため、DeliveryResponseでただちにMessage Disposition Notification(MDN)を参照できます。

要求にAS2_ASYNC_ADDRESSを設定した場合、要求は非同期になります。非同期MDNの配信先となるHTTP URLまたはEメール・アドレスを指定できます。指定すると、AS2サーバーはそのアドレスに直接MDNを配信します。このサンプル・コードは次のとおりです。

:
            :
    // Set the async address to receive MDN asynchronusly.
    req.addProperty(DeliveryPropertyDefinitions.AS2_ASYNC_ADDRESS, "async_target@acme.com");

    // Set the email server information where the MDN will be delivered to.
    req.addProperty(
        DeliveryPropertyDefinitions.AS2_ASYNC_EMAIL_SERVER_HOST, "mail.acme.com");
    req.addProperty(
        DeliveryPropertyDefinitions.AS2_ASYNC_EMAIL_SERVER_USERNAME, "async_target");
    req.addProperty(
        DeliveryPropertyDefinitions.AS2_ASYNC_EMAIL_SERVER_PASSWORD, "mypassword");

    // set the document
    req.setDocument("/document/myEDIdoc");
    // submit the request with the DeliveryResponseListener
    req.submit(myDeliveryListener);
            :
            :

前述のコードでは、AS2要求をサーバーに送信した後、Eメール・サーバーを定期的にチェックします。Eメール・サーバーにMDNが配信され、検出されると、登録済のDeliveryResponseListenerがコールされます。

ダイレクト・モードとバッファリング・モード

配信システムでは、ダイレクト・モードとバッファリング・モードの2つのモードがサポートされています。バッファリング・モードがデフォルトです。

ダイレクト・モード

ダイレクト・モードでは、完全で効率的な配信処理ができます。文書は、宛先に直接接続している接続ストリームに配信されます。このモードは高速で、小規模なメモリーとディスク領域で使用でき、オンラインでの対話型処理にお薦めします。

ダイレクト・モードを設定するには、BUFFERING_MODEプロパティをfalseに設定します。次に、コード例を示します。

// create delivery manager instance
     DeliveryManager dm = new DeliveryManager();

     // create a delivery request
     DeliveryRequest req = dm.createRequest(DeliveryManager.TYPE_IPP_PRINTER);

     // set the direct mode
     req.addProperty(DeliveryPropertyDefinitions.BUFFERING_MODE, "false");
           :
           :
           :

このモードでは、文書の再配信ができません。再配信が必要な場合は、バッファリング・モードを使用します。

バッファリング・モード

バッファリング・モードでは、何度でも文書を再配信できます。配信サーバー構成ファイルに一時ディレクトリ(ds-temp-dir)を指定すると、配信システムでは、一時ファイルを使用して文書がバッファされます。一時ディレクトリを指定しない場合、配信システムではテンポラリのメモリー・バッファが使用されます。一時ディレクトリを定義することをお薦めします。この構成ファイルの詳細は、「構成ファイルのサポート」を参照してください。

一時ファイルまたはバッファは、配信要求の終了後、DeliveryRequest.close()をコールすることで明示的に消去できます。

// create delivery manager instance
     DeliveryManager dm = new DeliveryManager();

     // create a delivery request
     DeliveryRequest req = dm.createRequest(DeliveryManager.TYPE_IPP_PRINTER);

     // set buffering mode
     req.addProperty(DeliveryPropertyDefinitions.BUFFERING_MODE, "true");
     req.addProperty(DeliveryPropertyDefinitions.TEMP_DIR, "/tmp");
           :
           :
           :
     // submit request
     req.submit();
           :
           :
     // submit request again
     req.submit();
           :
           :
     // close the request
     req.close();

配信ステータスの監視

配信システムでは、getStatus()メソッドをコールすることで、要求の最新配信ステータスを確認できます。この要求ステータスはいつでも確認できますが、配信要求オブジェクトは現在保持している必要があります。ステータスの定義は、DeliveryRequestインタフェースで定義されます。

SMTP配信チャネルとHTTP配信チャネルについては、配信ステータスを監視できません。

// create delivery manager instance
     DeliveryManager dm = new DeliveryManager();

     // create a delivery request
     DeliveryRequest req = dm.createRequest(DeliveryManager.TYPE_IPP_PRINTER);
           :
           :
     // submit request
     req.submit();
           :
           :

     // get request status
     int status = req.getStatus();
     if (status == DeliveryRequest.STATUS_SUCCESSFUL)
     {
        System.out.println("Request has been delivered successfully.");
     }
           :
           :
     // get request status again...
     status = req.getStatus();
           :
           :

グローバル・プロパティ

すべての配信要求がグローバル・プロパティを自動的に継承するように、DeliveryManagerにグローバル・プロパティを定義できます。

次のグローバル・プロパティがサポートされています。

プロパティ 説明
BUFFERING_MODE 有効な値は、true(デフォルト)およびfalseです。詳細は、「ダイレクト・モードとバッファリング・モード」を参照してください。
TEMP_DIR 一時ディレクトリの位置を定義します。
CA_CERT_FILE Oracle Wallet Managerで生成されたCA証明書ファイルの位置を定義します。これは、Oracle SSLライブラリを使用したSSL接続で使用されます。位置を指定しない場合は、デフォルトのCA証明書が使用されます。
// create delivery manager instance
     DeliveryManager dm = new DeliveryManager();

     // set global properties
     dm.addProperty(DeliveryPropertyDefinitions.TEMP_DIR, "/tmp");
     dm.addProperty(DeliveryPropertyDefinitions.BUFFERING_MODE, "true");

     // create delivery requests
     DeliveryRequest req1 = dm.createRequest(DeliveryManager.TYPE_IPP_PRINTER);
     DeliveryRequest req2 = dm.createRequest(DeliveryManager.TYPE_IPP_FAX);
     DeliveryRequest req3 = dm.createRequest(DeliveryManager.TYPE_SMTP_EMAIL);
           :
           :

単一の出力ストリームを使用した複数要求の配信

単一の出力ストリームを使用して、複数の配信チャネルに文書を配信するには、MultipleRequestHandlerユーティリティを使用します。すべての配信要求をこのユーティリティに登録し、要求に対してデータを内部的に配布する単一の出力ストリームを取得します。

 // create delivery manager instance
     DeliveryManager dm = new DeliveryManager();
           :
           :
     // create delivery requests
     DeliveryRequest req1 = dm.createRequest(DeliveryManager.TYPE_IPP_PRINTER);
     DeliveryRequest req2 = dm.createRequest(DeliveryManager.TYPE_IPP_FAX);
     DeliveryRequest req3 = dm.createRequest(DeliveryManager.TYPE_SMTP_EMAIL);
           :
           :
     // create MultipleRequestHandler instance
     MultipleRequestHandler mh = new MultipleRequestHandler();
     // register delivery requests
     mh.addRequest(req1);
     mh.addRequest(req2);
     mh.addRequest(req3);
     // get the ouptput stream
     OutputStream out = mh.getDocumentOutputStream();
           :
           :
     // write the document
     out.write(yourDocument);
           :
           :
     // submit all delivery requests
     mh.submitRequests();
           :
           :
     // close requests
     req1.close();
     req2.close();
     req3.close();

カスタム配信チャネルの追加

次の手順によって、システムにカスタム配信チャネルを追加できます。

  1. 配信プロパティを定義します。

  2. DeliveryRequestインタフェースを実装します。

  3. DeliveryRequestHandlerインタフェースを実装します。

  4. DeliveryRequestFactoryインタフェースを実装します。

  5. DeliveryManagerにカスタムのDeliveryRequestFactoryを登録します。

次の各項では、ローカル・ファイル・システムに文書を配信するFile delivery channelというサンプルを使用して、カスタム配信チャネルの作成方法を説明します。

配信プロパティの定義

カスタム配信チャネルを追加する最初の手順は、プロパティの定義です。プロパティは、チャネルで実行する内容によって異なります。プロパティには定数を定義できます。次のコード例にあるファイル配信チャネルに必要なプロパティは1つのみで、そのプロパティは宛先です。

次に、コード例を示します。

package oracle.apps.xdo.delivery.file;

public interface FilePropertyDefinitions
  {
     /** Destination property definition.  */
     public static final String FILE_DESTINATION = "FILE_DESTINATION:String";

   }

各定数値は、文字列であるかぎり任意の値にできます。値は、プロパティ値が実行時に配信システムで自動的に検証されるように、[プロパティ名]:[プロパティ値タイプ]の形式で定義することをお薦めします。この例にあるFILE_DESTINATIONプロパティには1つの文字列値が定義されています。

DeliveryRequestインタフェースの実装

DeliveryRequestは、文書情報と配信メタデータ(宛先や他のプロパティなど)が含まれた配信要求を表します。oracle.apps.xdo.delvery.DeliveryRequestを実装するために、クラスoracle.apps.xdo.delivery.AbstractDeliveryRequestを拡張できます。

たとえば、ローカル・ファイル・システムに文書を配信するためのカスタム配信チャネルを作成するには、次のようにDeliveryRequestを実装します。

package oracle.apps.xdo.delivery.file;
import oracle.apps.xdo.delivery.AbstractDeliveryRequest;

public class FileDeliveryRequest extends AbstractDeliveryRequest
implements FilePropertyDefinitions
{
  private static final String[] MANDATORY_PROPS = {FILE_DESTINATION};

  /**
   * Returns mandatory property names
   */
  public String[] getMandatoryProperties()
  {
    return MANDATORY_PROPS;
  }
  /**
   * Returns optional property names
   */
  public String[] getOptionalProperties()
  {
    return null;
  }
}

DeliveryRequestHandlerインタフェースの実装

DeliveryRequestHandlerには、配信要求を処理するためのロジックが含まれています。次に、ファイル配信チャネル用のoracle.apps.xdo.delivery.DeliveryRequestHandlerの実装例を示します。

package oracle.apps.xdo.delivery.file;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import oracle.apps.xdo.delivery.DeliveryException;
import oracle.apps.xdo.delivery.DeliveryRequest;
import oracle.apps.xdo.delivery.DeliveryRequestHandler;
import oracle.apps.xdo.delivery.DeliveryStatusDefinitions;

public class FileDeliveryRequestHandler implements DeliveryRequestHandler
{

  private FileDeliveryRequest mRequest;
  private boolean mIsOpen = false;
  private OutputStream mOut;

  /**
   * default constructor.
   */
  public FileDeliveryRequestHandler()
  {
  }

  /**
   * sets the request.
   */
  public void setRequest(DeliveryRequest pRequest)
  {
    mRequest = (FileDeliveryRequest) pRequest;
  }

  /**
   * returns the request.
   */
  public DeliveryRequest getRequest()
  {
    return mRequest;
  }

  /**
   * opens the output stream to the destination.
   */
  public OutputStream openRequest() throws DeliveryException
  {
    try
    {
      String filename =
        (String) mRequest.getProperty(FileDeliveryRequest.FILE_DESTINATION);
      mOut = new BufferedOutputStream(new FileOutputStream(filename));

      mIsOpen = true;
      // set request status to open
      mRequest.setStatus(DeliveryStatusDefinitions.STATUS_OPEN);
      return mOut;

    }
    catch (IOException e)
    {
      closeRequest();
      throw new DeliveryException(e);
    }

  }

  /**
   * flushes and closes the output stream to submit the request.
   */
  public void submitRequest() throws DeliveryException
  {
    try
    {
      // flush and close
      mOut.flush();
      mOut.close();
      // set request status
      mRequest.setStatus(DeliveryStatusDefinitions.STATUS_SUCCESSFUL);
      mIsOpen = false;
    }
    catch (IOException e)
    {
      closeRequest();
      throw new DeliveryException(e);
    }
  }

  /**
   * checks the delivery status.
   */
  public void updateRequestStatus() throws DeliveryException
  {

    // check if the file is successfully delivered
    String filename =
      (String) mRequest.getProperty(FileDeliveryRequest.FILE_DESTINATION);
    File f = new File(filename);

    // set request status
    if (f.exists())
      mRequest.setStatus(DeliveryStatusDefinitions.STATUS_SUCCESSFUL);
    else
      mRequest.setStatus(DeliveryStatusDefinitions.STATUS_FAILED_IO_ERROR);

  }
  /**
   * returns the request status.
   */
  public boolean isRequestOpen()
  {
    return mIsOpen;
  }

  /**
   * closes the request, frees all resources.
   */
  public void closeRequest()
  {
    mIsOpen = false;
    try
    {
      if (mOut != null)
      {
        mOut.flush();
        mOut.close();
      }
    }
    catch (IOException e)
    {
    }
    finally
    {
      mOut = null;
    }
  }

}

DeliveryRequestFactoryインタフェースの実装

配信システムにカスタム配信チャネルを登録するには、DeliveryRequestFactoryインタフェースを実装します。

次に、oracle.apps.xdo.delivery.DeliveryRequestFactoryの実装例を示します。

package oracle.apps.xdo.delivery.file;

import oracle.apps.xdo.delivery.DeliveryRequest;
import oracle.apps.xdo.delivery.DeliveryRequestFactory;
import oracle.apps.xdo.delivery.DeliveryRequestHandler;

public class FileDeliveryRequestFactory
implements DeliveryRequestFactory
{
  /**
   * default constructor.
   */
  public FileDeliveryRequestFactory()
  {
  }
  /**
   * returns delivery request.
   */
  public DeliveryRequest createRequest()
  {
    return new FileDeliveryRequest();
  }
  /**
   * returns delivery request handler.
   */
  public DeliveryRequestHandler createRequestHandler()
  {
    return new FileDeliveryRequestHandler();
  }
  /**
   * returns this
   */
  public DeliveryRequestFactory getFactory()
  {
    return this;
  }
}

DeliveryManagerへのカスタムDeliveryRequestFactoryの登録

最後の手順では、配信システムにカスタム配信チャネルを登録します。配信チャネルは次の2つの方法で登録できます。

構成ファイルのサポート

配信システムでは、デフォルト・サーバー、デフォルト・プロパティおよびカスタム配信チャネルを設定するための構成ファイルがサポートされています。構成ファイルの位置は次のとおりです。

{XDO_TOP}/resource/xdodelivery.cfg

{XDO_TOP}は、物理ディレクトリを指し示すJavaシステム・プロパティです。

このシステム・プロパティは、次の2つの方法で設定できます。

DeliveryManagerオブジェクトを構成する前に、システム・プロパティを定義する必要があります。

次に、構成ファイルの例を示します。

<?xml version='1.0' encoding='UTF-8'?>
 <config xmlns="http://xmlns.oracle.com/oxp/delivery/config">
   <! -  ========================================================  - >
   <! -     servers section                                        - >
   <! -     List your pre-defined servers here.                    - >

   <! -  ========================================================  - >
   <servers>
     <server name="myprinter1" type="ipp_printer" default="true">
       <uri>ipp://myprinter1.oracle.com:631/printers/myprinter1</uri>

     </server>
     <server name="myprinter2" type="ipp_printer" >
       <host>myprinter2.oracle.com</host>
       <port>631</port>

       <uri>ipp://myprinter2.oracle.com:631/printers/myprinter2</uri>
       <authType>basic</authType>
       <username>xdo</username>
       <password>xdo</password>

     </server>
     <server name="myfax1" type="ipp_fax" default="true" >
       <host>myfax1.oracle.com</host>

       <port>631</port>
       <uri>ipp://myfax1.oracle.com:631/printers/myfax1</uri>
     </server>
     <server name="mysmtp1" type="smtp_email" default="true">

       <host>myprinter1.oracle.com</host>
       <port>25</port>
     </server>
     <server name="mysmtp2" type="smtp_email" >

       <host>mysmtp12.oracle.com</host>
       <port>25</port>
       <username>xdo</username>
       <password>xdo</password>

     </server>
   </servers>
   <! -  ========================================================  - >
   <! -     properties section                                     - >
   <! -     List the system properties here.                       - >
   <! -  ========================================================  - >
   <properties>

     <property name="ds-temp-dir">/tmp</property>
     <property name="ds-buffering">true</property>
   </properties>
   <! -  ========================================================  - >
   <! -      channels section                                      - >

   <! -      List the custom delivery channels here.               - >
   <! -  ========================================================  - >
   <channels>
     <channel name="file">oracle.apps.xdo.delivery.file.FileDeliveryRequestFactory</channel>
   </channels>

 </config>

配信チャネルに対する複数サーバーの定義

各配信チャネルには、複数のサーバー・エントリを定義できます。たとえば、前述の構成ファイルの例では、ipp_printer配信チャネルに対して2つのサーバー・エントリ(myprinter1およびmyprinter2)があります。

DeliveryRequest.setServer()メソッドをコールして、配信要求にサーバー・エントリをロードします。次に例を示します。

// create delivery manager instance
     DeliveryManager dm = new DeliveryManager();
     // create a delivery request
     DeliveryRequest req = dm.createRequest(DeliveryManager.TYPE_IPP_PRINTER);

     // load myprinter1 setting
     req.setServer("myprinter1");

配信チャネルに対するデフォルト・サーバーの指定

配信チャネルにデフォルト・サーバーを定義するには、default="true"を指定します。前述の構成ファイルの例では、myprinter1がipp_printer配信チャネルのデフォルト・サーバーとして定義されています。ユーザーがipp_printer配信のサーバー・プロパティを指定していない場合は、デフォルト・サーバーの下のサーバー・プロパティが使用されます。

CUPSの設定

配信マネージャには、文書を印刷およびFAX送信するためのCUPSが必要です。この項では、RedHat Linuxで印刷およびFAX送信するためのCUPSの設定方法について説明します。

次の図に、XMLパブリッシャとCUPSの統合を示します。

テキストで説明されている画像

次の各手順では、CUPSにプリンタおよびFAXを追加する方法、およびその設定のテスト方法について説明します。『CUPS Software Administrators Manual』(http://www.cups.org/doc-1.1/sam.html)およびRedhat Advanced Serverのオンライン・ヘルプを参照してください。

前提条件

CUPSでのプリンタ設定

RedHat Advanced Serverには、プリンタの設定に役立つ構成ウィザードが用意されています。RedHatプロセスの要約を次に示します。

RedHatプリンタ構成ウィザードの使用

  1. 「redhat-config-printer」を実行します。

    ルート・ユーザーでログインした際に、端末を開いて「redhat-config-printer」を実行します。これによって、「Printer configuration」ウィンドウが起動します。

  2. 「New」タブを選択して、Add a new print queueウィザードを起動します。

  3. ウィザードのプロンプトに従って、次の操作を実行します。

  4. 新規キューが「Printer configuration」ウィンドウに表示されます。

CUPSでのプリンタのテスト

  1. RedHatでブラウザを起動し、次のURLを入力します。

    http://localhost:631

  2. 「Printers」タブを選択します。作成したプリンタがリストされます。

    Windowsのブラウザを使用してこのページにアクセスするには、「他のマシンからCUPSへのアクセス」を参照してください。

  3. 「Print Test Page」を選択して、プリンタの設定をテストします。テスト・ページが印刷されない場合は、構成手順を繰り返します。プリンタ・タイプとモデルが正しく選択されていることを確認してください。

CUPS用FAXのインストールと設定

この項では、efax-0.9ソフトウェアをインストールしてCUPS用に構成する方法について説明します。

FAXソフトウェアのインストール

  1. 次のいずれかの場所からefax-0.9をダウンロードします。

  2. 次のコマンドを使用して、このファイルを作業ディレクトリに抽出します。

  3. 次のコマンドを使用して、コンパイルおよびインストールします(詳細は、Readmeを参照)。

    注意: 使用するRedHat ASには、makeおよびgccをインストールしておく必要があります。

  4. FAXをテストします。

    次のコマンドを入力します。

    fax send <fax_number><tiff file>

    例:

    fax send 1234567 test.tiff

    次のリターン・コードを取得した場合、FAXは正常に送信されています。

    done, returning 0 (success)

  5. fax4CUPをダウンロードします。次のサイトから入手できます。

  6. 次のように、fax4CUPSをインストールします。

  7. 次のコマンドを使用して、CUPSを再起動します。

    /etc/rc.d/init.d/cups restart

CUPSでのFAX設定

  1. ブラウザを起動し、URL http://localhost:631/adminに移動します。

  2. 起動されたダイアログに、管理者のユーザー名とパスワードを入力します。

  3. 「Admin」ページで「Add Printer」を選択します。

  4. 次のように、FAXキューを追加します。

    「Add New Printer」リージョンで、次のフィールドに入力します。

  5. FAXキューのデバイスを選択します。

    「Faxmodem (efax on /dev/modem)」を選択します。場合によっては、かわりに「/dev/ttySxx」が表示されます。

  6. FAXキューのモデルを選択します。

    「efax」を選択します。「HylaFAX」または「mgetty-fax」も、インストールしている場合は選択できます。

  7. FAXキューのドライバを選択します。

    「efax (en)」を選択します。

  8. 「CUPS Admin」Webページに表示されている新規のFAXキューを検証します。

  9. CUPSでFAXをテストします。

    FAXをテストするには、次のコマンドを入力します。

    /usr/bin/lp -d <printer name> -t <phone#> test.pdf

    例:

    /usr/bin/lp -d efax1 -t 5556231 myfax.pdf

他のマシンからCUPSへのアクセス

デフォルトでは、他のネットワーク・マシンからCUPSにアクセスすることはできません。ただし、次のように、アクセスが可能になるように構成できます。

  1. 次のコマンドを使用して、CUPS構成ファイルを開きます。

    Open /etc/cups/cupsd.conf
  2. Listen命令を追加します。

  3. 各プリンタを構成します。

  4. 構成ファイルを保存し、CUPSを再起動します。

  5. 他のマシンからのアクセシビリティをテストします。

    別のマシンからブラウザを起動して、次のいずれかのURLを入力し、CUPSのWebページにアクセスできることを確認します。