com.j_phone.io
インタフェース ObexConnection

すべてのスーパーインタフェース:
javax.microedition.io.Connection, javax.microedition.io.InputConnection, javax.microedition.io.OutputConnection, javax.microedition.io.StreamConnection
既知のサブインタフェースの一覧:
ClientObexConnection, ServerObexConnection

public interface ObexConnection
extends javax.microedition.io.StreamConnection

OBEX外部接続機能によって通信を行うときに、 OBEXクライアントとOBEXサーバで共通に使われるフィールドやメソッドを定義したインタフェースです。


OBEX外部接続機能について

JSCLでは、赤外線ポートを介してJavaアプリケーションと外部機器を接続し、通信を行うためのOBEX外部接続機能を規定しています。 外部機器にはJSCLに対応した機器自身も含まれます。 またJSCLではOBEX外部接続機能におけるクライアントAPIおよびサーバAPIの両方をサポートするため、 機器間で名刺やスケジュールなどの小さなデータを交換しあうJavaアプリケーション容易に開発することができます。

なお、JSCLのOBEX外部接続機能は IrDA の規格に基づいて実装されますが、このドキュメントでは IrDA 規格そのものについての解説は行いません。 これらの規格に関する詳細は、Infrared Data Association の制定している各種規格書を参照してください。

JSCLが準拠するIrDA の各規格とバージョンを以下に示します。

IrOBEXによるデータの送受信

OBEX(IrOBEX)は、赤外線ポートを介したデータ送受信の手順を「オブジェクトの交換」という形式で規格化したものです。 ここでいうオブジェクトとは、一塊となることで意味を持つ、たとえばファイルなどの一般的なデータの実体のことを指します。

OBEX自体はデータ送受信の手順(プロトコル)を規格化したものであり、APIを規格化したものではありません。 JSCLでは、Generic Connectionフレームワーク上にOBEXによるデータ送受信を扱うAPIを規定しています。

OBEXの仕様はHTTPを参考として策定されており、OBEXクライアントが送信するリクエストに対してOBEXサーバがレスポンスを返す クライアントサーバモデルに従っています。 OBEXクライアントがOBEXサーバにオペレーションの処理を要求し、OBEXサーバはその処理としてレスポンスステータスや 処理結果としてのオブジェクトをOBEXクライアントに返します。 JSCLはクライアントサーバの間でオブジェクトを送受するためのオペレーションとして以下の2つを提供します。

GETオペレーション
OBEXクライアントがOBEXサーバにオブジェクトの送信を要求する
PUTオペレーション
OBEXクライアントからOBEXサーバに対してオブジェクトを送信する

プロトコル自体がバイナリ形式で表現されることを除き、 リクエストおよびレスポンスがヘッダやオブジェクト本体(ボディ)から構成されること、 および規定されているレスポンスステータスの内容などはHTTPと類似しています。

OBEX規格では、赤外線通信のパケット長の制限などに起因するオブジェクトの分割や再構成といった処理を行うための詳細な手順が規定されています。 しかしJava実行環境が提供するAPIがこれらの複雑な規定を隠蔽するため、開発者はより容易にJavaアプリケーションを開発することができます。

以下にOBEXクライアントとOBEXサーバの利用イメージを示します。

ObexConnectionUsage.gif

図1. OBEXクライアントとOBEXサーバの利用イメージ

OBEX外部接続API

ObexConnectionインタフェースはOBEXクライアントとOBEXサーバで共通に使用される定数やメソッドを定義するインタフェースであり、 それを継承するサブインタフェースとして ClientObexConnection および ServerObexConnection が用意されています。 これら2つのサブインタフェースでは、OBEXクライアントまたはOBEXサーバ固有のメソッドが定義されています。

OBEX外部接続で使用するコネクションオブジェクトはHTTP通信の場合と同様Connector.open()メソッドを使用して取得しますが、 このコネクションオブジェクトは ClientObexConnection または ServerObexConnection を実装しています。 Connector.open()に指定するURLは、OBEXクライアントアプリケーションとOBEXサーバアプリケーションでは異なります。

導入されたバージョン:
JSCL 1.2

フィールドの概要
static int ACCEPTED
          (=0x22)
static int BAD_GATEWAY
          (=0x52)
static int BAD_REQUEST
          (=0x40)
static int CONFLICT
          (=0x49)
static int CONTINUE
          (=0x10)。
static int CREATED
          (=0x21)
static int DATABASE_FULL
          (=0x60)
