摘要
Enhydra――海獭是种哺乳动物,它会从海底涝贝壳,然后躺在海面上,把贝壳放在肚皮上用涝起来的石头砸碎再吃,它一生都生活在海里,是真正的冲浪高手,现在的互联网就像大海,丰富而又无处不在,我们也想象海獭一样去冲浪,于是互联网中的Enhydra诞生了。
(2002-09-06 14:08:21)
--------------------------------------------------------------------------------
By Wing
Enhydra的特点
Enhydra――海獭是种哺乳动物,它会从海底涝贝壳,然后躺在海面上,把贝壳放在肚皮上用涝起来的石头砸碎再吃,它一生都生活在海里,是真正的冲浪高手,现在的互联网就像大海,丰富而又无处不在,我们也想象海獭一样去冲浪,于是互联网中的Enhydra诞生了。
Enhydra作为一个应用服务的开发平台,是基于J2EE标准,在Java虚拟机之上建立的。Enhydra运用了已经在Java中比较成熟的面向对象的技术来设计它本身的层次结构,利用了Java强大的功能、优秀的可移植性,继承了Java精良的模块化、层次化设计思想。这种与Java的密切关系使得Enhydra自然具备了优良的可移植性、可扩展性,使其可以适应现今跨平台、多层结构的应用服务任务。
源码开放保证了Enhydra强大的生命力和可扩展性, 这一举措将大大提高enhydra的开发速度,Lutris正在把Enhydra与Bull软件公司的企业Java Bean服务器和法国电信CORBA对象请求代理软件进行系统集成,这将使Enhydra支持无线设备。由于它的源码开放,我们可以站在巨人的肩膀上看世界,不断获得各种技术资料和帮助。
Enhydra产品主要包括Enhydra Application Server 和 Enhydra development environment主要有几部分构成:
Multiserver:可以单独或者和其他Web Server挂接在一起运行Enhydra application。
Enhydra application:是运行在Multiserver下,同时在运行时使用application framework的java程序。
The application framework :enhydra应用程序框架提供Web应用所应有的最底层结构,它分为三个独立的层次: 表示层(The presentation layer)、商务层(The business layer)、数据层(The data layer)。 也就是说,利用它,只需向框架中加入一个应用程序对象和一系列表示层、商务层、数据层对象构成有机的整体即可搭构一个应用程序对象。而且维护起来相当的方便。
Enhydra tools :开发Enhydra 应用的工具。
要讲清楚Enhydra的作用,首先让我们来看看服务器端运行模式的改变。以前,当客户机浏览器发出对某种信息或是服务的请求时,Web服务器接受并处理这种请求,向数据库请求数据,得到数据后,回送给客户机,这种两层结构即为我们所熟知的client/server模式,如图。
客户机<-------- >Web服务器<--------->数据库
现在不同了,随着对互联网需求的增加,特别是全球电子商务市场的迅猛发展,我们要建立的网站是要满足几万几十万用户同时访问的要求,Web服务器要处理的任务越来越复杂,对于数据库的访问越来越多,使用旧的client/server模式发展电子商务是无法想像的,于是提出了一种新的三层模式,如图所示。
客户机<--------> Web服务器<--------->应用服务器<-------->数据库
在Web服务器和数据库之间加入了一个应用服务器。事实上这个应用服务器在client/server模式中就已存在,但它分散在客户层和数据库服务器层,现在我们把它的分散的两部分提取出来,组成专门的应用服务器,使客户层变"瘦",使数据库服务器更专注数据库操作。要构成这个应用服务器,首先要有一个类似于操作系统的运行环境,也就是"中间件",准确的讲"中间件"就是指位于应用服务器平台(操作系统、硬件)与应用程序之间的软件产品,应用程序在其支持下运行。当Web服务器接收到来自客户机的请求时,将请求发送到应用服务器去处理,在应用服务器上运行着中间件平台,其上运行相应的处理这种请求的应用程序,这些应用程序对请求进行处理,访问数据库,并向Web服务器传送处理结果。
Enhydra环境本身就是运行在应用服务器上的中间件产品,准确的讲,它是中间件组的集成,并构成了一个平台,这个平台包括开发平台和运行平台。即使用Enhydra环境中的工具开发出来的应用程序,在Enhydra运行环境上运行。
Enhydra作为中间件产品有很多优点,它对各种硬件平台、操作系统、数据库以及Client端实现了兼容。Enhydra运行环境可以在多种硬件平台和操作系统上运行,当我们要改变硬件或软件环境时,只需把在Enhydra开发环境中编写的应用程序用很少的时间重新编译即可。利用Enhydra开发应用产品可以降低开发成本,提高工作效率。比如Enhydra开发环境已经为您提供了标准应用程序框架,如何响应,如何处理,如何访问数据库等等程序的结构非常清晰。这些基础程序的开发在工作中本来要占用大量的时间和经费,使用Enhydra,我们可以将精力更多的用在业务应用程序上。
此外,Enhydra有很多特性,它是Open Source的,你不用为使用它而花钱, 同时会有很多人来丰富它改进它,这些人不再局限于某一个公司某一个国家。Open Source 必将是软件业发展的主流,在这方面Enhydra走在世界的前面。Enhydra的应用程序要求使用JAVA语言来编写,这就使得应用程序的通用性和安全性得到保证。Enhydra符合很多的工业标准如Servlets, JSP, Java, XML, HTML, JDBC等等,同时Enhydra提供了丰富的开发工具, Application Wizard命令行工具,帮你创建基本的Enhydra应用程序框架。XMLC用来产生一个JAVA对象来反映出XML文件的结构,使用该对象并使用DOM接口在运行时实现程序对XML文件内容的访问和更新。DODS是建立你的数据模型的一种工具。数据模型中的数据对象和数据库中的表有一一对应的关系。基于以上的原因我们能轻松的使用Enhydra开发出business-to-business, business-to-consumer, e-commerce等多种多样的可靠而且可扩展的应用程序,以满足Internet和电子商务发展的需要。
Enhydra在Linux下的安装
首先到http://enhydra.enhydra.org/software/downloads/index.html下载最新Enhydra的版本;
一、安装JDK
解压:tar zxvf jdk-1_2_2-linux-i386.tar.gz
mv jdk-1_2_2 /usr/local/jdk1.2.2
把”export JAVA_HOME=/usr/local/jdk1.2.2”加入环境变量文件中,一般是$HOME/.bash_profile
二、安装Enhydra
解压下载的Enhydra包
tar zxvf enhydra3.1.tar.gz
mv enhydra3.1 /usr/local/
这样就把enhydra安装在/usr/local/enhydra3.1目录下
三、enhydra Multiserver Admin的启动
进入enhydra3目录, 如果enhydra安装在/usr/local下
cd /usr/local/enhydra3.1
如果enhydra安装在/enhydra/local下
cd /enhydra/local/enhydra3.1
然后输入 ./bin/multiserver
如果已经设置了path环境变量
直接在命令提示符下输入multiserver并回车
这样就会在窗口输出一些信息,主要是显示监听的几个端口信息
http://localhost:8001/ - The Multiserver Admin Console
http://localhost:8002/ - The Welcome Application
http://localhost:8003/ - The Javadoc for Enhydra
http://localhost:8004/ - Enhydra里自带的sample
一些jsp和servlet文件和tomcat里的sample差不多, 在这里可以测试一下jsp和servlet看看能否运行, 如果不能运行JSP和servlet, 检查一下path和classpath)
在IE或NETSCAPE里运行http://localhost:8001/
提示输入username和password
username admin
password enhydra
用户名和密码可以在multiserverAdmin.conf里修改
四、建立我们自己的应用目录
首先建立一个目录(随意建到哪里)
例如:建立一个test目录
在enhydra$提示符下输入命令: mkdir test
然后回车 列出目录ls –l
mkdir test
ls -l
total 12
-rw-r--r-- 1 500 everyone 937 Apr 14 2000 README
drwxr-xr-x 2 500 everyone 0 Mar 30 08:59 apps
drwxr-xr-x 2 500 everyone 0 Mar 30 08:58 bin
-r-xr-xr-x 1 500 everyone 4090 Apr 14 2000 configure
drwxr-xr-x 4 500 everyone 0 Mar 30 08:59 director
drwxr-xr-x 6 500 everyone 0 Mar 30 08:58 dist
drwxr-xr-x 7 500 everyone 0 Mar 30 08:58 doc
drwxr-xr-x 7 500 everyone 0 Mar 30 08:59 dods
drwxr-xr-x 3 500 everyone 0 Mar 30 08:59 examples
drwxr-xr-x 2 500 everyone 0 Mar 30 08:59 filters
drwxr-xr-x 2 500 everyone 0 Mar 30 08:58 lib
drwxr-xr-x 2 500 everyone 0 Mar 30 08:59 logs
-rw-r--r-- 1 500 everyone 16569 Mar 30 08:59 multiserver.conf
drwxr-xr-x 3 500 everyone 0 Mar 30 09:52 test
drwxr-xr-x 3 500 everyone 0 Mar 30 08:58 webapps
drwxr-xr-x 3 500 everyone 0 Mar 30 09:04 work
drwxr-xr-x 3 500 everyone 0 Mar 30 08:59 xml
cd test
appwizard test
Creating new tree for Enhydra application test in . est ...
Done.
这样建立了个应用程序的目录test
是application root directory(等会要用到)
cd test
ls -l
total 3
-rw-r--r-- 1 500 everyone 619 Mar 30 10:41 Makefile
-rw-r--r-- 1 500 everyone 595 Mar 30 10:41 README
-rw-r--r-- 1 500 everyone 880 Mar 30 10:41 config.mk
drwxr-xr-x 5 500 everyone 0 Mar 30 10:41 test
cd test
ls
Makefile data start
Test.java multiserver.conf.in test.conf
business presentation
建立application, 在命令行输入make
make
运行后就回出现下列信息
Build Started Fri Mar 30 10:51:00 2001
+ /usr/local/enhydra3.0.1/bin/xmlc -d ../../
classes -class test.presentation.WelcomeHTML -generate
both Welcome.html
Adding to JAR classes: Enhydra.gif
……………………………
如果这里出现错误,检查一下classpath是否设置正确你的classpath里需要enhydra.jar这个package 现在让我们看看application root directory, 也就是前面说的test目录
cd ..
ls
Makefile README classes config.mk output test
对比一下, 可以看的出来多出两个目录, make在application root directory方向上建了两个子目录classes和output
Output目录:
用来放运行你的应用程序所需要的几个配置文件
---multiserver.conf Multiserver配置文件
---AppName.conf(这里是test.conf)application配置文件
---start start script
运行一下我们刚建立的application
cd output
ls
multiserver.conf start test.conf
./start
***
*** Connect to http://false:9000/
***
2001.03.30 11:11:17: Multiserver,INFO: Starting Enhydra Multiserver
2001.03.30 11:11:19: Multiserver,INFO: HTTP listening on port: 9000
2001.03.30 11:11:19: Multiserver,INFO: Starting servlet/application test
2001.03.30 11:11:19: Multiserver,INFO: Application test has url prefix "".
2001.03.30 11:11:19: test,INFO: test: init
Enhydra Java Application Server
Copyright 1997-2000 Lutris Technologies, Inc.
All rights reserved.
2001.03.30 11:11:20: .Test,INFO: Enhydra Java Application Server
2001.03.30 11:11:20: .Test,INFO: Copyright 1997-2000 Lutris Technologies, Inc.
2001.03.30 11:11:20: .Test,INFO: All rights reserved.
默认情况下监听9000端口。
现在我们可以应用这个APPLICATION了,
在NETSCAPE里输入http://localhost:9000/
这是个动态产生的presentation object (po) 文件.
五、建立WEB应用程序目录
Enhydra 作为JAVA APPICATION SERVER,怎样让我们刚刚建好的application目录运行编写的jsp和servlet的呢???
写两个例子测试一下Hello.jsp和HelloWorld.java
/**********Hello.jsp(jsp文件)**********************
hellworld
<%
out.println("
HelloWorld!!!");
%>
************END***********************/
/*************************HelloWorld.java(servlet文件)*************
*****************************COPY *****************************
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("");
out.println("");
out.println("");
out.println("
Hello World!");
out.println("");
out.println("");
out.println("
Hello World!
");
out.println("");
out.println("");
}
}
************END*************/
使用我们刚才在第四步建立的test application root目录
首先我在test/test下建立了一个webapps目录
目录结构:
webapps
|_____jsp
|_____servlet
|_____web_info
|______classes
|______jsp
可以根据这个结构自己建目录,现在把前面的hello.jsp放到jsp目录下。 HelloWord.java放到servlet目录下, 然后用javac 编译这个.java为.class文件
到web-info下的classes目录里, 现在让Multiserver Admin Console来管理应用程序。
把/enhydra3.1/apps/multiserverAdmin.conf这个文件copy到/usr/local/test/test/output.
操作:
cp /usr/local/enhydra3.0.1/apps/multiserverAdmin.conf
/usr/local/test/test/output
用vi编辑工具打开/usr/local/enhydra3.1/test/test/output/ multiserver.conf
找到这几行
Application.MultiserverAdmin.ConfFile = multiserverAdmin.conf
Application.MultiserverAdmin.Description =
"The Enhydra Multiserver Management Console."
Application.MultiserverAdmin.Running = yes
Connection.p9001.Type = http
Connection.p9001.Port = 9001
Channel.p9001.aChan.Servlet = MultiserverAdmin
Channel.p9001.aChan.Url = "/"
Channel.p9001.aChan.Enabled = yes
把前面的#号去掉,保存.
output目录下
在命令行输入./start
将监听9000和9001两个端口。
http://localhost:9001-------The Multiserver Admin Console
http://localhost:9000-------应用
在浏览器里打开http://localhost:9001
username->admin
password->enhydra
启动了Multiserver's graphical administration program
点击ADD按钮, 在弹出的小窗口里面
Application/Servlet/War: 选择War(Web Application Doc Root)
Name: 取个名字吧, 我的这个就叫myapp吧
Doc Root: /usr/local/enhydra3.1/test/test/webapps/ (这个填写web 应用程序的方向, 一定要填对)
/*******************以下可选**************************/
Session timeout: (optional) 30 (填写session超时时间)
War expanded:(optional)
War validated: (optional)
Invoker Enabled:(optional) (如果想让Servlet工作, 选中这个选项)
WorkDir Persistent:(optional)
Description:(optional)
点击OK
这样就会在主窗口的左面Applications列表里多出了一个myapp
点击myapp,在窗口的右面部分出现状态信息。
有两个选项, 点击CONNECTIONS, 然后点create
填入端口号9002 (注意端口不要有冲突)
OK后。用鼠标点击在主窗口的左面的start按钮。
必须让9002 running, 否则9002不能工作
然后保存 save state。 下次就可以直接使用了
注意:这里很容易出问题的。最好把multiserver.conf的内容研究明白,最容易出现的问题就是端口不能绑定(bind)。
在浏览器中输入
http://localhost:9002/jsp/hello.jsp
和
http://localhost:9002/servlet/HelloWorld
如果一切正常就可以看到我们熟悉的Hello World字样了,这时你的enhydra就算安装成功了。
Enhydra在Windows下的安装
首先到http://enhydra.enhydra.org/software/downloads/index.html下载最新Enhydra的版本;
一、安装JDK
1、双击jdk1_2_2-00x-win.exe文件进行安装,使用缺省配置进行安装,JDK的缺省安装目录为 C:jdk1.2.2,JRE的缺省安装目录为C:Program FilesJavaSoftJRE1.2;
2、 在控制面板里的SYSTEM中设置环境变量path和classpath
path= c:jdk1.2.2in;c:jdk1.2.2
classpath=c:jdk1.2.2lib ools.jar; C:jdk1.2.2libdt.jar;.
如果是win98, 在autoexec.bat文件里设置path和classpath.
二、安装Enhydra
安装之前保证windows安装在C盘 ,Enhydra在WIN 2K下的安装和其他应用程序的安装没什么不同, 按步骤安装即可需要注意的是安装时需要确定JDK的安装目录.其他默认就可以了。 安装完成后会在c盘生成三个目录 :
bin,
usr
enhydra.
三、设置环境变量
确定enhydra安装目录,应该在usrlocal或enhydralocal下path里加上你的安装目录localenhydra3.0.1in; 因为在BASH shell里经常使用这个目录下的执行文件
classpath里加上你的安装目录localenhydra3.0.1libenhydra.jar;
Enhydra在WINDOWS下使用了UNIX bash shell 环境和command emulator, 操作和UNIX/linux相同。点击桌面的Enhydra Shell图标,打开一个SHELL,出现欢迎信息和提示符.
如下所示:
* c:enhydra>echo off
* -
* Welcome to The Enhydra Development Environment.
* Many thanks to the Cygnus group for the GNU tools...
* -
* Enhydra$
*------------------------------------------------------*/
在Enhydra$命令行敲入命令:ls -l
/*----------------------操作如下-------------------
* Enhydra$ ls -l
* total 7
* -rwxr-xr-x 1 0 everyone 177 Feb 17 1999 ENHYDRA.BAT
* -rw-r--r-- 1 0 everyone 2238 Jan 13 1999 Enhydra.ico
* -rw-r--r-- 1 0 everyone 967 Jan 14 1999 EnhydraShell_95_98.pif
* -rw-r--r-- 1 0 everyone 376 Jan 14 1999 EnhydraShell_NT.lnk
* -rw-r--r-- 1 0 everyone 186 Jan 13 1999 Install-License.txt
* -rw-r--r-- 1 0 everyone 524 Jan 14 1999 Install-Readme.txt
* drwxr-xr-x 4 0 everyone 0 Feb 24 2001 local
* Enhydra$
继续输入命令:
* Enhydra$ cd local
* Enhydra$ ls -l
* total 384
* -rw-r--r-- 1 0 everyone 785086 Feb 24 2001 Uninst.isu
* drwxr-xr-x 8 0 everyone 0 Feb 24 2001 enhydra-demos3.0.1
* drwxr-xr-x 14 0 everyone 0 Feb 24 2001 enhydra3.0.1
* Enhydra$
退出虚拟shell按ctrl+c。
Enhydra在windows下的使用和在Linux下的基本相同,只要把一些命令这个虚拟的unix环境下执行就可以了,在这里我们就不多作介绍了。
<淘宝热门商品:
来源:
程序员网
0 Responses to "JSP的环境引擎--Enhydra"
发表评论