一种Java与Windows消息传递方法及系统技术方案

技术编号:13093418 阅读:83 留言:0更新日期:2016-03-30 20:13
本发明专利技术提供一种Java与Windows消息传递方法及系统:所述方法至少包括如下步骤:编写Java Native方法,通过java命令生成对应的C++头文件;创建C++ DLL库,实现所述C++头文件中的方法,实现Java部分功能,编译得到类文件,C++中加载JVM环境,调用Java方法;C++的线程要将JVM设置为全局变量,保持JVM一致;C++进行JNI参数全局化处理;C++的线程处理Java返回的消息。本发明专利技术解决了Windows系统下Java多线程与C/C++之间的消息交互问题,实现了C/C++实时接受并处理Java发送的消息,如此,发送消息时可以指定不同类型基本类型或结构体消息值;而且实现多线程发送消息。

【技术实现步骤摘要】

本专利技术涉及数据处理领域,特别是涉及Windows操作系统中的一种Java与Windows消息传递方法及系统
技术介绍
在数据通信系统中,消息机制是Windows应用中最常用的方法,通过消息机制可以实现线程间的信息共享。比如,UI线程和Worker线程就是将数据处理和UI显示分别处理,Worker线程处理数据,UI线程负责结果显示。现有技术中,同行的方法是通过JNI调用Windows库函数,只传递消息的类型,没有具体消息值。而JNI技术在调用Windows库函数中的SendMessage方法时,只传递消息的类型,没有具体消息值;JNI在调用SendMessage发送消息时,不能放在线程中,否则会发生死锁。公告号为:CN1705265A,专利技术名称为:在JAVA消息传递服务中利用证书验证,本专利技术提供一种在Java消息传递服务(“JMS”)中利用证书的验证包括为用户应用提供用于Java安全域的预验证证书,并为该用户应用创建JMS连接,包括在JMS连接功能中接受预验证证书,并根据该预验证证书为JMS验证该用户应用。本专利技术的典型实施例还包括将预验证证书缓存在用户应用中。许多实施例还包括将预验证证书缓存在中间件安全应用中。公告号为:CN 1801102A,专利技术名称为:Java操作系统中使用消息传递实现进程同步的实现方法,本专利技术提供一种在Java操作系统中使用消息传递实现进程同步的实现方法。本专利技术的方法使Java操作系统中进程间使用消息传递机制进行通信和同步,利用消息缓冲区和信箱技术来实现了进程的同步和互斥,提高了进程间的信息传递效率。本专利技术实现了进程间的消息传递,进一步扩充了并发进程对数据的共享。以上两篇专利文献,虽然也探讨了Java系统的数据传输问题,但是并未具体涉及至iJWindows系统下Java多线程与C/C++之间的消息交互问题,实现C/C++实时接受并处理Java发送的消息等的技术难题。鉴于以上问题的存在,一种新的,可以有效地解决Windows系统下Java多线程与C/C++之间的消息交互问题,实现C/C++实时接受并处理Java发送的消息的方法及系统的专利技术是势在必行的。
技术实现思路
鉴于以上所述现有技术的缺点,本专利技术的目的在于提供一种Java与Windows消息传递方法及系统:解决消息传递时,无法传递消息值的问题;同时还解决Java线程发送消息时产生的死锁问题。为实现上述目的及其他相关目的,本专利技术提供一种Java与Windows消息传递方法及系统,所述一种Java与Windows消息传递方法,其至少包括如下步骤:编写Java Native方法,通过java命令生成对应的C++头文件; 创建C++DLL库,实现所述C++头文件中的方法,实现Java部分功能,编译得到类文件,C++中加载JVM环境,调用Java方法;C++的线程要将JVM设置为全局变量,保持JVM—致;C++进行JNI参数全局化处理;C++的线程处理Java返回的消息。优选的,所述的一种Java与Windows消息传递方法,其所述创建C++DLL库,实现所述C++头文件中的方法时发送消息方法采用PostMessage实现。优选的,所述的一种Java与Windows消息传递方法,其所述将Windows库中的发送消息的方法通过JNI技术封装成DLL库。优选的,所述的一种Java与Windows消息传递方法,其所述编写Java Native方法为Java声明相应的Native方法,通过System.loadLibrary加载DLL库,调用DLL库中方法,传递消息。优选的,所述的一种Java与Windows消息传递方法,其所述C++的线程为C++UI线程和worker线程,所述由C++UI线程处理Java返回的消息。为实现上述目的及其他相关目的,本专利技术还提供一种Java与Windows消息传递系统,其至少包括: 消息处理模块,编写Java Native方法,通过java命令生成对应的C++头文件;仓ij建C++DLL库,实现所述C++头文件中的方法,实现Java部分功能,编译得到类文件,C++中加载JVM环境,调用Java方法;以及,多线程消息传递模块,C++的线程要将JVM设置为全局变量,保持JVM—致,C++进行JNI参数全局化处理,C++的线程处理Java返回的消息。优选的,所述的一种Java与Windows消息传递系统,其所述创建C++DLL库,实现所述C++头文件中的方法时发送消息方法采用PostMessage实现。优选的,所述的一种Java与Windows消息传递系统,其所述将Windows库中的发送消息的方法通过JNI技术封装成DLL库。优选的,所述的一种Java与Windows消息传递系统,其所述编写Java Native方法为Java声明相应的Native方法,通过System.loadLibrary加载DLL库,调用DLL库中方法,传递消息。优选的,所述的一种Java与Windows消息传递系统,其所述C++的线程为C++UI线程和worker线程,所述由C++UI线程处理Java返回的消息。如上所述,本专利技术的Java与Windows消息传递方法及系统,具有以下有益效果:本专利技术是基于Windows系统中的消息处理机制,Java调用Windows库函数发送消息,标识了传递消息的类型和需要传递的消息值,解决了 Windows系统下Java多线程与C/C++之间的消息交互问题,实现了C/C++实时接受并处理Java发送的消息,是将Windows库中的发送消息的方法通过J NI技术封装成D L L库;J a V a声明相应的N a t i V e方法,通过System.loadLibrary加载DLL库,即可调用DLL库中方法,传递消息。如此,(1)发送消息时可以指定不同类型(基本类型或结构体)消息值;(2)实现多线程发送消息。【附图说明】图1显示为本专利技术的Java与Windows消息传递方法流程示意框图。图2显示为本专利技术的Java与Windows消息传递系统的结构框图。元件标号说明101消息处理模块102多线程消息传递模块S10 ?S18 步骤 S10 ?S18【具体实施方式】以下通过特定的具体实例说明本专利技术的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本专利技术的其他优点与功效。本专利技术还可以通过另外不同的【具体实施方式】加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本专利技术的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本专利技术的基本构想,遂图式中仅显示与本专利技术中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。请参阅图1,本专利技术提供一种Java与Windows消息传递方法及系统,本专利技术是基于Windows系统中的消息处理机制,Java调用Windows库函数发送消息,标识了传递消息的类型和需要传递的消息值。本专利技术解决了 Windows系统下Java多线程与C/C++之间的消本文档来自技高网
...

【技术保护点】
一种Java与Windows消息传递方法,其特征在于,其至少包括如下步骤:编写Java Native方法,通过java命令生成对应的C++头文件;创建C++DLL库,实现所述C++头文件中的方法;实现Java部分功能,编译得到类文件,C++中加载JVM环境,调用Java方法;C++的线程要将JVM设置为全局变量,保持JVM一致;C++进行JNI参数全局化处理;C++的线程处理Java返回的消息。

【技术特征摘要】

【专利技术属性】
技术研发人员:李新
申请(专利权)人:上海斐讯数据通信技术有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1