| 
| 
| Windows2000下安装J2EE和部署J2EE应用程序 |  
| 时间:2014-05-04 10:05:07  来源:不详  作者:佚名 |  
| | 可以从以下网址下载一 java.sun.com/j2ee/j2sdke
 是,在安装新下载的J2EE之
 1_3-beta2-win.exe,按安
 录下。
 
 | 个J2EE(j2sdkee-1_3-beta2-wi e-beta/index.html。也许你已
 前请先卸载或删掉旧版的J2EE S
 装步骤安装好J2EE。这里假设你
 
 
 | n.exe):http:// 装了旧版的J2EE SDK 产品,如果
 DK。运行j2sdkee-
 的J2EE安装在:C:j2sdkee1.3 目
 
 
 | 
 
 | 在运行J2EE SDK之前,你必须设置以下环境变量: | 
 | J2EE_HOME - 你的J2EE 
 | SDK所安装的目录。如本例中的 
 | :C:j2sdkee1.3 。 
 | 
 | JAVA_HOME - 你的Java 2 SDK 所安装的目录。 | 
 | PATH - 设置为你安装J 
 | 2EE SDK目录下的bin目录。如本 
 | 例的的:C:j2sdkee1.3bin 。 
 | 
 | ClassPath - 增添%J2EE_HOME%lib C:j2sdkee1.3libj2ee.jar
 
 | j2ee.jar到ClassPath中。本例中也可写为: 
 
 | 
 
 | %J2EE_HOME%binj2ee -verbose | 
 | 显示以下信息表示运行成功:(不同的版本显示可能不同) | 
 | J2EE server listen port: 1050 | 
 | Naming service started:1050 | 
 | Binding DataSource, name = jdbc/ udscape:rmi:CloudscapeDB;create=true
 
 | EstoreDB, url = jdbc:clo 
 
 | 
 | Binding DataSource, loudscapeDB;create=true
 
 | name = jdbc/DB2, url = jdbc: 
 
 | cloudscape:rmi:C 
 
 | 
 | Binding DataSource, name = jdbc/ loudscape:rmi:CloudscapeDB;create=tr
 
 | Cloudscape, url = jdbc:c ue
 
 | 
 | Binding DataSource, pe:rmi:CloudscapeDB;crea
 
 | name = jdbc/InventoryDB, url te=true
 
 | = jdbc:cloudsca 
 
 | 
 | Binding DataSource, loudscapeDB;create=true
 
 | name = jdbc/DB1, url = jdbc: 
 
 | cloudscape:rmi:C 
 
 | 
 | Binding DataSource, 
 | name = jdbc/XACloudscape, ur 
 | l = jdbc/XACloudscape__xa 
 | 
 | Binding DataSource, name = jdbc/ COM.cloudscape.core.RemoteXaDataSour
 
 | XACloudscape__xa, dataSource = ce@330913
 
 | 
 | Starting JMS service ... Initial 
 | ization complete - waiting for client requests 
 | 
 | Binding : < JMS Destination : jms/Queue , javax.jms.Queue > | 
 
 | Binding : < JMS Destination : jms/Topic , javax.jms.Topic > | 
 
 | Binding : < JMS Cnx Factory : jms/TopicConnectionFactory , Topic , No properties > | 
 
 | Binding : < JMS Cnx Factory : TopicConnectionFactory , Topic , No properties > | 
 
 | Binding : < JMS Cnx Factory : jms/QueueConnectionFactory , Queue , No properties > | 
 
 | Binding : < JMS Cnx Factory : QueueConnectionFactory , Queue , No properties > | 
 
 | Starting web service at port:8000 | 
 | Starting secure web 
 | service at port:7000 
 | 
 | Starting web service at port:9191 | 
 | J2EE server startup complete. | 
 
 | 启动成功后,在IE浏 主 页 信 息 。
 
 | 览 器 中 访 问 HTTP://localh 
 
 | ost:8000 可 以 看 到 默 认 的 
 
 | 
 
 | J2EE应用程序一般使用RMI(远程方 也少不了EJB的作用。本例为一个J2EE应
 Hello,Remote Object”。服务器收到该
 客户端收到此应答后打印它。
 
 | 法调用)来完成客户端与服务器的交互。当然,其间 用程序:客户端向服务器发送一个问候语:“
 问候语后打印该问候语,并返回一字符串作为应答。
 
 
 | 
 
 
 | * 定义一个新的接口继 出
 
 | 承javax.ejb.EJBObject。新定 
 
 | 义的接口中的每一个方法都必须抛 
 
 | 
 | * java.rmi.RemoteException异常。 | 
 | public interface Rem 
 | oteInterface extends javax.e 
 | jb.EJBObject 
 | 
 | public String message(String str 
 | )throws java.rmi.RemoteException; 
 | 
 
 
 | * 定义一个类来实现ja 口中所定义的方法。
 
 | vax.ejb.SessionBean接口。并 
 
 | 在该类中实现在第一步中编写的接 
 
 | 
 | public class RemoteObject implem 
 | ents javax.ejb.SessionBean 
 | 
 | public String messag 
 | e(String str)throws java.rmi 
 | .RemoteException 
 | 
 | System.out.println(" (从客户端)接收到的字符
 
 | Remote Object Received From 串。
 
 | Client: ""+str+"""); //打印 
 
 | 
 | return "Hello,I'm Remote Object, 一应答字符串。
 
 | I received your message: '"+str+"'"; //返回 
 
 | 
 
 | public void ejbCreate() {} | 
 | public void ejbRemove() {} | 
 | public void ejbActivate() {} | 
 | public void ejbPassivate() {} | 
 | public void setSessi 
 | onContext(javax.ejb.SessionC 
 | ontext sc) {} 
 | 
 
 
 | * 定义一个类继承javax.ejb.EJBHome 。 | 
 | public interface RemoteHome exte 
 | nds javax.ejb.EJBHome 
 | 
 | RemoteInterface create()throws j javax.ejb.CreateException;
 
 | ava.rmi.RemoteException, 
 
 | 
 
 
 | public static void main(String[] args) | 
 | javax.naming.Context 
 | initContext=new javax.namin 
 | g.InitialContext(); 
 | 
 | Object obj=initConte 。
 
 | xt.lookup("HelloWorld"); // 
 
 | 远程查找,由名字得到对应的对象 
 
 | 
 | RemoteHome home=(RemoteHome)java ct.narrow(obj,RemoteHome.class);
 
 | x.rmi.PortableRemoteObje 
 
 | 
 | RemoteInterface remote=home.create(); | 
 | String receiveFromRemote=remote. 用
 
 | message("Hello,Remote Object!"); //远程方法调 
 
 | 
 | System.out.println(" iveFromRemote+""");
 
 | Client Received From Remote 
 
 | Object: ""+rece 
 
 | 
 
 | 假设以上四个Java文件存于C:HelloWorld下,编译它们如:C:HelloWorld>javac *.java 。 | 
 
 
 | 启动Application Dopolyment Tool:新开一个Dos窗口,键入以下命令,%J2EE_HOME%bindeploytool 。该工具启动速度可能比较慢,要耐心等待。启动成功后会出现主界面(此时不要关闭Dos窗口)。在该界面中选 择 File菜 单 ,再选New Application项。在 Application File Name 输 入 :C:HelloWorldHelloWorld.ear 。在 Application Disply Name 输 入 你所喜欢的显示名如:HelloWorld。点 击 OK,在主界面的树形结构Files-->Applications下将增加新的一项:HelloWorld。这意味着产生了一个新的应用程序。接下来我们要做的就是部署该应用程序。在主界面的树形结构下选中HelloWorld,然后再在主界面的File菜单中选取New-->Enterprise Bean,在弹出的名为“New Enterprise Bean - Introduction”窗口中选取Next跳过第一步,在接下来的一步中,Create New EJB File in Application项中选HelloWorld,在EJB Display Name中填上你喜欢的名字如:Hello World EJB,点击Edit按钮,在弹出的窗口中,Start Directory中填:C:HelloWorld,在Available Files中展开树形结构C:HelloWorld,选取RemoteInterface.class、RemoteObject.class、RemoteHome.class、Client.class四项,点Add按钮添加,然后按OK确定。此时在Contents框中增加了该四个class。点Next进入下一步。Session项选Stateless,意为不保存session状态。Enterprise Bean Class选RemoteObject。Enterprise Bean Name中填上你喜欢的名字如:Hello World Bean。Remote Home Interface中选RemoteHome,Remote Interface中选RemoteInterface。选Next进入下一步。接下来的步骤可直接点Finish。这时主界面的树形结构中Files-->Application-->Hello World中将出现Hello World EJB-->Hello World Bean子项。在主界面的树形结构下选中Hello World,然后再在主界面的Tools菜单中选取Deploy,将弹出新的窗口名为“Deploy Hello World - Introduction”。Object to deploy中选Hello World,Target server中选localhost,选中Retuen Client Jar,在Client Jar File Name中填上:C:HelloWorldHelloWorldClient.jar。选Next进入下一步,在Application框的JNDI Name框中双击并填上HelloWorld,注意必须与Client.java中Object obj=initContext.lookup("HelloWorld")的“HelloWorld”保持一致。点Next进入下一步。点Finish完成。这时将出现Deployment Progress窗口。如果有误,该窗口将出现异常信息。如果一切正常,点OK便完成了部署工作。 | 
 
 
 | 新开一个Dos窗口。进入C:HelloWorldClasses目录下运行:C: HelloWorldClasses>java -classpath %J2EE_HOME%libj2ee.jar;.;HelloWorldClient.jar; Client 。运行成功则出现如下信息:Client Received From Remote Object: "Hello,I'm Remote Object,I received your message: 'Hello,Remote Object!'" 。而服务端Dos窗口(j2ee -verbose)中出现如下信息:Remote Object Received From Client: "Hello,Remote Object!" 。 | 
 
 
 | 本程序很适J2EE的入门 保无误。如不能正常运行,
 Copy到Dos窗口中运行,某
 程序部署不成功,可以使用
 个应用程序(如:Hello Wo
 
 | ,简单而明了。本程序由Charly 请检查你的环境变量设置是否正
 些字符可能受中文全角字符的影
 Application Deployment Tool
 rld)或其子项删掉。此工具的
 
 | 设计编写,并由其本人多次运行确 确,最好不要直接将以上各命令
 响而不被识别。另外如果某个应用
 主界面的Edit菜单的Delete项将这
 右键功能几乎没有,愦憾。
 
 | 
 
 
 | Sun为rmi、Servlet(JS 是一个大的综合和封装。它
 年(2000年)在大中华范围
 成明日黄花,不过Microsof
 ,Sun自然对J2EE寄予厚望
 还没有其它哪门语言能与之
 客户端可包括浏览器,桌面
 用(Application)服务,
 服务端提出请求(Web服务
 持,服务端则直接或在EJB
 户端;如果不需要后台企业
 求,并将结果返回至客户端
 取 控 制 规 则 。应该说
 有数不尽的优势:速度快(
 Java的规格和严谨)、成熟
 也算不错,只是其使用的标
 的程序哪个不存在以下情形
 有些夸张,但不过分);界
 这与软件生产者有关,但Sw
 Oracle的Jdeveloper、IBM
 提升硬件来迷补其不足(虽
 ERP或其中的某一环节,用
 写的,所以很慢?对不起,
 部分外,J2EE的应用服务应
 
 | P)、JavaBean等Java技术摇旗呐 的出现应该说是这些技术走向成
 的书店中都少有介绍,几近没有
 t C#的推出是否会让它有所改变
 。应该说,Sun的Java设计一直
 匹敌。J2EE的设计自然也是大手
 应用程序,甚至其它设备如PDA
 这分别是Servlet(JSP)和rmi技
 或应用服务),该请求如果需要
 支持下来操作后台企业信息系统
 信息系统(数据库)支持,服务
 。当然其间各环节都少不了安全
 ,J2EE的Web应用会取得很大成
 比ASP、PHP可能快好几倍)、跨
 (实际应用已久且应用广泛)、
 准界面Swing实在是太耗资源且
 :程序启动时象国产拖拉机,轰
 面刷新慢,明显的延时;操作不
 ing要负一部分责任)。此如说S
 的Websphere都有此症。作为程
 然至今还是不足)。但作为客户
 起来有如此顽症,怎么向人家解
 人家不会关心你用什么写的,人
 该说是很不错的,如分布式计算
 
 | 喊已有多年。J2EE的出现不可谓不 熟的结果。举个例子,JSP技术去
 。现在业已铺天盖地。ASP似乎已
 ?有待观察。面对竞争对手的压力
 都很规格和严谨。在这方面,当今
 笔。J2EE被设计成多层次的结构。
 程序。服务端可以为Web服务和应
 术的体现。客户端通过网络协议向
 后台企业信息系统(如数据库)支
 (如数据库),并将结果返回至客
 端则直接或在EJB支持下处理该请
 控制:J2EE的标 准 的 公 开 存
 功,因为Servlet(JSP)在Web方面
 平台、稳定(这不能不说是得益于
 功能强大。而J2EE的应用服务应该
 效率低。君不见,当今用Swing写
 隆轰隆地响--那是读硬盘的声音(
 方便,快捷键和右键功能少(当然
 un的Forte4Java、J2EE SDK、
 序员,我们也许还能接受,以不断
 企业,你用Swing给人家做了一个
 释?向他(她)说,这是用Swing
 家给你的也许只有抱怨。除了界面
 。
 
 | 
 
 |  |  |  |