废话少说,如何使用KBMMW 做个过渡,使IOS 可以使用JAVA 的服务?

其实KBMMW 本身就要java service 的服务,但是为了把这个问题说清楚,我手工做一个例子。

首先,要使用JAVA 服务,JRE 是肯定要安装的。没有安装的话,自己去java.sun.com 去下载。

安装完毕, 命令行上运行 JAVA ,出现下图说明安装成功。

aaarticlea/png;base64,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" alt="" />

在服务器上首先祭起来JVM(JAVA 虚拟机)

function GetDllName: string;
var
Registry: TRegistry;
Version: string;
begin
Result := 'jvm.dll'; Registry := TRegistry.Create(KEY_READ);
try
Registry.RootKey := HKEY_LOCAL_MACHINE;
if Registry.OpenKey('\SOFTWARE\JavaSoft\Java Runtime Environment', False) then
begin
Version := Registry.ReadString('CurrentVersion');
if Version <> '' then
if Registry.OpenKey(Version, False) then
Result := Registry.ReadString('RuntimeLib');
end;
finally
Registry.Free;
end;
end; procedure TForm1.Button3Click(Sender: TObject);
var
I: Integer;
WebResult,WebMessage: String; n,e:integer;
VM_args:JavaVMInitArgs;
Options:array[..] of JavaVMOption;
Methods:array [..] of JNINativeMethod;
OptCnt:integer; j_MainClass:JClass;
LibraryFileName:string;
Mid: JMethodID; FObj,tmpobj: JObject;
FInit : JMethodID; mypath:string;
myclasspath:ansistring; Env:PJNIEnv;
JNIEnv:TJNIEnv; const
classpath='.;';
JIT=True;
begin
if G_javavm<>nil then
begin
meminfo.Lines.Add('JVM already created !');
exit;
end; n:=JNI_VERSION__; LibraryFileName:= GetDllName; FillChar(Options,SizeOf(Options),#);
OptCnt:=; mypath := g_RootPath; myclasspath:=classpath+mypath+'ws\ws.jar'; Options[OptCnt].optionString:=PAnsiChar('-Djava.class.path='+ myclasspath);
inc(OptCnt); if not JIT then
begin
Options[OptCnt].optionString:=PAnsiChar('-Djava.compiler=NONE');
inc(OptCnt);
end; VM_args.version:=n;
VM_args.options:= @Options ;//:= @Options;
VM_args.nOptions:=OptCnt;
VM_args.ignoreUnrecognized:=; g_JavaVM := TJavaVM.Create(n, LibraryFileName); e := G_JavaVM.LoadVM(VM_args);
if e< then
begin
meminfo.Lines.Add ('Error loading JavaVM via JNI 1.4+. ErrorCode='+inttostr(e)); exit;
end; g_JNIEnv := TJNIEnv.Create(g_JavaVM.Env);
meminfo.Lines.Add('JVM create ok!'); end;

当然了,文件里面必须引用 JNI 单元。这个是kbmmw 自带的(此文件原来是JEDI 翻译jni.h 得,后来kbmmw 作者修改了,可以在新版delphi 中编译);

安装完虚拟机,就可以在delphi 中使用java 的class 了

下面就是一个简单的封装java 中hashmap 的例子

  Thashmap = class
private
FJNIEnv: TJNIEnv;
FCls: JClass;
FObj: JObject;
FInit: JMethodID;
FPut: JMethodID;
FGet: JMethodID;
public
constructor Create(JNIEnv:TJNIEnv;createobj:boolean=True);
procedure put(ID,Text: string);
Function get(ID: string):string;
property hashmap: jobject read FObj write FObj;
end;
{ Thashmap } constructor Thashmap.Create(JNIEnv: TJNIEnv; createobj: boolean);
begin
inherited Create;
FJNIEnv:=JNIEnv;
if FJNIEnv=nil then
raise Exception.Create('Please create JNIEnv'); FCls := FJNIEnv.FindClass('java/util/HashMap');
if FCls=nil then
raise Exception.Create('can''t find class HashMap'); FInit := FJNIEnv.GetMethodID(FCls, '<init>', '()V');
if FInit=nil then
raise Exception.Create('can''t find init in class HashMap'); Fput := FJNIEnv.GetMethodID(FCls, 'put', '(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;'); if Fput=nil then
raise Exception.Create('can''t find put in class HashMap'); Fget := FJNIEnv.GetMethodID(FCls, 'get', '(Ljava/lang/Object;)Ljava/lang/Object;'); if Fget=nil then
raise Exception.Create('can''t find get in class HashMap'); if createobj then
begin
FObj :=FJNIEnv.NewObjectA(FCls, FInit, nil); if Fobj=nil then
raise Exception.Create('can''t create a HashMap');
end;
end; function Thashmap.get(ID: string): string;
var
rets:Jstring;
begin
rets:=FJNIEnv.CallObjectMethod( FObj,Fget,[FJNIEnv.StringToJString(id)]) ; result:=FJNIEnv.JStringToString(rets);
end; procedure Thashmap.put(ID, Text: string);
begin
FJNIEnv.CallObjectMethod( FObj,Fput,[FJNIEnv.StringToJString(id),FJNIEnv.StringToJString(text)]);
end;

这样你就可以在delphi 中使用hashmap 了。

         if myhashmap<>nil then
begin
memo1.Lines.Add('hashmap already create!!') ;
exit;
end;
myhashmap :=Thashmap.Create(JNIEnv);
memo1.Lines.Add('HashMap create ok!!'); myhashmap.put('ROW_ID', ROW_ID);
myhashmap.put('BILL_ID', BILL_ID);
myhashmap.put('AUDIT_NODE', AUDIT_NODE);
myhashmap.put('AUDIT_STATUS', AUDIT_STATUS); memo1.Lines.Add('put all data into hashmap');
memo1.Lines.Add('ROW_ID:'+ myhashmap.get('ROW_ID'));
memo1.Lines.Add('FLOW_ID:'+ myhashmap.get('FLOW_ID'));

那么由于kbmmw 是服务器端,肯定要考虑到多线程问题。

那么要在kbmmw servive 里面调用java 服务就要稍微处理一下。

示例如下:

function Tmysrv.JavaHashMapCheck(ClientIdent: TkbmMWClientIdentity;
const Args: array of Variant): Variant;
var
I: Integer;
ROW_ID,BILL_ID: String;
WebResult,WebMessage: String; n,e:integer; FObj,tmpobj, errorString: JObject; rets:Jstring; myhashmap:Thashmap; Env:PJNIEnv;
JNIEnv:TJNIEnv; throwable:JThrowable;
throwableClass:JClass; begin
Result := '';
ROW_ID := Args[];
BILL_ID := Args[];
G_JavaVM.JavaVM^.AttachCurrentThread(G_JavaVM.JavaVM,@Env,nil);
try
JNIEnv:=TJNIEnv.Create(Env); if myhashmap<>nil then
begin Result := '';
exit;
end;
myhashmap :=Thashmap.Create(JNIEnv); myhashmap.put('ROW_ID', ROW_ID);
myhashmap.put('BILL_ID', BILL_ID); result:='return='+myhashmap.get('ROW_ID'); throwable:=JNIEnv.ExceptionOccurred();
if throwable<>nil then
begin
try
JNIEnv.ExceptionDescribe;
throwableClass:=JNIEnv.GetObjectClass(throwable);
if throwableClass<>nil then
begin
mid:=JNIEnv.GetMethodID(throwableClass,'toString','()Ljava/lang/String;');
if mid<>nil then
begin
errorString:=JNIEnv.CallObjectMethod(throwable,mid,[]);
if errorString<>nil then
kbmMWRaiseException(KBMMW_ERR_SERVICE_JAVA_EXCEPTION,string(JNIEnv.JStringToString(errorString)));
end;
end;
finally
JNIEnv.ExceptionClear;
end;
end; finally
myhashmap.Free;
myhashmap := nil;
tmphashmap.Free;
tmphashmap := nil;
myObjectUtil.Free;
myObjectUtil := nil;
JNIEnv.Free;
G_JavaVM.JavaVM^.DetachCurrentThread(G_JavaVM.JavaVM);
end;
end;

剩下的就是你自己处理了。

ios 里面按照老规矩调用kbmmw 服务就行了。

IOS 使用KBMMW 访问JAVA 服务的更多相关文章

  1. Nodejs通过thrift访问Java服务

    上一篇文章中实现了用Java作为thrift客户端和服务端.接下来我们用nodejs作为客户端访问一下.Nodejs的安装可以查看http://www.cnblogs.com/xucheng/p/39 ...

  2. C++客户端访问Java服务端发布的SOAP模式的WebService接口

    gSOAP是一个绑定SOAP/XML到C/C++语言的工具,使用它可以 简单快速地开发出SOAP/XML的服务器端和客户端 Step1 使用gsoap-2.8\gsoap\bin\win32\wsdl ...

  3. 使用delphi 开发多层应用(十九) ios通过soap 访问kbmmw服务器

    随着delphi XE4 的推出,开始真正意义上支持ios 的开发,由于目前kbmmw 还不完全支持ios 的开发,因此 无法直接使用kbmmw 的客户端访问kbmmw 的服务器(虽然kbmmw 也提 ...

  4. “快的打车”创始人陈伟星的新项目招人啦,高薪急招Java服务端/Android/Ios 客户端研发工程师/ mysql DBA/ app市场推广专家,欢迎大家加入我们的团队! - V2EX

    "快的打车"创始人陈伟星的新项目招人啦,高薪急招Java服务端/Android/Ios 客户端研发工程师/ mysql DBA/ app市场推广专家,欢迎大家加入我们的团队! - ...

  5. 支付宝ios支付请求Java服务端签名报的一个错(ALI40247) 原创

    今天做app的支付宝支付,遇到些问题,以前做支付宝支付签名都是直接在客户端App进行,今天下了最新版本ios的支付宝支付demo,运行demo时底部有红色的显眼字体,告知用户签名必须在服务端进行... ...

  6. JAVA通过http访问其他服务端API

    项目要实现这么一个功能,用户通过点击按钮,通过axios来访问python的API(算法,java不好做)得到一个结果存储到数据库并且返回到页面. 但是python不是在tomcat上面运行的,所以不 ...

  7. Android native进程间通信实例-binder篇之——HAL层访问JAVA层的服务

    有一天在群里聊天的时候,有人提出一个问题,怎样才能做到HAL层访问JAVA层的接口?刚好我不会,所以做了一点研究. 之前的文章末尾部分说过了service call 可以用来调试系统的binder服务 ...

  8. IOS IAP APP内支付 Java服务端代码

    IOS IAP APP内支付 Java服务端代码   场景:作为后台需要为app提供服务,在ios中,app内进行支付购买时需要进行二次验证. 基础:可以参考上一篇转载的博文In-App Purcha ...

  9. ajax跨域请求,页面和java服务端的写法

    方法一(jsonp): 页面ajax请求的写法: $.ajax({ type : "get", async : false, cache : false, url : " ...

随机推荐

  1. SQL2005语句实现行转列,列转行

    在做报表时,经常需要将数据表中的行转列,或者列转行,如果不知道方法,你会觉得通过SQL语句来实现非常难.这里,我将使用pivot和unpivot来实现看似复杂的功能.这个功能在sql2005及以上版本 ...

  2. laravel route路由

    基本路由 您的应用程序的绝大多数路由将在 app/routes.php 文件中定义.Laravel 中最简单的路由由一个 URI 和一个闭包调用组成. 基本 GET 路由 代码如下: Route::g ...

  3. bzoj4750: 密码安全

    Description 有些人在社交网络中使用过许多的密码,我们通过将各种形式的信息转化为 01 信号,再转化为整数,可以将这个 人在一段时间内使用过的密码视为一个长度为 n 的非负整数序列 A_1, ...

  4. 关于Windows2008服务器设置MIME后仍然无法播放MP4的解决方法

    最近遇到了一个非常邪门的故障,重新安装了Windows2008服务器后 Mp4无法正常播放: 整个互联网中关于设置MP4的方法基本都是教你如何在IIS中设置MIME 本文讨论的不是如何教你设置MIME ...

  5. 作品-网站 - [二次开发] 广联达BIM

    客户地区:北京 基于帝国ECMS二次开发 网址:http://bim.glodon.com 开发性质:二次开发 网站类型:企业级

  6. oracle数据库如何创建用户并授予角色

    目标:1.  创建角色test1_role,  授予 CREATE PROCEDURE, CREATE SEQUENCE, CREATE SYNONYM, CREATE TABLE, CREATE T ...

  7. spring mvc 4 校验

    一.controller中添加: @ResourceGatewayValidator gatewayValidator; @RequestMapping(value = "/gateway/ ...

  8. 【转】PL/SQL Developer各个窗口的功能

    源地址:http://www.codeweblog.com/pl-sql-developer%E5%90%84%E4%B8%AA%E7%AA%97%E5%8F%A3%E7%9A%84%E5%8A%9F ...

  9. windows系统下简单nodej.s环境配置 安装

    国内目前关注最高,维护最好的一个关于nodejs的网站应该是http://www.cnodejs.org/ windows系统下简单nodejs环境配置. 第一步:下载安装文件 下载地址:官网 htt ...

  10. [Linux编程]__read_mostly变量含义

    1.定义 __read_mostly原语将定义的变量为存放在.data.read_mostly段中,原型在include/asm/cache.h 中定义: #define __read_mostly ...