JAVA与NET的相互调用利用JNBridge桥接模式实现远程通讯Word文件下载.docx

上传人:b****4 文档编号:17155661 上传时间:2022-11-28 格式:DOCX 页数:7 大小:81.33KB
下载 相关 举报
JAVA与NET的相互调用利用JNBridge桥接模式实现远程通讯Word文件下载.docx_第1页
第1页 / 共7页
JAVA与NET的相互调用利用JNBridge桥接模式实现远程通讯Word文件下载.docx_第2页
第2页 / 共7页
JAVA与NET的相互调用利用JNBridge桥接模式实现远程通讯Word文件下载.docx_第3页
第3页 / 共7页
JAVA与NET的相互调用利用JNBridge桥接模式实现远程通讯Word文件下载.docx_第4页
第4页 / 共7页
JAVA与NET的相互调用利用JNBridge桥接模式实现远程通讯Word文件下载.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

JAVA与NET的相互调用利用JNBridge桥接模式实现远程通讯Word文件下载.docx

《JAVA与NET的相互调用利用JNBridge桥接模式实现远程通讯Word文件下载.docx》由会员分享,可在线阅读,更多相关《JAVA与NET的相互调用利用JNBridge桥接模式实现远程通讯Word文件下载.docx(7页珍藏版)》请在冰豆网上搜索。

JAVA与NET的相互调用利用JNBridge桥接模式实现远程通讯Word文件下载.docx

  NBridge是一种领先的JAVA与.NET互操作的的产品,凭借JNBridge技术,Java和.NET代码无需交叉编译器就可以实现对象共享。

所有Java代码运行在JVM上,而.NET代码则运行在CLR上。

在该方案下,JVM和CLR可以运行在不同的机器上,也可以运行在一台机器的不同进程上,甚至还能运行在相同的进程的不同应用程序域上。

经历多年的发展,JNBridge已经发布了JNBridgePro5.0,JNBridgePro5.0有着更强大的功能。

1.支持ava和.NET之间的跨平台事务;

2.支持MicrosoftVisualStudio和Eclipse插件;

3.兼容Windows7;

4.跨平台交易一体化主要是对用户透明;

5.'

回滚'

-任何一方的终止都将导致双方的行动被回滚;

  JNBridge支持.NETToJava,JavaTo.NET两种服务方式,并可以行用TCP、HTTP、SOAP等多个协议进行双方通讯,下面就以“JAVA调用.NET”实现一个简单开发例子,介绍一下JNBridge的功能。

  JNBridge配置

  首先可以在JNBridge的官方网站下载程序,安装JNBridgePro5.0后,启动JNBProxyv5.1.exe,选择CreatenewJava->

.NETProject,新建一个项目后,点击Project->

JavaOptions对系统进行配置。

首先设置好本机的java.exe应用程序和jvm.dll程序集的路径,然后设置jnbcore.jar和bcel.jar的路径(在5.1版本中,这两个文件存在于“/JNBridge/JNBridgeProv5.1/jnbcore/”),最后可以选择HTTP或TCP通讯方式(在此例子当中在下选择TCP通讯,系统默认接口为8085你也可以选择自定义的接口)。

点击“OK”按钮,配置完成时,系统将自动生成一个"

/JNBridge/JNBridgeProv5.1/jnbcore/jnbcore_tcp.properties"

文件记录TCP配置信息。

  .NET服务端开发

  假如阁下使用的是VisualStudio2008或者VisualStudio2010版本,系统将会感知JNBridge的存在,在新建项目时,可以直接新建一个DotNetJavaProxies项目。

在此在下想展示一下JNBridge的转换性能,所以直接新一个解决方案。

添加一个Model项目,加入Person类,为Person加入Serializable特性,注意要去除不必要的引用,因为对Framework的引用在转换时将变为对应的包。

usingSystem;

namespaceModel

{

[Serializable]

publicclassPerson

{

publicintID

get;

set;

}

publicstringName

publicintAge

}

  添加一个Manager项目,加入PersonManager类,在测试时,只是把虚拟数据放在DataSource.sour文件中。

usingModel;

usingSystem.IO;

usingSystem.Runtime.Serialization.Formatters.Binary;

usingSystem.Collections.Generic;

namespaceManager

publicclassPersonManager

///虚拟数据源

privateList<

Person>

DataSource()

FileStreamfileStream=newFileStream("

./DataSource.sour"

FileMode.Open,FileAccess.ReadWrite);

BinaryFormatterformatter=newBinaryFormatter();

List<

personList=(List<

)formatter.Deserialize((fileStream));

returnpersonList;

//获取所有的Person

publicList<

GetList()

personList=DataSource();

//根据输入ID获取对应的Person

publicPersonGetPersonByID(intid)

foreach(PersonpersoninDataSource())

if(person.ID==id)

returnperson;

returnnull;

  添加一个ConsoleApplication作为启动项目,在项目中添加对JNBShare.dll的引用(文件路径“\JNBridge\JNBridgeProv5.1\4.0-targeted”),然后添加配置文件:

<

?

xmlversion="

1.0"

encoding="

utf-8"

?

>

configuration>

<

configSections>

sectionGroupname="

jnbridge"

sectionname="

dotNetToJavaConfig"

type="

System.Configuration.SingleTagSectionHandler"

