Huihoo.org - Open Enterprise Foundation

 Last Modified: 2003.04.12

Enhydra在Windows下的安装配置


作者:FALSE ASP中华网

Enhydra简介

Enhydra是open source的 是运行在应用服务器上的中间件产品。基于J2EE标准.

支持Java Servlet 2.2 API 和Java Server Pages (JSP) 1.1 API. XMLC classes的动态编译包括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文档。

STEP1----安装JDK

首先需要JDK1.2以上的版本,可以到http://java.sun.com/products/jdk去down (如果你已经在你的机器上安装了JDK, 跳过这一步) 在机器上安装JDK, 如果是win2000在控制面板里的SYSTEM中设置环境变量path和classpath 例如:

path= c:\jdk1.3.0_01\bin;c:\jdk1.3.0_01

classpath=c:\jdk1.3.0_01\lib\tools.jar; C:\jdk1.3.0_01\lib\dt.jar;.

如果是win98, 在autoexec.bat文件里设置path和classpath。

STEP2----安装Enhydra

可以到http://www.enhydra.org/software/downloads/index.html.
或http://www.lutris.com/products/index.html获得你需要的产品版本
我使用的是Enhydra3.0,,安装之前保证windows安装在C盘,Enhydra在WIN 2K下的安装和其他应用程序的安装没什么不同, 按步骤安装即可,需要注意的是安装时需要确定JDK的安装目录.其他默认就可以了。安装完成后会在c盘生成三个目录 :
bin,
usr
enhydra.
------环境变量
确定enhydra3.0.1安装目录,应该在usr\local或enhydra\local下path里加上你的安装目录\local\enhydra3.0.1\bin;因为在BASH shell里经常使用这个目录下的执行文件
classpath里加上你的安装目录\local\enhydra3.0.1\lib\enhydra.jar;Enhydra在WINDOWS下使用了UNIX bash shell 环境和command emulator,操作和UNIX/linux相同. 如果你对UNIX下的命令不熟悉,没关系这里也只用到了几个。
ls列出目录和文件(也可以使用dir)
mkdir 建立目录 (相当dos下md)
rmdir 删除空目录(相当dos下rd)
rm 删除文件(相当dos下del)
cp 复制文件(相当dos下copy)
当然如果不喜欢使用命令, 也可以在windows下对目录和文件操作。
点击桌面的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$
*-----------------------------------end ------------------------------------
继续输入命令:
/*---------------------------操作如下---------------------------------------
* 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$
*------------------------------------end------------------------------------
现在让我门先看看DEMO
BTW:注意一下enhydra安装所在目录, 可能会与我的不同,同时注意下面我输入的命令
/*--------------------操作如下----------------------------------------------* Enhydra$ cd enhydra-demos3.0.1
* Enhydra$ ls
* README dist logs start
* apps index.html media store
* configure lib multiserver.conf user_store
* Enhydra$ ./start
*--------------------------end----------------------------------------------然后窗口出现一大堆信息, 呵呵, SUCCESS
来看看http://localhost:9050/
进入admin console提示输入用户名和密码
username是admin
password 是enhydra
里面有些酷酷的程序,不过这里我打算暂时不涉及这些程序的编写方法说明,只是给个印象,知道一下这种用法。继续跟着我往下走,路还长着呢~~~~~~~~
退出: 激活shell窗口,按ctrl+c ,呼呼, GO ON。。

STEP3----开始Enhydra

进入enhydra3.0.1目录,如果enhydra安装在/usr/local下
cd /usr/local/enhydra3.0.1
如果enhydra安装在/enhydra/local下cd /enhydra/local/enhydra3.0.1然后输入./bin/multiserver如果已经设置了path环境变量,直接在命令提示符下输入multiserver并回车,这样就会在窗口输出一些信息,主要是显示监听的几个端口信息我这里output监听四个ports:
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里修改。呵呵,剩下的事情就交给各位乐。(最好仔细看看配置和状态信息, DEMO和这部分对于学习Enhydra是很有帮助的^_*)
退出: 激活shell窗口,按ctrl+c

STEP4----建立我们自己的应用目录

首先建立一个目录(随意建到哪里)
例如:建立一个test目录
在enhydra$提示符下输入命令: mkdir test
然后回车 列出目录ls –l
/*-------------------------操作如下---------------------------------------------------
Enhydra$ mkdir test
Enhydra$ 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
Enhydra$
*--------------------------end-----------------------------------------------------------------------*/
呼呼, 休息一会先, 累了.

