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] 呼呼, 谢谢乐:)
|