J2EE入门教程

article/2025/10/29 0:39:25
2005-12-11 20:20:21

字体变小 字体变大

J2EE入门教程
本教程讲述Sun J2EE 1.3 SDK的安装、配置和创建并部署第一个简单的EJB。
我们的目标平台是Windows XP SP2,JDK 1.4.2和J2EE SDK 1.3.1的Windows版本。我们在下面的实践中主要使用命令行模式,便于深入J2EE的内部机制。
首先,必须正确安装JDK1.4.2,如果你还没有安装JDK1.4.2,请参考Hello World的Java教程。
1.下载并安装j2sdkee-1.3.1
J2EE是一个规范而并非一个产品,任何厂家都可以实现这个规范,如BEA的WebLogic,IBM的WebSphere等等,SUN给出了一个最简单的J2EE完整实现,就是J2EE SDK,它是免费的,适用于学习J2EE而非运行实际的商用程序。我们使用的J2EE SDK版本是1.3.1,可以从SUN的站点下载j2sdkee-1_3_1-win.exe,地址如下:
http://java.sun.com/j2ee/sdk_1.3/
然后运行安装程序,选择安装目录(默认是C:/j2sdkee1.3.1),根据向导完成安装。
2.配置环境变量
必须首先正确配置JDK1.4的环境变量,包括JAVA_HOME,CLASSPATH和PATH,请参考Hello World的Java教程。
然后,配置J2EE 1.3.1,设置如下环境变量:
J2EE_HOME=>j2sdkee1.3.1安装目录<,我的目录是C:/j2sdkee1.3.1
PATH=>原PATH<;%J2EE_HOME%/bin
将J2EE安装目录下的lib/j2ee.jar添加到CLASSPATH中,我的CLASSPATH设置如下:
CLASSPATH=.;C:/j2sdkee1.3.1/lib/j2ee.jar
3.启动和停止J2EE服务器
打开命令行窗口,输入j2ee -verbose,屏幕显示一些信息,看到以下信息后,J2EE服务器启动成功。

要停止J2EE服务器,请打开另一个命令行窗口,输入:j2ee -stop
屏幕输出
Shutting down the J2EE server.
Shutting down JMS service...
服务器便关闭了。
EJB是J2EE中最重要的技术之一,它是支持分布式事务的分布式组件,我们以Hello World为例,编写第一个名为Hello的最简单的Session Bean。
根据EJB2.1规范,编写一个Session Bean需要以下几个类和接口:
远程接口Hello,客户端使用这个接口来访问EJB:
// Hello.java

// 远程接口:EJBObject

import javax.ejb.*;
import java.rmi.*;

public interface Hello extends EJBObject {
// 业务方法,必须抛出RemoteException:
public String say() throws RemoteException;
}
Home接口HelloHome,客户端使用这个接口来创建EJB并在稍后调用其业务方法:
// HelloHome.java

// Home接口,负责创建EJB:

import java.io.*;
import java.rmi.*;
import javax.ejb.*;

public interface HelloHome extends EJBHome {
// create方法需要抛出RemoteException和CreateException:
Hello create() throws RemoteException, CreateException;
}
实现业务逻辑的类HelloBean,客户端永远无法直接访问它,只能通过远程接口来间接访问它,HelloBean只有一个业务方法:
// HelloBean.java

// 实现真正业务方法的Bean,由容器管理,
// 客户端通过远程接口间接访问它:

import java.rmi.*;
import javax.ejb.*;

public class HelloBean implements SessionBean {
private SessionContext ctx;
public String say() {
return "Hello, world.";
}
public void setSessionContext(SessionContext ctx) {
this.ctx = ctx;
}
public void ejbCreate() {}
public void ejbRemove() {}
public void ejbActivate() {}
public void ejbPassivate() {}
}
从上面可以看到,为了编写一个Bean,需要额外的两个接口支持,并且,由于HelloBean不实现Hello接口,这些方法申明和实现如果不一致,只有在部署时才能发现问题。某些工具(如XDoclet)可以根据特定的注释自动生成Remote和Home接口。在EJB 3.0规范中,开发者就只需要编写Bean,剩下的Remote和Home接口都由工具根据EJB 3的注释自动生成,因此大大简化了开发。
为了提高EJB的调用速度,如果客户端和EJB容器位于同一个JVM内(例如运行在同一个JVM中的JSP和EJB),还可以使用本地接口,但是这两个接口不是必需的,因此我们不去实现它。
现在我们一共有3个文件:Hello.java,HelloHome.java,HelloBean.java,放在C:/example目录下,然后开始编译:
C:/example 在当前目录下可以找到编译后的Hello.class,HelloHome.class和HelloBean.class三个文件。
部署
部署是将J2EE组件(EJB,JSP,Servlet等)正确安装并配置到J2EE服务器中,然后,客户端程序才能够访问它。EJB运行在EJB容器中,因此,必须把我们编写的Bean部署到服务器上。
首先,确保J2EE服务器正在运行,请参考第3步:启动和停止J2EE服务器。
然后,再打开一个新的命令行窗口,输入:
deploytool
稍等片刻,出现部署窗口:

