本来就是过不了防火墙的,这个很正常。为了解决这个问题,很多人都使用web service来代替RMI的调用。你只是加多一层WEB SERVICE层就可以了解决问题了。

解决方案 »

  1.   

    JBOSS开放源代码的EJB服务器(来源:http://www.swm.com.cn) J2EE在Sun和IBM等公司的努力下逐渐成为工业标准,现在大约有几十家J2EE应用服务器提供商。最流行的J2EE服务器报价为50000美元(中等规模的安装)。中小企业和普通开发者是无力承担的。 J2EE主要包含以下规范: 
    * 中间件(middleware) 包括Enterprise Java Bean (EJB)和Java Message Service (JMS)等分布式企业计算的构件(Component)。 * 名称和目录 JNDI(Java Naming and Directory Interface)API用于查找服务和构件。 * 表示(Presentation) 服务器端小程序(Servlet)和Java 服务器页(JSP)支持Web/HTTP浏览器访问 * 事务(Transaction) Java Transaction API(JTA)/Java Transaction Service(JTS)。 关于J2EE的详细资料请参阅其主页http://java.sun.com/j2ee/。 EJB作为J2EE架构中最重要的构件,是服务器端分布式计算模型的核心。EJB服务器是EJB的容器,控制EJB的运行,并且为它提供重要的系统级的服务—事务处理、安全、远端访问、数据库访问等。由此带来的是应用开发的简化,按照EJB的规范开发EJB,运行时由EJB容器负责事务处理,安全,生命周期。典型的J2EE多层应用的结构见图 1,中间层就是J2EE应用服务器,包含Web服务器和EJB服务器。Web服务器包含Web容器和Web构件(Servlet和JSP),EJB服务器包含EJB容器和EJB部件。客户程序包含各种Web浏览器和应用程序,EIS为传统的数据库和企业应用(ERP等)。客户程序与中间层通过HTTP,HTTPS,RMI,CORBA等协议进行数据交换,中间层与EIS通过JDBC等方法实现通讯。 EJB服务器是J2EE应用服务器的一个重要部分。Sun的J2EE SDK,ibm的Websphere,BEA的Weblogic等J2EE实现均内含EJB服务器。也有一些J2EE规范是独立实现的。像本系列第一篇所提及的Tomcat就是Web服务器的实现,本文介绍的Jboss是一个独立的EJB服务器的实现(Jboss的目标是一个源代码开放的J2EE环境,然而现在它只是一个完整的EJB服务器,与其他的Web服务器Tomcat、Jetty的整合也是一个方向)。 EJB(规范1.0-2.0)可以分成两类,会话Bean (Session Bean) 和实体Bean(Entity Bean)。 
    一般来讲会话Bean是用于商业逻辑计算,实体Bean是用于封装数据库访问。必须根据不同的情况选择这两类EJB。 JBOSS介绍 JBOSS是开放源代码的,遵从J2EE规范的,100%纯java的EJB服务器。Jboss的开发团队有500多人,核心开发人员有50多个,均为J2EE专家。Jboss的用户数以万计,遍及世界。JBOSS采用Java Manage eXtension API 实现软件模块的集成与管理(见图2)。 
    JBOSS的详细资料请参阅其主页http://www.jboss.org。 JBOSS Suite由以下几个模块(或者API)组成: Jboss/server Jboss服务器,核心是一个EJB容器,全面支持EJB1.1规范。 Jboss/SpyderMQ JMS的 纯java实现,支持JMS 1.0.2规范。 Jboss/Jaws Just Another Web Storage的缩写,Jaws API实现java对象和关系数据库的映射,Jboss用它实现EJB的连续化(Persistence)。Jaws还增加了Minerva JDBC 连接池(Connection Pooling)模块,以提高访问数据库的效率。 Jboss/Zola Zola提供jboss例程序,来说明J2EE应用的开发和在jboss中的实施(Deploy)。Zola中包含一个例子Zol WebStore,可以作为Web商店,基于JSP、Servlet、EJB,实现在线购物,支持Web和WAP访问。 Jboss/Zoap 支持Simple Object Access Protocol (SOAP) 访问,SOAP是由Microsoft和IBM提出的一个支持世界范围分布式的松耦合的信息交换协议。 SOAP规范的主页位于http://www.w3.org/TR/2000/NOTE-SOAP-20000508/。 Jboss/Castor 与Castor的整合,提供Java Data Object(JDO)支持,实现新的EJB连续化方法。 Jboss/Tomcat 与Tomcat的整合,提供完整的J2EE环境。 
    Tomcat的主页位于http://jakarta.apache.org/。 Jboss/Jetty 与Jetty的整合,提供完整的J2EE环境。 
    Jetty的主页位于http://jetty.mortbay.com/。 Jboss/Test Jboss测试环境。 JBOSS使用 Jboss的运行需要JDK 1.2.2 或者1.3。Sun的JDK 1.3位于http://java.sun.com/j2se。安装和使用纯Java的Jboss非常简单,从jboss的主页下载二进制的版本, jBoss-2.0_FINAL.zip Windows 32 
    jBoss-2.0_FINAL.tar.gz Unix/Linux 直接解压缩后,呈现下述目录结构: 
    * bin ——包含可自举的JAR文件run.jar和操作系统相关的启动脚本。run.bat为Windows脚本,run.sh 为UNIX/Linux脚本。 
    * conf ——包含Jboss自身和其他模块需要的配置文件。 
    *db——数据库存储所用的目录或配置文件db.properties。 
    * deploy ——放置EJB-JAR 文件到本目录,实施EJB应用。 
    * docs——包含Jboss/Server的文档。 
    * docs/api——包含Jboss/Server的Javadoc文档。 
    * lib——包含自举JAR文件所需的JMX文件。 
    * lib/ext——Jboss/Server运行所需要的其他(JAR)文件 。无需配置,Server启动脚本会自动把它们添加到CLASSPATH中。 
    * log——存储日志文件或配置文件log.properties。 
    * tmp——存储临时文件或配置文件tmp.properties。 下面以Jboss/Test为基础,介绍EJB应用的实施过程。 
    关于EJB的书籍,你可以参考Ed Roman的Master Enterprise JavaBeans - and the Java 2 Platform, Enterprise Edition(Willy, 1999,电子版可以在网站http://theserverside.com下载), 以及Richard Monson-Haefel的Enterprise JavaBeans, Second edition (Oreilly, 2000)。 下载Jboss/Test的源代码jbosstest-cvs-sources.zip,解压缩到目录${JBTPATH}中。设置JAVA_HOME指向JDK的安装目录,并且添加${JAVA_HOME}/bin到系统PATH变量中。进入目录${JBTPATH}/src/build,运行相应的脚本编译EJB应用。 【WIN32】 
    set JBTPATH=c:\jbosstest 
    set JAVA_HOME=c:\jdk1.3 
    set PATH=%JAVA_HOME%\bin;%PATH% 
    cd %JBTPATH%\src\build 
    build 【UNIX/LINUX BASH】 
    JBTPATH=/usr/local/jbosstest 
    JAVA_HOME=/usr/local/jdk1.3 
    PATH=$JAVA_HOME/bin:$PATH 
    cd $JBTPATH/src/build 
    build.sh 如果成功的话,就会在${JBTPATH}中创建一个dist目录,其结构如下: 
    bin:包含EJB客户程序的脚本。 
    deploy:包含编译生成的EJB-JAR,可以在Jboss中实施。 
    lib:包含客户程序运行所需的文件。 
    复制deploy目录的EJB-JAR到${JBOSS_HOME}/deploy目录就完成了实施过程。 确认JAVA_HOME指向JDK的安装路径,启动jboss服务器,然后运行${JBTPATH}/dist/bin中相应的测试脚本,就可以观察到客户程序的输出。 Jboss与Web 服务器(Tomcat和Jetty) 
    Tomcat与Jetty均为支持HTML/JSP/Servlet的Web服务器,与Jboss集成为完整的产品级的J2EE服务器。用户可以直接实施J2EE-EAR,而不是以前分别实施EJB-JAR和Web-WAR,非常方便。Jboss与Web服务器在同一个Java虚拟机中运行,Servlet调用EJB不经过网络,从而大大提高运行效率,提升安全性能。 小结 
    Jboss作为 “第三代”应用服务器,对于J2EE开发人员和用户而言是难得的教材。与Linux等开放源代码的系统相结合,在服务器端企业级应用方面更是一股不可低估的力量。