Sample Java ORB Protocol Sepcification

原创 2001年08月16日 19:35:00
 

1       协议概述

1.1    关于sjop

sjop全称是Sample Java ORB Protocol(简单Java对象请求代理协议)。相类似的协议有DCOMCORBASOAP等等,相比之下sjop是一种极其简单并且高效的对象请求代理协议。

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1.2    sjop应用

sjop协议在minij2ee应用服务器中被实现,用于在php或其他非Java客户中调用minij2ee应用服务器中的EJB组件。

 

2       协议内容

2.1    概述

sjop是基于文本的协议,这也正是他简单的原因。sjop通讯使用面向流的通讯协议,比如TCP/IP,通讯模式采用请求/应答模式。

 

2.2    数据类型

sjop定义了以下基本数据类型:

java.lang.String:字符串

java.lang.Short:短整型

java.lang.Integer:整型

java.lang.Long:长整型

java.lang.Boolean:布尔值,“true”或者“false

java.lang.Float:浮点数

java.lang.Double:双精度浮点数

 

sjop定义以下特殊的数据类型:

void:当调用的方法无返回值时,使用void

phpext.objrefJava对象的引用句柄,用于返回创建的Java对象,调用Java对象的方法调用或将Java对象作为参数。

 

2.3    请求

sjop的请求格式为:

request:function

request body

EOR

其中function是请求的功能,request body根据请求的功能不同而不同。EOR是请求体结束的标志。

 

2.3.1   参数列表

request body一般会包含一个参数列表parameter list,用于指定调用构造函数或方法的参数。parameter list由若干行参数条目组成,每个参数条目的格式如下:

param:type:value

例如:

param:java.lang.String:abcd

param:java.lang.Integer:1234

由于每一个参数条目是一行,所以对于java.lang.String类型的参数,如果value里包含’/n’,则要进行编码。

 

2.3.2   创建对象

创建对象请求的格式为:

request:new

classname:name of java class

parameter list

EOR

请求成功将在应答里返回一个phpext.objref类型的值,是创建的Java对象的引用句柄。

 

2.3.3   删除对象

删除对象请求的格式为:

request:delete

objref:object reference

EOR

请求成功,将在删除object reference指定的被代理的Java对象。object reference是创建对象请求返回的Java对象的引用句柄,或者是方法调用或静态方法调用返回的phpext.objref类型值。

 

minij2ee应用服务器的实现中,在一定时间内没有被引用的对象将被自动删除。

 

2.3.4   方法调用

方法调用请求的格式为:

request:call

objref: object reference

methodname:name of method

parameter list

EOR

请求返回方法调用的结果或异常。object reference是创建对象请求返回的Java对象的引用句柄,或者是方法调用或静态方法调用返回的phpext.objref类型值。

 

2.3.5   静态方法调用

静态方法调用的请求格式为:

request:call

classname:name of java class

methodname:name of method

parameter list

EOR

静态方法调用类似方法调用,只是将Java对象引用句柄改为了Java类名称,因为调用静态方法是不需要Java对象实例的。

 

2.4    应答

应答分成功和异常两种。

成功应答格式为:

responce:ok

result:type:value

type是返回值的类型,value是返回值。若请求没有返回值,则typevoidvaluenull

异常应答格式为:

responce: error

exception:type:value

type是异常的类名称,如java.io.IOExceptionvalue是异常的描述。

 

3       sjop API

minij2ee应用服务器软件包中提供了minij2ee sjop实现的API,在php/sjop目录下,可以用于在C/C++程序中方问minij2ee应用服务器上的EJB组件。

 

sjop API提供了以下函数(宏):

u       sjop_get_connection

函数原型:

HCOMM_CONNECTION sjop_get_connection(char* ip,char* port);

描述:

sjop_get_connection获取一条同minij2ee sjop服务器的连接,用于进行请求。ip是服务器的ip地址,port是服务器的端口号。一条连接可以用于多次请求。

u       sjop_free_connection

函数原型:

void sjop_free_connection(HCOMM_CONNECTION hconn);

描述:

sjop_free_connection释放一条同minij2ee sjop服务器的连接。

 

u       sjop_minij2ee_new_javaobj

函数原型:

PHPEXTRESPONCE* sjop_minij2ee_new_javaobj(HCOMM_CONNECTION conn,char* classname,...);

描述:

sjop_minij2ee_new_javaobj函数发送创建对象的请求。conn是同minij2ee sjop服务器的连接。函数返回一个PHPEXTRESPONCE结构指针包含了应答的内容。

例子:

PHPEXTRESPONCE* r= sjop_minij2ee_new_javaobj(hconn, “java.io.FileInputStream”, “java.lang.String”, “c:/somefile” );

 

u       sjop_minij2ee_delete_javaobj

函数原型:

PHPEXTRESPONCE* sjop_minij2ee_delete_javaobj(HCOMM_CONNECTION conn,HJAVAOBJ jobj);

描述:

sjop_minij2ee_delete_javaobj 函数发送删除对象的请求。conn是同minij2ee sjop服务器的连接。函数返回一个PHPEXTRESPONCE结构指针包含了应答的内容。

 

u       sjop_minij2ee_call_javaobj

函数原型:

PHPEXTRESPONCE* sjop_minij2ee_call_javaobj(HCOMM_CONNECTION conn,HJAVAOBJ jobj,char* methodname,...);

描述:

sjop_minij2ee_call_javaobj 函数发送方法调用的请求。conn是同minij2ee sjop服务器的连接。函数返回一个PHPEXTRESPONCE结构指针包含了应答的内容。