首先,我们需要新建一个服务器端应用程序:
选择File < New < Application…:


输入希望存放ear文件的完整路径和应用程序的名称,当然,这里我们的这个C:/helloapp/ear文件并不存在,部署工具稍后会创建它。
现在,Deployment Tool已经创建了一个hello的Application,但是还没有任何可以部署的组件:

下一步,我们将要添加前面我们编写的第一个EJB:
选择File < New < Enterprise Bean…,然后,按照向导开始部署EJB:

在Contents栏中,需要添加所有必须的class文件,点击“Edit…”,添加我们编译好的3个class文件:
然后,向导提示选择EJB类型。EJB 2共有3种Bean:Session Bean,Entity Bean和Message-Driven Bean,我们编写的是Session Bean,并且选择Stateless,表示该Session Bean是无状态会话Bean,所有客户端都可以共享一个Bean。如果选择Stateful,则每个客户端会拥有不同的Bean,类似于web应用程序的session机制。
在下面的下拉列表框中,选择对应的class。注意我们没有编写Local Home和Local Interface,因此让它们保持为空。然后输入Enterprise Bean Name:HelloBean。

剩下的可以直接使用默认值,一路Next即可。完成后,可以看到,主窗口多了一个Ejb1,选中它,我们还需要在JNDI Names一栏填入ejb/Hello,客户端将根据JNDI Name来查找我们编写的Bean:
选择File < Save,保存我们创建的Application。接下来,我们将把这个Application部署到服务器上。
选择Tools < Deploy,出现Deploy向导:

对话框提示我们将要部署的应用程序是hello,目标服务器是localhost,然后,一定要选中Return Client Jar,因为要从客户端访问部署在J2EE SDK服务器上的应用,必须要有这个Jar包。如果使用其他服务器,也需要相应的Jar包,如JBoss客户端需要jbossall-client.jar。这里,我们选择好存放Client Jar的目录,然后Next即可。
最后,J2EE服务器开始编译并部署我们的Hello Bean,可以看到两个进度条:

当进度条填满时,表示部署成功!可以在j2ee服务器的控制台窗口上看到如下输出:
Compiling C:/j2sdkee1.3.1/repository/cn1d6xuc/gnrtrTMP/hello/HelloBean_RemoteHom
eImpl.java ....
Compiling C:/j2sdkee1.3.1/repository/cn1d6xuc/gnrtrTMP/hello/HelloBean_EJBObject
Impl.java ....
rmic HelloBean_RemoteHomeImpl...
rmic HelloBean_EJBObjectImpl...
Application hello deployed.
整个部署是在窗口模式下进行的,好处是不用编写繁琐的xml配置文件。在实际的开发过程中,如果每当修改代码都这样部署一遍是非常低效的,因此应当使用ant实现自动编译、部署并测试。

编写客户端程序访问EJB
这里,我们编写一个基于控制台的application客户端来访问EJB:
// Client.java

import javax.naming.*;
import javax.rmi.*;

public class Client {
public static void main(String[] args) throws Exception {
// init context:
Context ctx = new InitialContext();
// 通过JNDI查找HelloBean:
Object obj = ctx.lookup("ejb/Hello");
// 获得home object:
HelloHome home = (HelloHome)PortableRemoteObject.narrow(obj, HelloHome.class);
// 创建ejb object:
Hello hello = home.create();
// 调用商业方法:
String words = hello.say();
System.out.println(words);
}
}
然后打开控制台,先设置好CLASSPATH,主要是将部署时生成的helloClient.jar添加到CLASSPATH中:
C:/client 然后编译:
C:/client 运行:
C:/client 屏幕输出:
Hello, world.
我们的第一个EJB终于调用成功!


