`
fanjava
  • 浏览: 240214 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

开发第一个分布式的j2ee应用

阅读更多
这里先引用Charly的Windows2000下安装J2EE和部署J2EE应用程序中的部门内容
1. 安装
可以从以下网址下载一个J2EE(j2sdkee-1_3-beta2-win.exe):http://java.sun.com/j2ee/j2sdkee-beta/index.html。也许你已装了旧版的J2EE SDK 产品,如果是,在安装新下载的J2EE之前请先卸载或删掉旧版的J2EE SDK。运行j2sdkee-1_3-beta2-win.exe,按安装步骤安装好J2EE。这里假设你的J2EE安装在:C:\j2sdkee1.3 目录下。

2. 设置环境变量
在运行J2EE SDK之前,你必须设置以下环境变量:
J2EE_HOME - 你的J2EE SDK所安装的目录。如本例中的:C:\j2sdkee1.3 。
JAVA_HOME - 你的Java 2 SDK 所安装的目录。
PATH - 设置为你安装J2EE SDK目录下的bin目录。如本例的的:C:\j2sdkee1.3\bin 。
ClassPath - 增添%J2EE_HOME%\lib\j2ee.jar到ClassPath中。本例中也可写为:C:\j2sdkee1.3\lib\j2ee.jar

3. 运行J2EE
Dos命令行敲入以下命令:
%J2EE_HOME%\bin\j2ee -verbose
显示以下信息表示运行成功:(不同的版本显示可能不同)
J2EE server listen port: 1050
Naming service started:1050
Binding DataSource, name = jdbc/EstoreDB, url = jdbc:cloudscape:rmi:CloudscapeDB;create=true
Binding DataSource, name = jdbc/DB2, url = jdbc:cloudscape:rmi:CloudscapeDB;create=true
Binding DataSource, name = jdbc/Cloudscape, url = jdbc:cloudscape:rmi:CloudscapeDB;create=true
Binding DataSource, name = jdbc/InventoryDB, url = jdbc:cloudscape:rmi:CloudscapeDB;create=true
Binding DataSource, name = jdbc/DB1, url = jdbc:cloudscape:rmi:CloudscapeDB;create=true
Binding DataSource, name = jdbc/XACloudscape, url = jdbc/XACloudscape__xa
Binding DataSource, name = jdbc/XACloudscape__xa, dataSource = COM.cloudscape.core.RemoteXaDataSource@330913
Starting JMS service ... Initialization 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
Apache Tomcat/4.0-b4-dev
Starting web service at port:9191
Apache Tomcat/4.0-b4-dev
J2EE server startup complete.

启动成功后,在IE浏 览 器 中 访 问 HTTP://localhost:8000 可 以 看 到 默 认 的 主 页 信 息 。

4. 编写和运行HelloWorld程序
J2EE应用程序一般使用RMI(远程方法调用)来完成客户端与服务器的交互。当然,其间也少不了EJB的作用。本例为一个J2EE应用程序:客户端向服务器发送一个问候语:“Hello,Remote Object”。服务器收到该问候语后打印该问候语,并返回一字符串作为应答。客户端收到此应答后打印它。

RemoteInterface.java

/**
* 第一步:
* 定义一个新的接口继承javax.ejb.EJBObject。新定义的接口中的每一个方法都必须抛出
* java.rmi.RemoteException异常。
*/
public interface RemoteInterface extends javax.ejb.EJBObject
{
public String message(String str)throws java.rmi.RemoteException;
}

RemoteObject.java

/**
* 第二步:
* 定义一个类来实现javax.ejb.SessionBean接口。并在该类中实现在第一步中编写的接口中所定义的方法。
*/
public class RemoteObject implements javax.ejb.SessionBean
{
public String message(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 RemoteObject() {}
public void ejbCreate() {}
public void ejbRemove() {}
public void ejbActivate() {}
public void ejbPassivate() {}
public void setSessionContext(javax.ejb.SessionContext sc) {}
}

RemoteHome.java

/**
* 第三步:
* 定义一个类继承javax.ejb.EJBHome 。
*/
public interface RemoteHome extends javax.ejb.EJBHome
{
RemoteInterface create()throws java.rmi.RemoteException,javax.ejb.CreateException;
}

Client.java

/**
* 第四步:
* 定义客户端类。
*/
public class Client
{
public static void main(String[] args)
{
try
{
javax.naming.Context initContext=new javax.naming.InitialContext();
Object obj=initContext.lookup("HelloWorld"); //远程查找,由名字得到对应的对象。
RemoteHome home=(RemoteHome)javax.rmi.PortableRemoteObject.narrow(obj,RemoteHome.class);
RemoteInterface remote=home.create();
String receiveFromRemote=remote.message("Hello,Remote Object!"); //远程方法调用
System.out.println("Client Received From Remote Object: \""+receiveFromRemote+"\"");
}
catch(Exception e)
{
e.printStackTrace();
}
}
}

假设以上四个Java文件存于C:\HelloWorld\下,编译它们如:C:\HelloWorld>javac *.java 。

5. 部署应用程序
启动Application Dopolyment Tool:新开一个Dos窗口,键入以下命令,%J2EE_HOME%\bin\deploytool 。该工具启动速度可能比较慢,要耐心等待。启动成功后会出现主界面(此时不要关闭Dos窗口)。在该界面中选 择 File菜 单 ,再选New Application项。在 Application File Name 输 入 :C:\HelloWorld\HelloWorld.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:\HelloWorld\HelloWorldClient.jar。选Next进入下一步,在Application框的JNDI Name框中双击并填上HelloWorld,注意必须与Client.java中Object obj=initContext.lookup("HelloWorld")的“HelloWorld”保持一致。点Next进入下一步。点Finish完成。这时将出现Deployment Progress窗口。如果有误,该窗口将出现异常信息。如果一切正常,点OK便完成了部署工作。

6. 运行应用程序
新开一个Dos窗口。进入C:\HelloWorld\Classes目录下运行:C:\ HelloWorld\Classes>java -classpath %J2EE_HOME%\lib\j2ee.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程序了吧?
可是现在有一个问题,ejb和j2ee的优点是在哪儿?什么是分布式的,在一台机器上那还叫什么分布系统吗?是不是有点可笑》现在下面我就教大家怎么把上面的程序变成分布式的。
如果您直接把client.class copy 到其他的机器上,肯定执行不了。因为你还需要一个home和remote接口,这两个文件在什么地方呢?在helloclient.jar这个包里面!:)所以你还需要这个包。把那个包也copy过去,执行一下,还是不可以。因为你的jndi名,只是个名字,程序怎么知道你要连的服务器在哪儿呀?所以原来的client代码你需要做如下的改动。
改成

Properties env = new Properties();
env.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.cosnaming.CNCtxFactory");
env.put(javax.naming.Context.PROVIDER_URL,"iiop://wcy:1050");
//javax.naming.Context initContext=new javax.naming.InitialContext(env);
Context initContext = new InitialContext(env);

Object obj=initContext.lookup("HelloWorld"); //远程查找,由名字得到对应的对象。
RemoteHome home=(RemoteHome)javax.rmi.PortableRemoteObject.narrow(obj,RemoteHome.class);
RemoteInterface remote=home.create();
String receiveFromRemote=remote.message("Hello,Remote Object!"); //远程方法调用
System.out.println("Client Received From Remote Object: \""+receiveFromRemote+"\"");

重新编译javac *.java成功后。把这个新的类copy到其他的机器上
打入java -classpath %J2EE_HOME%\lib\j2ee.jar;.;HelloWorldClient.jar; Client

这样就成功了。激动吧?呵呵~~有什么其他问题请留言
分享到:
评论

相关推荐

    J2EE分布式多层体系结构

    J2EE应用通常分为三层:客户层、中间层(包括WEB层和业务层)以及企业信息系统层。客户层负责与用户交互,展示计算结果;WEB层包含JSP、Java Applets和Servlet,用于动态生成HTML页面并响应客户请求;业务层主要由...

    J2EE应用程序开发指南

    ### J2EE应用程序开发指南知识点总结 #### 一、J2EE概述 - **定义**:J2EE(Java 2 ...无论是对于希望进入这个领域的新人还是已经在行业内工作的专业人士来说,《J2EE应用程序开发指南》都是一份非常宝贵的学习资料。

    J2EE应用实践教程[郑阿奇][程序源代码

    《J2EE应用实践教程》是由郑阿奇编著的一本深入浅出的J2EE技术书籍,旨在帮助读者通过实际操作理解并掌握J2EE应用程序的开发。这本书的源代码包含在压缩包中,提供了丰富的实践案例,尤其是对一个网上书城的完整开发...

    j2ee 企业应用源码

    **J2EE企业应用源码解析** J2EE(Java 2 Platform, Enterprise Edition)是Java平台上用于...通过对这些源码的学习和研究,开发者可以深入理解J2EE应用程序的结构和工作原理,提高开发和维护大型企业级项目的能力。

    J2EE 应用与 BEA WebLogic Server

    BEA WebLogic Server是BEA Systems(后被Oracle收购)开发的一款强大的J2EE应用服务器,它提供了全面的中间件解决方案,支持各种J2EE标准,如Java Servlet、JSP、EJB等。WebLogic Server以其稳定性、性能和可管理性...

    J2EE应用实践教程 第二章代码

    通过这个实践教程,你将深入理解J2EE应用的开发流程,以及如何有效地结合Struts2和Hibernate来构建一个功能完善的Web应用。这个过程中,你不仅会学习到具体的编程技巧,还会对软件设计模式和企业级开发有更深刻的...

    JAVA Web应用开发:J2EE课件

    J2EE应用程序国际化与本地化.ppt** - 国际化和本地化是使应用适应不同语言和地区的关键。这部分将讲解资源包的使用,日期、数字和文本的格式化,以及如何设置应用的区域设置。 通过这些课件的学习,开发者可以全面...

    J2EE应用与BEA.WebLogic.Server第2版配书源码

    《J2EE应用与BEA.WebLogic.Server第2版配书源码》是关于Java企业级应用程序开发和部署的重要参考资料,特别关注BEA WebLogic Server这一流行的应用服务器平台。源码通常提供了书中理论知识的实际应用示例,对于深入...

    美河提供.J2EE应用与BEA.WebLogic.Server第2版

    《J2EE应用与BEA.WebLogic.Server第2版》是由美河提供的关于Java企业级应用开发和BEA WebLogic Server服务器使用的专著。这本书详细介绍了如何利用J2EE(Java 2 Platform, Enterprise Edition)技术构建分布式、多层...

    Java ee 企业应用开发:第1章 J2EE开发介绍.ppt

    常见的J2EE应用服务器有IBM WebSphere、Oracle WebLogic、Apache Tomcat等。 Java平台分为三个主要版本:J2ME(Java 2 Platform Micro Edition)适用于嵌入式系统和移动设备,如安卓和Windows Phone;J2SE(Java 2 ...

    使用jboss和eclipse建立j2ee应用程序

    创建J2EE应用程序的第一步是配置Eclipse。你需要下载并安装Eclipse IDE for Java EE Developers版本,确保包含了J2EE开发所需的工具。然后,通过Eclipse的"Help" -&gt; "Eclipse Marketplace"或"Install New Software...

    J2EE项目开发与设计随书源码

    8. **Spring框架**:虽然Spring不是J2EE的一部分,但它在企业级Java开发中非常流行,提供了依赖注入、AOP(面向切面编程)、MVC(Model-View-Controller)等特性,简化了J2EE应用的开发。 9. **Struts、JSF等MVC...

    Java Web应用开发--J2EE和Tomcat第2版

    《Java Web应用开发--J2EE和Tomcat第2版》这一书名及描述明确指出其主要内容聚焦于Java Web应用程序的开发,特别是基于J2EE(Java 2 Platform, Enterprise Edition)和Tomcat服务器的环境。J2EE是Sun Microsystems...

    J2EE应用与BEAWebLogic Server (第二版)

    《J2EE应用与BEA WebLogic Server》(第二版)是一本专注于Java企业级应用开发和BEA WebLogic Server使用的权威指南。本书详细介绍了如何利用J2EE平台和WebLogic Server来构建、部署和管理复杂的分布式应用程序。...

    J2EE介绍.ppt

    * 分布式应用程序:J2EE 提供了一种分布式应用程序模型,允许开发者将应用程序分为多个模块,每个模块可以独立开发和部署。 * 多层架构:J2EE 提供了一种多层架构,包括表示层、业务逻辑层和数据访问层,每一层可以...

    J2EE应用实践教jar包

    总之,这个"J2EE应用实践教jar包"是深入学习和实践J2EE开发的宝贵资源,涵盖了现代企业级应用开发中的关键技术和最佳实践。通过对其中内容的深入研究,开发者能够提升自己的技能,更好地应对复杂的企业级项目挑战。

    J2EE 指南 J2EE中文教材

    - **第一章:总括**: - **分布式多层应用程序**:解释了J2EE如何支持分布式系统中的多层架构设计。 - **J2EE容器**:详细介绍了J2EE平台提供的不同类型的容器及其作用。 - **打包J2EE组件**:讲解了如何将Java...

    j2ee开发完整代码

    本项目提供了一个完整的J2EE开发实例,包括了数据库设计与源代码,为学习者和开发者提供了一次深入理解J2EE应用开发的绝佳机会。 首先,我们要了解J2EE的核心概念。J2EE是一个开放的、可移植的、多层的、分布式的、...

    J2EE应用架构与Eclipse开发技术

    综上所述,J2EE、Eclipse和JSP三者结合,为开发人员提供了一个高效、灵活的环境,用于构建复杂的企业级Java应用程序。利用Eclipse的强大功能,可以简化开发流程,提高开发效率,同时,JSP作为展示层技术,能有效地...

Global site tag (gtag.js) - Google Analytics