リファレンス・ガイド

     前  次    新規ウィンドウで目次を開く    PDFとして表示 - 新規ウィンドウ  Adobe Readerを取得 - 新規ウィンドウ
コンテンツはここから始まります

Oracle SALT HTTP FML32バッファ形式

次の項では、Oracle SALT HTTP FML32バッファ形式の情報を説明します。

 


Oracle SALT HTTP FML32バッファ形式

Oracle Tuxedoサービスは動的HTMLコンテンツを生成するために開発される場合があります。これらのサービスではデータが特定のFML32形式で送信され、リストH-1に示されているように、別のFML32バッファでレスポンスを返す必要があります。

リストH-1 Oracle SALT HTTP FML32バッファ形式
#include <atmi.h>
#include <userlog.h>
#include <fml32.h>
#include <httpflds.h> /* contains the HTTP field definitions */
/**
 * MyService. Must match the TuxService parameter
 * configured in mod_tuxedo 
 */
MyService(TPSVCINFO *rqst) {
    FBFR32 *response_buf;
    int rc;
    char *query_string;
    long query_len;
    char *response_body = "<html>\n<head>\n<title>Tuxedo"         
                          "Test</title>\n</head>\n<body>\n"
                          "<p>Hello World</p>\n</body>\n<html>";
    query_string = malloc(QUERY_SIZE);
    if (query_string == NULL) {
        userlog("Unable to allocate query_string: %d", errno);
        tpreturn(TPFAIL, 0, NULL, 0L, 0);
    }
    rc = Fget32(rqst->data, QUERY_STRING, 0, 
                (char*)query_string, 
                &query_len);
    if (rc < 0) {
        userlog("Problem extracting query_string: %s", 
                Fstrerror32(Ferror32));
        tpreturn(TPFAIL, 0, NULL, 0L, 0);
    }
    userlog("QUERY_STRING received: %s", query_string);
    if((response_buf = 
        (FBFR32 *) tpalloc("FML32", NULL, 1024 )) == NULL) {
        userlog("Unable to allocate response_buf:%s", 
                 tpstrerror(tperrno));
        tpreturn(TPFAIL, 0, NULL, 0L, 0);
    }
    if((response_data = 
        tpalloc("CARRAY", NULL, strlen(response_body) + 1) == NULL) {
        userlog("Unable to allocate response_buf:%s", 
                tpstrerror(tperrno));
        tpreturn(TPFAIL, 0, NULL, 0L, 0);
    }
    strcpy(response_data, response_body);
    rc = Fchg32(response_buf, RESPONSE_DATA, 0, 
                (char*)respone_data, 
                0);
    if (rc < 0) {
        userlog("Problem setting response data: %s", 
                Fstrerror32(Ferror32));
        tpreturn(TPFAIL, 0, NULL, 0L, 0);
    }
    tpreturn(TPSUCCESS, 0, (char *)response_buf, 0L, 0);
}

入力バッファ

mod_tuxedoによる起動時に、Oracle Tuxedoサービスは表H-1に示すようなFML32バッファを受け取ります。

表H-1 入力バッファ
フィールド名
説明
AUTH_TYPE
何らかの認証方法が使用された場合、Webブラウザで使用された認証方法を説明します。セキュリティが使用されないかぎり、これは存在しません。
string
CONTENT_TYPE
ユーザーから受信中のデータのメディア・タイプを示します。これはPOSTメソッドを使用して実行されるリクエストに対して使用され、それ以外の場合は存在しません。
string
DOCUMENT_ROOT
サーバーのホームHTMLページへのルート・パス。たとえば、次のように指定します。
/home/httpd/html
string
PATH_INFO
サーバー側のスクリプト・プログラムにアクセスしたURLの末尾に追加された、追加パス情報。
string
PATH_TRANSLATED
webserverの仮想から物理までのパス情報によって変換された、PATH_INFO変数の変換後のバージョン。
string
QUERY_STRING
<A HREF="/cgi-bin/hits.pl?mainpage></A>
?の後ろにある情報はQUERY_STRINGで、このケースでは"mainpage"です。このケースでは次の文字列がQUERY_STRINGに含まれます。
mainpage
string
REMOTE_ADDR
クライアント・コンピュータのIPアドレス。たとえば、次のように指定します。
132.15.28.124
string
REMOTE_HOST
HTTPリクエストを生成しているクライアント・マシンの完全修飾ドメイン名。多くのクライアント・コンピュータ名がDNSシステムで記録されていないため、この名前を判断するのは不可能な場合があります。たとえば、次のように指定します。
myhost.mycompany.com
string
REMOTE_IDENT
このフィールドを使用する機能は、RFC 931をサポートするサーバーに限られています。このフィールドにはクライアント・マシンのユーザー名が含まれる場合がありますが、このユーザー名は(可能な場合に)ロギングに使用することを目的としています。
string
REMOTE_PORT
クライアントのリクエスト中ポート。たとえば、次のように指定します。
3465
string
REMOTE_USER
セキュリティが有効で、サービスにアクセスするにはユーザーのログインが必要だった場合は、この値にユーザーのログイン名が含まれます。
string
REQUEST_URI
クライアントによって送信されたリクエストのパス。たとえば、次のように指定します。
/tux/processorder?orderId=1234
string
REQUEST_METHOD
ブラウザで使用された要求方法を説明します。通常はGET、POSTまたはHEADです。
string
SERVER_ADMIN
サーバー管理者の電子メール・アドレス。たとえば、次のように指定します。
webadmin@myhost.mycompany.com
string
SERVER_NAME
自己参照URLとして表示されるサーバー・ホスト名、IPアドレスまたはDNS別名。"HTTP:"などのプロトコル識別子、マシン名またはポート番号は含まれません。たとえば、次のように指定します。
myhost
string
SERVER_PORT
HTTPリクエストおよびレスポンスの送信に使用されているポート番号。たとえば、次のように指定します。
80
string
SERVER_PROTOCOL
この値は通常、HTTPで、クライアントおよびサーバーのコンピュータ間で使用中のプロトコルを示します。たとえば、次のように指定します。
HTTP/1.1
string
SERVER_SIGNATURE
Webサーバーの名前およびバージョンと使用中のポートを指定するサーバー情報。たとえば、次のように指定します。
Apache/2.2.15 Server at myhost Port 80
string
SERVER_SOFTWARE
Webサーバーの名前およびバージョン。たとえば、次のように指定します。
Apache/2.2.15 (Unix) mod_fastcgi/2.4.6 mod_tuxedo/1.0.0
string
HTTP_ACCEPT
クライアント・ブラウザが受け入れられるデータのメディア・タイプ。これらのデータ・タイプはカンマで区切られます。たとえば、次のように指定します。
image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*
string
HTTP_ACCEPT_ENCODING
たとえば、次のように指定します。
gzip, deflate
string
HTTP_ACCEPT_LANGUAGE
クライアント・ブラウザが受け入れられる言語。たとえば、次のように指定します。
en-us
string
HTTP_COOKIE
ブラウザからのサーバー・ドメインに関連付けられたCookieが含まれる環境変数として使用されます。
string
HTTP_FORWARDED
たとえば、次のように指定します。
by http://proxy.yourcompany.com:8080 (Netscape-Proxy/3.5)
string
HTTP_HOST
たとえば、次のように指定します。
yourhost.yourcompany.com
string
HTTP_PRAGMA
たとえば、次のように指定します。
No-Cache
string
     
HTTP_REFERRER
HTTPリクエストが生成されたページ・アドレス。
string
HTTP_USER_AGENT
リクエストの生成に使用されているクライアントWebブラウザの名前。たとえば、次のように指定します。
Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.307.11
string
POST_DATA
POSTリクエストにおいて、クライアント・ブラウザで送信されたとおりのデータ。データはURLエンコーディングされます。たとえば、次のように指定します。
Name=Jonathan+Doe&Age=23&Formula=a+%2B+b+%3D%3D+13%25%21
carray

出力バッファ

mod_tuxedoで呼び出されるOracle Tuxedoサーバーは、表H-2に示されているフィールドが含まれるFML32バッファを返す必要があります。その他のタイプのバッファを返したり、いずれかの必須フィールドがない場合は、サーバー・エラーが発生してクライアント・ブラウザに返される結果になります。

表H-2 出力バッファ
フィールド名
説明
RESPONSE_CODE*
クライアントに返されるステータス文字列に対応する数値コード。
たとえば200、404または302などです。
これは必須フィールドです。
long
STATUS_LINE
クライアントに返される完全なステータス文字列が含まれる文字列バージョン。
例:
200 OK
302 FOUND
このフィールドはオプションです。
文字列
CONTENT_TYPE
MIMEタイプのデータを本文に提供します(text/htmlまたはimage/gifなど)。
通常の値はtext/htmlですが、プログラムは画像を生成し、image/gifコンテンツを返す場合があります。
指定しない場合、text/htmlヘッダーが生成されて返されます。
string
HTTP_COOKIE
Set-cookieヘッダーに対応します。Cookieデータが含まれる場合があります。たとえば、セッションIDがこのフィールドを使用して設定されます。
コンテンツの例は次のとおりです。
sessionid=bbdb4cd00829aa5ffb5402395cb8f8c0; expires=Fri, 18-Mar-2011 19:39:19 GMT; Max-Age=1209600; Path=/
このフィールドはオプションです。
string
LOCATION
通常は'302 FOUND'レスポンス・コードとともに使用され、リダイレクトURLの場所が含まれます。
次に例を示す。
http://123.456.1.123:2280/admin/
'302 FOUND'レスポンスが返された場合、これは必須フィールドです。
string
RESPONSE_DATA*
クライアント・ブラウザまたはプログラムに返されるデータ(ヘッダーを除く)。適切なヘッダーはmod_tuxedoによって処理され、生成されます。たとえば、次のように指定します。
<html>
<head>
<title>Tuxedo Test</title>
</head>
<body>
<p>Hello World</p>
</body>
<html>
carray


  先頭に戻る       前  次