在JSP/Servlet中调用EJB
在JSP/Servlet中调用EJB的代码和客户端是一样的,不同的是,调用代码也运行在服务器端,客户端只需要通过浏览器请求就可以获得结果,不必在客户端机器上也安装Java环境,这就是所谓的瘦客户端。
我们先编写一个JSP页面,命名为hello.jsp:
>%@ page import="javax.naming.*,javax.rmi.*,Hello,HelloHome" %<
>html<
>head<
>title /title<
>/head<
>body<
>%
// init context:
Context ctx = new InitialContext();
// lookup:
Object obj = ctx.lookup("ejb/Hello");
// get home object:
HelloHome home = (HelloHome)PortableRemoteObject.narrow(obj, HelloHome.class);
// create ejb object:
Hello hello = home.create();
// invoke business method:
String words = hello.say();
out.println(words);
%<
>/body<
>/html<

Web应用程序需要按照如下目录结构组织:

其中,WEB-INF/classes存放自己编写的class文件,WEB-INF/lib存放用到的所有jar包,其他的JSP文件可以存放在根目录下的任何位置。

和EJB组件一样,作为Web组件的JSP和Servlet也必须部署到服务器上。启动服务器,再次运行deploytool,并打开上次我们建立的hello application,选择File < New < Web Component,按Next跳过欢迎屏幕,出现下面的对话框:

类似EJB的部署,我们也需要将hello.jsp和helloClient.jar添加到Contents中。点击Edit添加hello.jsp和helloClient.jar这两个文件,请注意目录结构,添加完的目录结构一定是下图所示,否则Web应用程序不会正常工作:

然后Next,选择Web组件的类型,这里我们应当选择JSP:
在下一个对话框中选择hello.jsp:
然后一路Next,当出现WAR Context Root时,输入“/”:

剩下的均保持默认值即可。现在我们的Hello应用程序有两个组件:一个EJB和一个JSP:
然后选择Tools < Deploy…,将应用程序重新部署一遍,完毕后,打开浏览器,输入http://localhost:8000/hello.jsp:
浏览器显示出了正确的页面!


http://chatgpt.dhexx.cn/article/6xe8gQEb.shtml

相关文章

如何拥有个人的Github技术博客

题图&#xff1a;87testing.com 前不久用wordpress搭建了一个博客&#xff0c;用起来感觉不是太好用&#xff0c;并且数据库经常会发生异常挂掉&#xff0c;没找到解决方案。 看到有不少人使用的hexogithub方式搭建属于自己的博客&#xff0c; 于是&#xff0c;我也做了一些尝试…

github博客+hexo

这里基于ubuntu18&#xff0c;win10其实一样的&#xff0c;把sudo去掉就行了 安装 安装git 配置github的ssh 安装Node.js 版本需不低于 10.13&#xff0c;建议使用 Node.js 12.0 及以上版本 建议换个源 npm install express --registryhttps://registry.npm.taobao.org在gi…

【hexo+gitee/github】博客搭建

文章目录 参考资料1. 使用gitee&#xff08;github&#xff09;与hexo好处2. 安装2.1 安装Nodejs2.2 安装git2.3 安装Hexo 3. 建站4. 启动5. 配置5.1 主题配置 6. 部署到gitee pages6.1 创建一个gitee仓库6.2 配置路径6.3 开启GiteePages服务6.4 github pages部署6.4. 博客源代…

hexo+github部署个人博客

文章目录 hexogithub部署个人博客前期准备hexo搭建个人博客新建GitHub仓库将个人博客部署到Git pages写文章和发布文章Hexo优化修改博客目录下的_config.yml配置 matery主题美化 hexogithub部署个人博客 前期准备 安装git git的下载地址安装node.js node.js注册github账号&am…

利用github进行自定义博客地址

写在前面&#xff1a; 大家好&#xff0c;我是 花狗Fdog &#xff0c;来自内蒙古的一个小城市&#xff0c;目前在泰州读书。 很感谢能有这样一个平台让我能够在这里分享所学所感。 我喜欢编程&#xff0c;喜欢代码&#xff0c;喜欢去做一个程序员。 努力学习&#xff0c;争取多…

如何搭建github.io博客

零、宣传我的Github.io博客 https://ruixiangjiang.github.io/ 如果我的电脑没开就不能访问。。。正在调试中。。。 一、注册一个账号 进入www.github.com &#xff0c;然后注册。首页右上角头像那里有一个“”号&#xff0c;点击后选择“New repositor”。创建完之后点击“…

使用Github.io打造个人博客网站

Github.io上可以方便地打造自己的博客网站&#xff0c;相对于CSDN等社区网站来说既没有广告又能凸显个人调性。 建站步骤 建站步骤非常简单 在个人github上建一个repository&#xff0c;名字必须是username.github.io 推送一个静态html上去 # clone the prj git clone htt…

搭建hexo+Github博客