static int DATABASE_LOCKED
          (=0x61)
static int DISCONNECT
          DISCONNECT オペレーションコードを示します (=0x81)。
static int FORBIDDEN
          (=0x43)
static int GATEWAY_TIMEOUT
          (=0x54)
static int GET
          GET オペレーションコードを示します (=0x83)。
static int GONE
          (=0x4A)
static int HTTP_VERSION_NOT_SUPPORTED
          (=0x55)
static int INTERNAL_SERVER_ERROR
          (=0x50)
static int LENGTH_REQUIRED
          (=0x4B)
static int METHOD_NOT_ALLOWED
          (=0x45)
static int MOVED_PERMANENTLY
          (=0x31)
static int MOVED_TEMPORARILY
          (=0x32)
static int MULTIPLE_CHOICES
          (=0x30)
static int NO_CONTENT
          (=0x24)
static int NON_AUTHORITATIVE_INFORMATION
          (=0x23)
static int NOT_ACCEPTABLE
          (=0x46)
static int NOT_FOUND
          (=0x44)
static int NOT_IMPLEMENTED
          (=0x51)
static int NOT_MODIFIED
          (=0x34)
static int PARTIAL_CONTENT
          (=0x26)
static int PAYMENT_REQUIRED
          (=0x42)
static int PRECONDITION_FAILED
          (=0x4C)
static int PROXY_AUTHENTICATION_REQUIRED
          (=0x47)
static int PUT
          PUT オペレーションコードを示します (=0x82)。
static int REQUEST_ENTITY_TOO_LARGE
          (=0x4D)
static int REQUEST_TIME_OUT
          (=0x48)
static int REQUEST_URL_TOO_LARGE
          (=0x4E)
static int RESET_CONTENT
          (=0x25)
static int SEE_OTHER
          (=0x33)
static int SERVICE_UNAVAILABLE
          (=0x53)
static int SUCCESS
          (=0x20)
static int UNAUTHORIZED
          (=0x41)
static int UNSUPPORTED_MEDIA_TYPE
          (=0x4F)
static int USE_PROXY
          (=0x35)
 
メソッドの概要
 int getContentLength()
          コンテンツの長さを取得します。
 java.lang.String getName()
          NAMEヘッダを取得します。
 long getTime()
          TIMEヘッダを取得します。
 java.lang.String getType()
          TYPEヘッダを取得します。
 void setName(java.lang.String name)
          NAMEヘッダを設定します。
 void setTime(long time)
          TIMEヘッダを設定します。
 void setType(java.lang.String type)
          TYPEヘッダを設定します。
 
インタフェース javax.microedition.io.InputConnection から継承したメソッド
openDataInputStream, openInputStream
 
インタフェース javax.microedition.io.Connection から継承したメソッド
close
 
インタフェース javax.microedition.io.OutputConnection から継承したメソッド
openDataOutputStream, openOutputStream
 

フィールドの詳細

DISCONNECT

public static final int DISCONNECT
DISCONNECT オペレーションコードを示します (=0x81)。

PUT

public static final int PUT
PUT オペレーションコードを示します (=0x82)。

GET

public static final int GET
GET オペレーションコードを示します (=0x83)。

CONTINUE

public static final int CONTINUE
(=0x10)。アプリケーションは、このレスポンスコードを使用することはできません。 送信データの OBEX パケットへの分割操作やその逆操作は、 システム内部で自動的に行われます。

SUCCESS

public static final int SUCCESS
(=0x20)

CREATED

public static final int CREATED
(=0x21)

ACCEPTED

public static final int ACCEPTED
(=0x22)

NON_AUTHORITATIVE_INFORMATION

public static final int NON_AUTHORITATIVE_INFORMATION
(=0x23)

NO_CONTENT

public static final int NO_CONTENT
(=0x24)

RESET_CONTENT

public static final int RESET_CONTENT
(=0x25)

PARTIAL_CONTENT

public static final int PARTIAL_CONTENT
(=0x26)

MULTIPLE_CHOICES

public static final int MULTIPLE_CHOICES
(=0x30)

MOVED_PERMANENTLY

public static final int MOVED_PERMANENTLY
(=0x31)

MOVED_TEMPORARILY

public static final int MOVED_TEMPORARILY
(=0x32)

SEE_OTHER

public static final int SEE_OTHER
(=0x33)

NOT_MODIFIED

public static final int NOT_MODIFIED
(=0x34)

USE_PROXY

public static final int USE_PROXY
(=0x35)

