Oracle XML Publisherユーザーズ・ガイド リリース11i B25754-01 | ![]() 目次 | ![]() 前へ | ![]() 次へ |
配信マネージャは、XMLパブリッシャ文書の配信を制御できる一連のJava APIです。配信マネージャは次の各操作に使用します。
確立された配信チャネル(Eメール、FAX、プリンタ、WebDAV、FTP、Secure FTP、AS2またはHTTP)またはカスタム配信チャネルを介した文書の配信
各配信のステータスの追跡
文書の再配信
配信マネージャを使用する手順は、次のとおりです。
DeliveryManagerインスタンスを作成します。
createRequest()メソッドを使用して、DeliveryRequestインスタンスを作成します。
要求のプロパティ(DeliveryRequestの宛先など)を追加します。ほとんどのプロパティでは文字列値が必要です。詳細は、各配信チャネルでサポートされるプロパティを参照してください。
DeliveryRequestに文書を設定します。
submit()をコールしてこの配信要求を発行します。
1つの配信要求によって、1つの文書と1つの宛先を処理できます。必要な場合は、この処理によって監視と再発行が容易になります。
DeliveryRequestでは、文書を次の3つの方法で設定できます。
DeliveryRequestから出力ストリームを取得して、文書を書き込みます。この出力ストリームは、submit()メソッドをコールするために、書込みの直後に閉じる必要はありません。
文書の入力ストリームをDeliveryRequestに設定します。入力ストリームは、ユーザーが初めてsubmit()をコールしたときに、DeliveryRequestによって読み込まれます。入力ストリームは、DeliveryRequestによって閉じられないため、ユーザーが閉じる必要があります。
文書のファイル名をDeliveryRequestに設定します。
ダイレクト・モードを設定をすると、配信マネージャによって効率的な配信がサポートされます。「ダイレクト・モードとバッファリング・モード」を参照してください。
このマニュアルで説明する配信チャネルは、次のとおりです。
Eメール
プリンタ
FAX
WebDAV
FTP
Secure FTP
HTTP
AS2
次に、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つの要求に複数の文書を添付します。次に、使用方法の例を示します。
// 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);
1つの要求に複数のHTML文書を添付できます。HTML文書に、ローカル・ファイル・システムに配置されたイメージ・ファイルへの参照がある場合は、添付ユーティリティによって、そのイメージ・ファイルも自動的に添付されます。次に、使用方法の例を示します。
Attachment m = new Attachment();
m.addHtmlAttachment("/path/to/my.html");
:
:
req.addProperty(DeliveryPropertyDefinitions.SMTP_ATTACHMENT, m);
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プロキシ・サーバーを介してIPPプリンタやFAXに文書を配信する場合は、CUPSとプロキシ・サーバー間でのHTTP実装の相違によって、配信に問題が発生する場合があります。次の2つのプロパティを設定することで、これらの問題のほとんどは解決できます。
DeliveryPropertyDefinitions.IPP_USE_FULL_URL: trueに設定します。
DeliveryPropertyDefinitions.IPP_USE_CHUNKED_BODY: falseに設定します。
この配信システムは、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サーバーへの配信のコード例を示します。
// 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サーバーへの配信のコード例を示します。
// 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 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 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は、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 | 必須。 文書のコンテンツ・タイプを入力します。有効な値は次のとおりです。
|
AS2_ENC_ALGO | AS2暗号化アルゴリズムです。次のいずれかを設定します。
|
AS2_DIGEST_ALGO | メッセージに署名するためのAS2ダイジェスト・アルゴリズムを入力します。次のいずれかを設定します。
|
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_USERNAME | HTTP認証用のユーザー名を入力します。 |
AS2_HTTP_PASSWORD | HTTP認証用のパスワードを入力します。 |
AS2_HTTP_ENCTYPE | 暗号化タイプを設定します。有効な値は次のとおりです。
|
AS2_HTTP_TIMEOUT | タイムアウトの許容値をミリ秒で入力します。デフォルトは60,000(1分)です。 |
AS2_HTTP_PROXY_HOST | 必須。 プロキシ・サーバーのホスト名を入力します。 |
AS2_HTTP_PROXY_PORT | プロキシ・サーバーのポート番号を入力します。デフォルトは80です。 |
AS2_HTTP_PROXY_AUTHTYPE |
|
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();
次の手順によって、システムにカスタム配信チャネルを追加できます。
配信プロパティを定義します。
DeliveryRequestインタフェースを実装します。
DeliveryRequestHandlerインタフェースを実装します。
DeliveryRequestFactoryインタフェースを実装します。
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は、文書情報と配信メタデータ(宛先や他のプロパティなど)が含まれた配信要求を表します。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には、配信要求を処理するためのロジックが含まれています。次に、ファイル配信チャネル用の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インタフェースを実装します。
次に、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;
}
}
最後の手順では、配信システムにカスタム配信チャネルを登録します。配信チャネルは次の2つの方法で登録できます。
静的メソッド
このメソッドを使用して配信チャネルを構成ファイルに指定し、その配信チャネルを配信システム全体に登録します。詳細は、「構成ファイルのサポート」を参照してください。
動的メソッド
登録するAPIをプログラムでコールすることで、Java VMインスタンスに配信チャネルを登録します。
次に、動的メソッドを使用してファイル配信チャネルを登録し、そのファイル配信チャネルをコールするためのコード例を示します。
package oracle.apps.xdo.delivery.file;
import oracle.apps.xdo.delivery.DeliveryManager;
import oracle.apps.xdo.delivery.DeliveryRequest;
public class FileDeliverySample
{
public static void main(String[] args) throws Exception
{
// register the file delivery channel
DeliveryManager.addRequestFactory("file", "oracle.apps.xdo.delivery.file.FileDeliveryRequestFactory");
// create delivery manager instance
DeliveryManager dm = new DeliveryManager();
// create a delivery request
DeliveryRequest req = dm.createRequest("file");
// set the destination
req.addProperty(
FileDeliveryRequest.FILE_DESTINATION,
"d:/Temp/testDocument_delivered.pdf");
// set the document to deliver
req.setDocument("D:/Temp/testDocument.pdf");
// submit the request
req.submit();
// close the request
req.close();
}
}
配信システムでは、デフォルト・サーバー、デフォルト・プロパティおよびカスタム配信チャネルを設定するための構成ファイルがサポートされています。構成ファイルの位置は次のとおりです。
{XDO_TOP}/resource/xdodelivery.cfg
{XDO_TOP}は、物理ディレクトリを指し示すJavaシステム・プロパティです。
このシステム・プロパティは、次の2つの方法で設定できます。
-DXDO_TOP=/path/to/xdotopをJava起動パラメータに渡します。
コードには、java.lang.System.getProperties().put("XDO_TOP", "/path/to/xdotop")などのJava APIを使用します。
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配信のサーバー・プロパティを指定していない場合は、デフォルト・サーバーの下のサーバー・プロパティが使用されます。
配信マネージャには、文書を印刷および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のオンライン・ヘルプを参照してください。
RedHat Advanced Server 3.0
Linuxボックスに接続したFAXモデム
インストールしたRedHat Advanced Server用の開発ツール
CUPS(RedHat AS 3.0のインストール時にデフォルトでインストールされます)
RedHat Advanced Serverには、プリンタの設定に役立つ構成ウィザードが用意されています。RedHatプロセスの要約を次に示します。
RedHatプリンタ構成ウィザードの使用
「redhat-config-printer」を実行します。
ルート・ユーザーでログインした際に、端末を開いて「redhat-config-printer」を実行します。これによって、「Printer configuration」ウィンドウが起動します。
「New」タブを選択して、Add a new print queueウィザードを起動します。
ウィザードのプロンプトに従って、次の操作を実行します。
キュー名を入力します。
キュー・タイプを選択します。
「Networked_JetDirect」を選択して、ネットワーク・プリンタを設定します。この選択では、次の内容も入力する必要があります。
Printer: ホスト名またはIPアドレスを入力します。
Port: ポートを入力します。
Microsoft Windowsにプリンタ・ドライバがインストールされている場合、プリンタとポートの情報は、そのプリンタの「Properties」ダイアログ(「設定」->「Printers and Faxes」->「(select printer)」->「File」->「Properties」)から入手できます。
プリンタ・モデルを選択します。
使用しているプリンタがPostScriptをサポートしている場合は、次を選択します。
Manufacturer: Generic
Model: PostScript Printer
選択内容を確認し、「Apply」を選択して新規の印刷キューを作成します。
新規キューが「Printer configuration」ウィンドウに表示されます。
CUPSでのプリンタのテスト
RedHatでブラウザを起動し、次のURLを入力します。
http://localhost:631
「Printers」タブを選択します。作成したプリンタがリストされます。
Windowsのブラウザを使用してこのページにアクセスするには、「他のマシンからCUPSへのアクセス」を参照してください。
「Print Test Page」を選択して、プリンタの設定をテストします。テスト・ページが印刷されない場合は、構成手順を繰り返します。プリンタ・タイプとモデルが正しく選択されていることを確認してください。
この項では、efax-0.9ソフトウェアをインストールしてCUPS用に構成する方法について説明します。
FAXソフトウェアのインストール
次のいずれかの場所からefax-0.9をダウンロードします。
次のコマンドを使用して、このファイルを作業ディレクトリに抽出します。
gunzip efax-0.9.tar.gz
tar xvf efax-0.9.tar
次のコマンドを使用して、コンパイルおよびインストールします(詳細は、Readmeを参照)。
make
make install
注意: 使用するRedHat ASには、makeおよびgccをインストールしておく必要があります。
FAXをテストします。
次のコマンドを入力します。
fax send <fax_number><tiff file>
例:
fax send 1234567 test.tiff
次のリターン・コードを取得した場合、FAXは正常に送信されています。
done, returning 0 (success)
fax4CUPをダウンロードします。次のサイトから入手できます。
次のように、fax4CUPSをインストールします。
tarファイルを一時ディレクトリに抽出します。
このディレクトリをcd fax4CUPS-1.23で変更します。
INSTALLファイルを開き、すべての手順を実行します。
次のコマンドを使用して、CUPSを再起動します。
/etc/rc.d/init.d/cups restart
CUPSでのFAX設定
ブラウザを起動し、URL http://localhost:631/adminに移動します。
起動されたダイアログに、管理者のユーザー名とパスワードを入力します。
「Admin」ページで「Add Printer」を選択します。
次のように、FAXキューを追加します。
「Add New Printer」リージョンで、次のフィールドに入力します。
Name: efaxserverなどのわかりやすい名称を入力します。これによって、ipp://serverName:631/printers/efaxserverと表示されます。
Location: オプション
Description: オプション
FAXキューのデバイスを選択します。
「Faxmodem (efax on /dev/modem)」を選択します。場合によっては、かわりに「/dev/ttySxx」が表示されます。
FAXキューのモデルを選択します。
「efax」を選択します。「HylaFAX」または「mgetty-fax」も、インストールしている場合は選択できます。
FAXキューのドライバを選択します。
「efax (en)」を選択します。
「CUPS Admin」Webページに表示されている新規のFAXキューを検証します。
CUPSでFAXをテストします。
FAXをテストするには、次のコマンドを入力します。
/usr/bin/lp -d <printer name> -t <phone#> test.pdf
例:
/usr/bin/lp -d efax1 -t 5556231 myfax.pdf
デフォルトでは、他のネットワーク・マシンからCUPSにアクセスすることはできません。ただし、次のように、アクセスが可能になるように構成できます。
次のコマンドを使用して、CUPS構成ファイルを開きます。
Open /etc/cups/cupsd.conf
Listen命令を追加します。
構成ファイルの下部にスクロールします。ここには他のListen命令が宣言されています。
「Listen 127.0.0.1:631」をコピーして、オリジナルの上か下に貼り付けます。
「127.0.0.1」をLinuxサーバーのIPアドレスに置換します。
各プリンタを構成します。
構成ファイルで次の位置を検索します。
<Location /printers/your_printer_queue>
「Deny From All」命令をコメントにします。
例:
# Deny From All
「Allow from 127.0.0.1」を「Allow from All」に変更します。
アクセスを可能にするすべてのプリンタまたはFAXキューについて、この手順を繰り返します。
構成ファイルを保存し、CUPSを再起動します。
CUPSを停止するには、次のコマンドを使用します。
/etc/rc.d/init.d/cups stop
CUPSを開始するには、次のコマンドを使用します。
/etc/rc.d/init.d/cups start
他のマシンからのアクセシビリティをテストします。
別のマシンからブラウザを起動して、次のいずれかのURLを入力し、CUPSのWebページにアクセスできることを確認します。
http://linux_server_name:631
http://linux_ip_address:631