摘要 本文主要向大家介绍了如何搭建hexo-Github博客的详细过程&#xff0c;有需要的朋友们可以尝试阅读&#xff0c;希望对大家有帮助。 简要吐槽 搭博客其实没那么麻烦&#xff0c;但是在网上各类教程的“指导下”&#xff0c;我不知道放弃了多少次又重新试了多少次&#xff…

GitHub: 个人博客搭建

GitHub: 个人博客搭建 食材&#xff1a;jekyll 工具&#xff1a;GitHub&#xff0c;visual studio code&#xff0c;chrome。 第一步&#xff1a;安装Jekyll&#xff0c;具体参考官方链接 https://www.jekyll.com.cn/docs/step-by-step/01-setup/ 操作指南 安装一个完整的…

hexo+github搭建博客(超级详细版,精细入微)

转载此文章前&#xff0c;请先联系作者&#xff0c;经作者同意后再转载&#xff0c;并请注明原文链接和作者&#xff0c;整理这些不容易&#xff0c;最终版权归作者所有&#xff0c;谢谢合作&#xff01;移步我的个人博客&#xff1a;https://yafine-blog.cn&#xff0c;阅读体…

用github搭建个人(博客网站

&#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f64f;作者水平很有限&#xff0c;如果发现错误&#xff0c;请留言轰炸哦&#xff01;万分感谢&a…

个人博客构建——github个人博客

摘要 为什么需要构建自己的博客呢&#xff1f;第一&#xff0c;是为解决平台的可能随意删除自己博文&#xff0c;需要有一个不被其他所左右的分享平台&#xff0c;第二&#xff0c;需要一个载体来记录的自己的学习内容&#xff0c;第三&#xff0c;也是为自己自媒体提前做一个…

Hexo+GitHub免费搭建个人博客(保姆级教程)

文章目录 HexoGitHub免费搭建个人博客(保姆级教程)安装依赖环境Git的下载与安装Node.js下载与安装:red_circle:***注意一***:red_circle:***注意二*** Git和Node.js工具工作状态检验:red_circle:**注意三** 安装Hexo:ng:小插曲1:ng:小插曲3&#xff1a; 生成博客文件博客效果预…

教程:纯小白如何搭建自己的Github博客并写第一篇博文

文章目录 1 搭建Github博客1.1 确认github上创建的repository名称1.2 用系统命令行安装hexo并初始化本地博客文件夹1.3 下载并安装hexo NexT主题1.4 更新部署博客页面 2 创建并发布自己的第一篇文章2.1 用hexo new命令创建文章脚本2.2 编辑文章2.3 发布文章/更新博客 写在前面&…

搭建自己的github.io博客

搭建自己的github.io博客 github.io是基于github的repo管理&#xff0c;这意味着咱们对其是有觉得的控制&#xff0c;这个跟放在第三方的平台比&#xff0c;可控性要好太多。下面咱们将详细讲述如何基于github.io打造属于自己的博客网站。 要完成自己的github.io博客网站&…

github个人博客快速搭建教程

文章目录 首先搭建起一个github博客1 左上角标题及简介以及下方的介绍2 评论和访客数3 文章4 Home Archives Categories 和 Tags5 Collections6 Demo7 About 首先搭建起一个github博客 首先建立一个个人博客github仓库。其实只要把 需要的代码 fork下来, 仓库名改为自己的{{gi…

如何使用Github搭建个人博客

介绍 在本文中&#xff0c;我将介绍如何使用GitHub搭建个人博客&#xff08;免费&#xff09;。GitHub是一个功能强大的版本控制和协作平台&#xff0c;它也可以用来托管和发布静态网页。通过将你的个人博客托管在GitHub上&#xff0c;你可以享受到版本控制的好处&#xff0c;…

github完成个人博客的搭建过程

依托于github完成个人博客的搭建过程&#xff0c;但目前只完成了基础部分 Todo: {% cb 评论功能,false, false %} {% cb 版权信息,false, false %} {% cb 页面个性化,false, false %} {% cb 云服务器部署,false, false %}  阿里云学生免费领取6个月 {% cb 公网IP访问,false, f…

php书写规范

一、基本约定 1、源文件 &#xff08;1&#xff09;纯PHP代码源文件只使用 <?php 标签&#xff0c;省略关闭标签 ?> &#xff1b; &#xff08;2&#xff09;源文件中PHP代码的编码格式必须是无BOM的UTF-8格式&#xff1b; &#xff08;3&#xff09;使用 Unix LF(换…

SQL书写规范

SQL书写规范可以参考&#xff1a; SQL样式指南 SQL style guide by Simon Holywell