接着 command~~~~
cd test
newapp test

/*------- --------------操作如下--------------------------------------------------
Enhydra$ cd test
Enhydra$ newapp test
Creating new tree for Enhydra application test in .\test ...
Done.
Enhydra$
*-------------------------end----------------------------------------------*/
这样建立了个应用程序的目录test
是application root directory(等会要用到)
让我们看看都有什么
/*-------------------------操作如下--------------------------------------------------------------
Enhydra$ ls
test
Enhydra$ cd test
Enhydra$ 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
Enhydra$
*--------------------------------end-------------------------------------------------------*/
OK, 继续
/*****************************************************************
Enhydra$ cd test
Enhydra$ ls
Makefile data start
Test.java multiserver.conf.in test.conf
business presentation
*******************************************************************/
建立application, 在命令行输入make
关于make,我想还是把ENHYDRA文档里的原文贴出来好些.
The top-level make file, Makefile, contains directives that tell make to recursively descend the application directory tree, following the directives of the make file in each sub-directory. It also has an INCLUDE directive that references config.mk, which in turn references <enhydra_root>/lib/stdrules.mk, a large make file shared by all Enhydra applications.

When you build the application, make compiles the files in the simpleApp/simpleApp source directory and creates a corresponding directory structure in the classes directory. It then combines those classes into a jar (Java archive) file and places the jar file into the output directory along with the configuration files needed to run the application.

*说明一下,由于前一部分是在公司的机器上(win2000)写的,
*而下面是在我自己的机器上(win98)写的,
*所以path和classpath不太一样,
*而且enhydra的安装路径也不一样。
*看到有什么不同的话,不要骂哦, 操作过程其实是一样的
请原谅。(本来还有在LINUX下的,就不贴了,怕大家头晕扁我^_-)

/*-----------------------------操作如下------------------------------------------------------------------------------
Enhydra$ make
CLASSPATH=../classes\;/usr/local/enhydra3.0.1/lib/enhydra.jar\;\;..\;/usr/local/
javacc1.1/JavaCC.zip\;\;.;D:\jdk1.3.0_01\lib\tools.jar;D:\jdk1.3.0_01\lib\dt.j
ar;D:\jdk1.3.0_01\lib\enhydra.jar

Build Started Fri Mar 30 10:51:00 2001
+ /usr/local/enhydra3.0.1/bin/xmlc -d ../../classes -class test.presentation.Wel
comeHTML -generate both Welcome.html
Adding to JAR classes: Enhydra.gif
+ //d/jdk1.3.0_01/bin/javac -d ../../classes -g Redirect.java
+ //d/jdk1.3.0_01/bin/javac -d ../../classes -g Welcome.java
+ //d/jdk1.3.0_01/bin/javac -d ../classes -g Test.java
cp test.conf ../output/test.conf
rm -rf ../output/multiserver.conf
sed -e s%@OUTPUT@%`cd ../output;pwd`%g \
< multiserver.conf.in > ../output/multiserver.conf
rm -f ../output/start
cp start ../output/start
chmod +x ../output/start
Enhydra$
*--------------------------------------------------------------------------*/
如果这里出现错误,检查一下classpath是否设置正确
你的classpath里需要enhydra.jar这个package