BAD_REQUEST

public static final int BAD_REQUEST
(=0x40)

UNAUTHORIZED

public static final int UNAUTHORIZED
(=0x41)

PAYMENT_REQUIRED

public static final int PAYMENT_REQUIRED
(=0x42)

FORBIDDEN

public static final int FORBIDDEN
(=0x43)

NOT_FOUND

public static final int NOT_FOUND
(=0x44)

METHOD_NOT_ALLOWED

public static final int METHOD_NOT_ALLOWED
(=0x45)

NOT_ACCEPTABLE

public static final int NOT_ACCEPTABLE
(=0x46)

PROXY_AUTHENTICATION_REQUIRED

public static final int PROXY_AUTHENTICATION_REQUIRED
(=0x47)

REQUEST_TIME_OUT

public static final int REQUEST_TIME_OUT
(=0x48)

CONFLICT

public static final int CONFLICT
(=0x49)

GONE

public static final int GONE
(=0x4A)

LENGTH_REQUIRED

public static final int LENGTH_REQUIRED
(=0x4B)

PRECONDITION_FAILED

public static final int PRECONDITION_FAILED
(=0x4C)

REQUEST_ENTITY_TOO_LARGE

public static final int REQUEST_ENTITY_TOO_LARGE
(=0x4D)

REQUEST_URL_TOO_LARGE

public static final int REQUEST_URL_TOO_LARGE
(=0x4E)

UNSUPPORTED_MEDIA_TYPE

public static final int UNSUPPORTED_MEDIA_TYPE
(=0x4F)

INTERNAL_SERVER_ERROR

public static final int INTERNAL_SERVER_ERROR
(=0x50)

NOT_IMPLEMENTED

public static final int NOT_IMPLEMENTED
(=0x51)

BAD_GATEWAY

public static final int BAD_GATEWAY
(=0x52)

SERVICE_UNAVAILABLE

public static final int SERVICE_UNAVAILABLE
(=0x53)

GATEWAY_TIMEOUT

public static final int GATEWAY_TIMEOUT
(=0x54)

HTTP_VERSION_NOT_SUPPORTED

public static final int HTTP_VERSION_NOT_SUPPORTED
(=0x55)

DATABASE_FULL

public static final int DATABASE_FULL
(=0x60)

DATABASE_LOCKED

public static final int DATABASE_LOCKED
(=0x61)
メソッドの詳細

getContentLength

public int getContentLength()
コンテンツの長さを取得します。 リクエストやレスポンスのBODYヘッダ内のコンテンツの実際の長さを取得します。

コンテンツの長さが取得可能になる前に呼び出された場合は RuntimeException またはそのサブクラスの例外が発生します。

戻り値:
コンテンツの長さ

setName

public void setName(java.lang.String name)
NAMEヘッダを設定します。 複数回呼出された場合は、最後に設定された値のみ有効となります。
null を設定した場合、Nameヘッダは送信しません。
パラメータ:
name - NAMEヘッダに設定する文字列

getName

public java.lang.String getName()
NAMEヘッダを取得します。

ヘッダが取得可能になる前に呼び出された場合は RuntimeException またはそのサブクラスの例外が発生します。

戻り値:
NAMEヘッダの文字列

setType

public void setType(java.lang.String type)
TYPEヘッダを設定します。 複数回呼出された場合は、最後に設定された値のみ有効となります。
null を設定した場合、Typeヘッダは送信しません。
パラメータ:
type - TYPEヘッダに設定する文字列

getType

public java.lang.String getType()
TYPEヘッダを取得します。

ヘッダが取得可能になる前に呼び出された場合は RuntimeException またはそのサブクラスの例外が発生します。

戻り値:
TYPEヘッダの文字列

setTime

public void setTime(long time)
TIMEヘッダを設定します。 複数回呼出された場合は、最後に設定された値のみ有効となります。
数値は1970年1月1日(GMT)から数えたミリ秒数です。
パラメータ:
time - 日付を表す整数値

getTime

public long getTime()
TIMEヘッダを取得します。 数値は1970年1月1日(GMT)から数えたミリ秒数です。 リクエストまたはレスポンスが複数パケットから構成され、複数のTIMEヘッダがある場合は、 最初に見つかったTIMEヘッダの値を返します。

ヘッダが取得可能になる前に呼び出された場合は RuntimeException またはそのサブクラスの例外が発生します。

戻り値:
日付を表す整数値。ヘッダが無い場合は値0を返す。