/>

javaToDotNetConfig"

tcpNoDelay"

javaSideDeclarations"

System.Configuration.NameValueSectionHandler"

assemblyList"

com.jnbridge.jnbcore.AssemblyListHandler,JNBShare"

/sectionGroup>

/configSections>

jnbridge>

dotNetToJavaConfigscheme="

jtcp"

host="

localhost"

port="

8085"

!

--注意通讯接口必须与JNBridge中配置的接口一致-->

javaToDotNetConfigscheme="

8086"

--注册共用程序集-->

assemblyList>

assemblyfile="

.\Model.dll"

.\Manager.dll"

/assemblyList>

/jnbridge>

/configuration>

  最后启动服务:

usingcom.jnbridge.jnbcore;

namespaceNET_Service

classProgram

staticvoidMain(string[]args)

Console.WriteLine("

.NETStart!

"

);

//启动.NET端服务,注意必须添加对JNBShare的引用,才可使用com.jnbridge.jnbcore.DotNetSide

DotNetSide.startDotNetSide();

Console.ReadKey();

//关闭.NET端服务

DotNetSide.stopDotNetSide();

  生成转换层代码

  打开JNBridge,选择工具栏"

Addclassfromassemblyfiles"

,分别加入Model.dll,Manager.dll及mscorlib.dll(此程序集存在于“C:

\Windows\Microsoft.NET\Framework\v4.0.30319\”,里面包含System,System.Collections,System.IO等等重要的命名空间)

  在选择必要的类以后,按下“Project->

Build"

,系统就会对应选择把.NET里面的类生成对class放入Proxy.jar代理包。

  Java端开发

  新建一个Java项目,引用刚生成的代理包Proxy.jar,还有jnbcore.jar、bcel-5.1-jnbridge.jar(在5.1版本中,这两个文件存在于“/JNBridge/JNBridgeProv5.1/jnbcore/”),把JNBridge的TCP配置文件jnbcore_tcp.properties复制到bin文件夹内,开发一个测试端。

值得注意的是在生成Proxy.jar代码包的时候,必须对System.Collections.Generic,System.String等等这些常用类的空间添加引用,否则,在Java里面就无法调用.NET里面的System.Collections.Generic.List等这些常用类。

由于在Java里面对像List这些常用的类具有类名之间的冲突,所以在Proxy里面会对System.Collections.Generic.List这些类命名为System.Collections.Generic.List_1。

packagecom.jnbridge.javaclient;

importcom.jnbridge.jnbcore.*;

importSystem.Collections.Generic.*;

//引用Proxy.jar包内System.Collection.Generice.*空间里面的代理类

importManager.*;

importModel.*;

publicclassTest{

/**

*@paramargs

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

try{

//注册JNBridge的TCP配置文件jnbcore_tcp.properties

DotNetSide.init("

E:

\\JavaProjects\\JNBridgeJAVA\\JAVAClient\\bin\\jnbcore_tcp.properties"

PersonManagerpersonManager=newPersonManager();

//注意此List_1是Proxy.jar包内System.Collections.Generic.List的代理类,而并非JDK内自带的List类

List__1personList=personManager.GetList();

if(personList.Get_Count()!

=0){

//注意此Get_Count()方法是Proxy.jar包内System.Collections.Generic.List代理类的GetCount()方法

for(intn=0;

n<

personList.Get_Count();

n++){

Personperson=(Person)personList.Get_Item(n);

System.out.println("

Id:

+person.Get_ID()+"

Age:

+person.Get_Age()+"

Name:

+person.Get_Name());

}catch(Exceptionex){

ex.printStackTrace();

  完成JAVA端后,先启动.NET服务端,再启动JAVA端,JAVA就会调用到.NET端的数据,屏幕将显示出测试结果:

0Age:

29Name:

Leslie

1Age:

23Name:

Rose

2Age:

22Name:

Jack

  在JNBridge官网上有着许多的开发例子,在此不多介绍。

对不同开发类型的转换需要调用不同的工具包,各位可以直接参考官网上的教材。

  Java与.NET的混合开发模式

  在众很多的大型系统开发中,开发工具往往不限制于同一种开发语言,而是会使用多种开发语言的混合型开发。

像在开发底层与业务层的过程中,由于.NET只限制工作于Windows系统,而JAVA可以在Windows、Unix、Linux中灵活运用而更受到欢迎。

但在开发UI表现层里,很明显像Swing、Applet等开发工具受到的限制更多,而WPF、Siverlight、WinForms等开发工具因为具有成熟的控件与华丽的页面而倍受欢迎。

所以使用JAVA来开发底层、业务层与Linux系统的UI层,同时使用.NET来开发Windows系统的UI层的例子很常见。

在此开发过程中,利用JNBridge工具生成Proxy代理可以大大降低开发的难度,提高开发效率,使.NET平台与JAVA平台之间实现无缝连接。

  综上所述,JNBridge可视为JAVA平台与.NET平台之间通讯的桥梁,上述的例子利用JNBridge现实JAVA与.NET的无缝连接,可以使.NET的客户端无需感知JAVA底层的存在,.NET的UI端直接调用Proxy代理就可以与JAVA端实现通讯,这不失为JAVA与.NET之间互相调用的一种好手段。

  源代码(下载)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 交规考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1