现在让我们看看application root directory, 也就是前面说的test目录
Enhydra$ cd ..
Enhydra$ ls
Makefile README classes config.mk output test
Enhydra$
对比一下, 可以看的出来多出两个目录, 没错,MAKE在application root directory方向上建了两个子目录classes和output
test目录:
Thetest sub-directory contains the source code for the application. It is divided into three sub-directories for the business, data, and presentation layers. The business and data directories are empty in the new application. The presentation directory contains java, html, and media files.
Class目录:
The classes sub-directory contains the application's compiled Java classes in their package hierarchy, and any associated media files such as .GIF files.
/**********************************************************************************
*******上面的这些英文内容不在本次所写范围之内,所以没有详细的介绍,**************
**********************************************************************************/
Output目录:
用来放运行你的应用程序所需要的几个配置文件(进入这个目录看看就知道是WHAT啦)
---multiserver.conf Multiserver配置文件
---AppName.conf(这里是test.conf)application配置文件
---start start script
好了,让我们运行一下我们刚建立的application
/*-------------操作如下----------------------------------------------------------------------------
Enhydra$ cd output
Enhydra$ ls
multiserver.conf start test.conf

Enhydra$ ./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.

*---------------------------end--------------------------------------------------------------------------*/
默认情况下监听9000端口。
现在我们可以应用这个APPLICATION乐,
在IE或NETSCAPE里输入http://localhost:9000/
看到了吧
这是个动态产生的presentation object (po) 文件.
不过好象不大懂唉,
没关系, 如果以后有时间, 我将write的深入一些.名字就叫《剖析Enhydra application》,呵呵。

STEP5----建立WEB应用程序目录

Enhydra 作为JAVA APPICATION SERVER,怎样让我们刚刚建好的
application目录运行编写的jsp和servlet的呢???
写了这么长,现在就让我们开始吧。。。。 是不是有点晕呢?
应该不会吧, 我写的多详细啊~~~~~~~哈哈哈
写两个例子测试一下Hello.jsp和HelloWorld.java
sigh, 多么经典的HelloWorld................

/**********Hello.jsp(jsp文件)**********************
************COPY********************************
<html>
<head><title>hellworld</title></head>
<body>

<%
out.println("<font size=5 color=blue>HelloWorld!!!</font>");
%>

</body>
</html>
************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("<html>");
out.println("<body>");
out.println("<head>");
out.println("<title>Hello World!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
out.println("</html>");
}
}

************END*************/
使用我们刚才在STEP 4建立的test application root目录
(当然你可以不用自己建的目录, 直接使用enhydra3.0.1目录, 步骤差不多。)
但是这两个文件应该放在什么地方? 别急, 一步步来。
首先我在/usr/local/test/test下建立了一个webapps目录

/usr/local/test/test就是在STEP4建立的,这个是我在win98下建立的
STEP4是我在win2000下把test建到/enhydra/local/denhydra3.0.1/test/
两者只是把test目录建到不同的方向。前面我已经标出来了,Sorry.

目录结构:
webapps
|_____jsp
|_____servlet
|_____web_info
|______classes
|______jsp


可以根据这个结构自己建目录.......
呵呵, 不管了,现在怎么简单我就怎么写了

现在把前面的hello.jsp放到jsp目录下。
HelloWord.java放到servlet目录下, 然后用javac 编译这个.java为.class文件
到web-info下的classes目录里,
(等一等,事情还没有结束呢。各位不要跑,坐好!!!^^)
现在让Multiserver Admin Console来管理应用程序。

把/enhydra3.0.1/apps/multiserverAdmin.conf这个文件copy到/usr/local/test/test/output.
操作:
在shell窗口下
cp /usr/local/enhydra3.0.1/apps/multiserverAdmin.conf /usr/local/test/test/output
在windows下, 用过微机的都会。

然后用记事本或者其他文本编辑工具打开c:\usr\local\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
把前面的#号去掉,保存.
然后在shell窗口/usr/local/test/test/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/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
运行刚才我们建的两个文件。
如果想结束这个APPLICATION的运行,激活shell窗口 按CTRL+C

然后输入exit 再关闭这个窗口

还有很多内容本文没有涉及到, 比如和apache或iis挂接在一起,jdbc、DODS GUI 、XMLC、Enhydra和jbuilder结合等等.这些内容留给各位去完成了。
详细请看Enhydra的DOC,在enhydra3.0.1/doc目录下。


由于我的水平实在是不怎么样, 难得您老人家一直看到这里~~~~~惭愧啊惭愧。
如果您有什么心得, 麻烦也告诉我一下 mailto [email protected]
呼呼, 谢谢乐:)