分享
 
 
 

基于Http协议的Java隧道通讯

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

摘要

基于java平台的企业应用可以通过Java隧道技术实现应用在因特网上部署。Java隧道技术用现有的Web Server和Servlet容器就可以建立Java消息隧道和远程方法调用。由于基于Http协议,所以Java隧道是防火墙透明的隧道。Java隧道技术对于基于Java平台的因特网企业应用是一个不错的选择。

1.引言

在以因特网为基础的企业应用中,穿越防火墙是企业应用系统必须面对的问题。而Http协议是唯一一个可以在因特网中自由来往的协议,防火墙只有对Http访问是透明的,其它协议都会被挡在防火墙之外。Web Service正是基于这个原因,采用Http完成异构企业应用在因特网上的整合。本文提出一个方案,可以使基于Java平台的企业应用不必等待Web Service的渐渐成熟,而利用Java隧道技术实现在因特网上的企业应用部署。

Java隧道技术不是一个新的技术,它是Java对象序列化和Web技术的结合。2001年笔者就曾经做过基于Java隧道的试验。关于Java Servlet的书籍也有对Java隧道技术的相关论述(参考文献[2])。本文首先回顾一下Java隧道技术的基本原理,再通过一个实例来实现它。以此为后面的Java隧道回调技术和基于Java隧道技术的因特网通讯打下基础。

本文的内容可以用于Java Web Start客户端在因特网上的部署,可以用于利用因特网互连的Java应用服务。

2.Java隧道通讯

Web Service技术中的SOAP协议(Simple Object application PRotocol),简单的说是把对象用xml来序列化和反序列化的协议。XML表述的好处就是平台的独立性,不管对象在不同的平台中表现的形式是什么样的,最终都可以用XML来实现对象的互换。并且,基于Http协议的Web Service可以穿越防火墙。 Web Service技术整合因特网上的应用是它的强项。Web Service技术是一个很好的创意,包括IBM,Microsoft,Sun等公司都极力推出自己的相关产品。我们可以说,在未来的异构平台的集成,B2B应用中,Web Service将发挥重要的作用。

然而,对于Java平台的企业应用,你可以用Web Service相同的原理,利用Java平台的对象序列化,再借助Web技术,完成因特网上的应用部署。这样的技术就是Java的隧道技术。因为这个技术都是利用现有的基础技术来实现的,所以可以非常轻易的完成系统的构架。当然Java隧道与Web Service的定位是完全不同的,他们应该用在不同的场合。Web Service更加强大,更加通用化,是一套新兴的互相访问的标准。也正是由于Web Service的强大,所以它也更复杂。回答下面的问题,来看看你需要哪种技术来构架你的应用:

1.互连的系统是否都是Java平台?

2.是否要在Internet上部署?

3.是否要穿越防火墙?

假如第一个问题的答案是"否",其它问题回答"是",那么你别无选择,必须用Web Server技术;假如以上的问题的回答都是"是"的话,你可以用Web Service来构架系统,当然,你也可以用更便捷,简单,高效的Java隧道技术。

Java隧道技术的基本构架如下图。Java隧道系统的通讯构架,由Web Server提供Http服务,Servlet容器处理Java序列化对象。对于这样的一个框架,我们可以用常见的Tomcat,Jetty等软件作为Java隧道技术的运行基础环境。

点击查看大图

Java隧道技术的基本工作原理是这样的:首先,Java客户端把对象序列化,用Http协议包装序列化对象的字节流在Internet上传播,透过防火墙,提交到Web Server上。Servlet容器把Http协议剥离开,取出序列化的对象,再反序列化这个java对象,传递给后台的应用。

整个工作过程,就是把Java序列化对象,通过Http协议的包装完成在Internet上的通讯。由于Java序列化技术是Java 1.1版本后内置的功能,只要实现java.io.Serializable接口就可以实现。而集成Web Server的Servlet容器更是有好多实现,这里也不乏开源的优秀产品,如Tomcat,Jetty等。这些都体现了Java隧道技术构架的简便性。

下面我们通过一根例子来看看Java隧道技术是如何具体实现的。

3.实例

这里我们选择Jetty(Jetty 4.2.21)作为Web Server和Java Servlet的运行容器。编写普通的Java应用程序TunnelClient作为java隧道的客户端。编写Servlet程序TunnelServer作为java隧道的服务端。如下图,运行java隧道客户端程序,在程序内部调用隧道服务http://127.0.0.1:8080/servlets/servlet/TunnelServer。从服务器返回对象,对象内容打印在控制台上。

点击查看大图

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有