Chinaunix首页 | 论坛 | 博客
  • 博客访问: 500095
  • 博文数量: 1496
  • 博客积分: 79800
  • 博客等级: 大将
  • 技术积分: 9940
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-09 13:22
文章分类

全部博文(1496)

文章存档

2011年(1)

2008年(1495)

我的朋友

分类:

2008-09-09 13:27:11


  你是否曾想编写一个可以穿越来访问EJBs的J2EE应用程序?这会很麻烦,开发人员必须用各种迂回的方法,而没有一种是“特别好的”。开发人员通常写一个servlet来截取HTTP请求,并将它们导向到EJBs,这种方法很不正规。
  
  另一种方法是运用信道(tunneling)技术,如HTTP上的RMI,这种方法会给性能带来很大的影响。除了上述的两种方法外,还有一种更好的方法。通过运用 Secure Socket Extension(JSSE),你就可以很好地解决这个问题。
  
  在一个J2EE应用程序中,Enterprise Beans(EJB)通常是位于应用程序中的,而且一个Web前端是用servlets、JavaServer Pages(JSP)和标签库创建的。在大多数情况下,这些组件都位于企业的同一側,他们之间没有防火墙(见图1)。
  

  
图1. 传统的J2EE应用程序

  
  但有时侯,防火墙会把客户端同隔离开(见图2)。在一个典型的例子中,一个胖客户端(thick client)(如一个基于Swing的客户端)与一个应用程序服务器交互。(这些客户端通常用诸如Java Web Start这样的技术来安装,所以最终用户既可以得到自动化部署的好处,也可以得到一个富客户端的好处。)
  
  这就会出现一个问题。Remote Method Invocation(RMI)是在Java Remote Methods Protocol(JRMP)、Internet Inter Orb Protocol(IIOP)、或一个如T3的私有上实现的。要穿越防火墙实现RMI而又不在防火墙中另外打洞,就需要我们采用一些方法。
  
  大多数可选方法都有不足,这个问题有许多解决方法,每种方法都各有利弊。你可以尝试HTTP上的RMI信道技术。JavaSoft中的RMI带有一个缺省的HTTP信道机制。如果RMI引擎不能用JRMP联系RMI服务器,它就会开一个通道,使请求穿过HTTP并与一个可以截取这个请求的Web组件对话。
  
  JavaSoft提供了一个CGI脚本和一个servlet,它们可以截取这些请求并将这些请求导向到适当的EJBs。然而,这种方法不支持HTTPS,所以如果需要的访问,你就必须实现HTTPS信道。另外,甚至连JavaSoft都说,HTTP上的RMI信道可能会让性能严重下降。
【责编:admin】

--------------------next---------------------

阅读(103) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~