例子:

PHPEXTRESPONCE* r=sjop_minij2ee_call_javaobj(hconn, objref, “skip” , “java.lang.Long”, 16);

 

u       sjop_minij2ee_callstatic_javaobj

函数原型:

PHPEXTRESPONCE* sjop_minij2ee_callstatic_javaobj(HCOMM_CONNECTION conn,char* classname,char* methodname,...);

描述:

sjop_minij2ee_callstatic_javaobj 函数发送静态方法调用的请求。conn是同minij2ee sjop服务器的连接。函数返回一个PHPEXTRESPONCE结构指针包含了应答的内容。

例子:

PHPEXTRESPONCE* r= sjop_minij2ee_callstatic_javaobj(hconn, “java.lang.System”, “getProperty”, “java.lang.String”, “java.version”);

 

u       sjop_free_response

函数原型:

void sjop_free_responce(PHPEXTRESPONCE* resp);

描述:

sjop_free_response释放发送请求返回的PHPEXTRESPONCE结构指针。

 

PHPEXTRESPONCE结构定义如下:

typedef struct

{

int succ;  //请求是否成功

char* exptype;  //若异常,exptype指示了异常类的名称

char* expvalue;  //若异常,expvalue指示了异常的描述

char* resulttype;  //返回值类型,见数据类型

union

{

       int    int_value;

       char*  string_value;

       double double_value;

       int    objref_value;

}result;  //返回值的联合,根据返回值类型不同而使用不同的成员,加下表:

返回值类型

对应的result中的成员

java.lang.Short

java.lang.Integer

java.lang.Long

java.lang.Boolean

int_value

java.lang.String

string_value

java.lang.Float

java.lang.Double

double_value

phpext.objref

objref_value

void

}PHPEXTRESPONCE;

 

以下的宏可以用来访问PHPEXTRESPONCE结构指针:

#define sjop_resp_ok(resp)             ((resp)->succ)

#define sjop_resp_error(resp)           (!(resp)->succ)

#define sjop_resp_exp_type(resp)        ((resp)->exptype)

#define sjop_resp_exp_value(resp)       ((resp)->expvalue)

#define sjop_resp_result_type(resp)      ((resp)->resulttype)

#define sjop_resp_result_int(resp)        ((resp)->result.int_value)

#define sjop_resp_result_string(resp)     ((resp)->result.string_value)

#define sjop_resp_result_double(resp)    ((resp)->result.double_value)

#define sjop_resp_result_javaobj(resp)    ((resp)->result.objref_value)

 http://www.minij2ee.com/

protocol buffer使用范例5

protocol buffer使用范例 1、创建.proto文件 首先创建自己的.proto文件 为了便于大家的理解,我创建了一个官方demo的变形体的.proto文件,名为person.proto ...
  • songtzu
  • songtzu
  • 2015年02月05日 12:35
  • 897

Java orb

Contact UsTerms of Use HomeConsultingEducationProductsArticlesCareers Home   Purch...
  • hnhbdss
  • hnhbdss
  • 2014年11月13日 23:48
  • 2233

ORB特征点

绪论 假如我有2张美女图片,我想确认这2张图片中美女是否是同一个人。这太简单了,以我专研岛国动作片锤炼出来的火眼金睛只需轻轻扫过2张图片就可以得出结论。但是,如果我想让计算机来完成这个功能就困难重重...
  • zhubaohua_bupt
  • zhubaohua_bupt
  • 2017年04月17日 08:33
  • 742

ORB特征 学习笔记

ORB特征描述子 1.     简介        ORB描述子由Ethan Rublee等人发表于ICCV11。详见这篇文章: “ORB: an efficient alternative to S...
  • jinxueliu31
  • jinxueliu31
  • 2014年01月17日 17:54
  • 3089

opencv-基于ORB特征点匹配

#include #include #include #include using namespace cv; // 计算图像的SIFT特征及匹配 cv::Mat cacORBFeatu...
  • hb707934728
  • hb707934728
  • 2016年07月08日 10:23
  • 5380

【图像特征提取6】ORB特征点的描述----BRIEF描述子

(一)BRIEF描述子           在ORB特征提取的第一步根据FAST角点检测算法检测出特征点(角点、兴趣点、关键点)之后,我们需要以某种方式来描述这些特征点的属性。对于这些特征点的描述算法...
  • maweifei
  • maweifei
  • 2017年03月17日 17:50
  • 1930

Java中使用Protocol Buffer

一、Protocol Buffer简介 什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍: Google Protocol Buffer( 简...
  • yubo_725
  • yubo_725
  • 2016年08月16日 13:21
  • 2548

ORB特征提取详解

ORB(Oriented FAST and Rotated BRIEF)是一种快速特征点提取和描述的算法。这个算法是由Ethan Rublee, Vincent Rabaud, Kurt Konoli...
  • zouzoupaopao229
  • zouzoupaopao229
  • 2016年09月22日 18:46
  • 21138

ORB原理与Opencv源码解析

Opencv ORB 图像特征
  • haoliliang88
  • haoliliang88
  • 2016年07月06日 17:45
  • 2647

opencv ORB各参数的含义

ORB中有很多参数可以设置,在OpenCV中它可以通过ORB来创建一个ORB检测器。 ORB::ORB(int nfeatures=500, float scaleFactor=1.2f, in...
  • u011258240
  • u011258240
  • 2016年12月01日 15:42
  • 1938
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Sample Java ORB Protocol Sepcification
举报原因:
原因补充:

(最多只允许输入30个字)