分享
 
 
 

在Linux上构建Jsp环境

王朝java/jsp·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

老早就在国外的网站上看到Jsp(Java Server Pages)的介绍,说它如何如何的好, 如何如何的强大,可是只知道jsp这玩意不错,却一直没有机会用上。听说unix下 配置jsp环境颇为复杂,因此一直没敢去碰。后来在台湾的站点上找到了一份台湾老 写的在Linux下配置jsp环境的文章,如获至宝,于是就马上操刀上阵,想试试如何。

可惜照样子画葫芦未果。

于是到国内几个大的bbs内到处查找,寻访几个前辈,找到一些零碎的配置方法。 这些方法大都是gnujsp0.9x/1.0配合ApacheJser-1.x.x来运行jsp的,我都一一照样 进行配置,结果顶多是让ApacheJserv运行起来而已。一直无法运行jsp。

最后笔者决心自己独立将配置方法摸透,于是所有软件包都尽量从官方网站下载回来。 以下是笔者配置过程中使用到的软件包:

Apache_1.3.12.tar.gz (从www.apache.org下载)

ApacheJserv-1.1.2.tar.gz(从java.apache.org下载)

gnujsp-1.0.tar.gz(从教育网内获得)

JSDK-2.0.tar.gz(从教育网内获得)

JDK-1.2.2.tar.gz(For Linux版本,从freesoft.online.sh.cn及www.sun.com可下载)

经过连续8个小时反复琢磨gnujsp-1.0 中的安装文档以及综合手头几份安装文章, 还有从java.apache.org上下载的简单安装配置文章,笔者最后终于成功将jsp环境 配置成功并成功地运行了调用bean的jsp程序。

以下就安装和配置的原理、过程、注意事项以及关键点等进行详细描述。

一、配置要求

RedHat 5.x 或 6.x (笔者在TurboLinux 4.02/6.0 Bluepoint1.0/2.0 等系统中都顺利编译、配置通过)

JSDK2.0(其实就是需要一个 70多k的jsdk.jar)

gnujsp1.0(其实就是需要里面的jar文件而已)

JDK-1.x.x or JDK-1.2.x(两个版本都能够顺利通过编译和配置)

ApacheJserv1.0 or 1.x.x 编译需要的make,gcc等程序、编译器与函数库

二、基本配置原理

要让jsp能够正确解析并运行良好的话,需要确保ajp1.2(apacheJserv protocol1.2)

可以正常地在本地(local)端口8007通信,Servlet需要能够正常执行,并且要合理配置好Jserv的配置文件使gnujsp正确解析jsp文件。本文采用static(静态)编译方式编译 ApacheJserv。

三、基本步骤

首先要确保ApacheJserv正确编译并测试通过。然后正确配置ApacheJserv的配置文件,让gnujsp可以解析jsp文件。

以下是安装步骤示意图:

JDK-->JSDK-->apache(基本配置)-->ApacheJserv(配置/编译)-->apache(配置/编译/安装) -->gnujsp-->编辑ApacheJserv配置文件-->测试-->OK

四、详细过程

1、安装JDK

其实不存在什么安装,只需要将JDK拷贝到一个固定目录就可以了。这里笔者采用JDK-1.2.2的二进制版本。对于采用1.1.x的读者,如果是选择了static的方式 将Apache和ApacheJserv整和,出现故障的时候可以采用DSO模式(建议JDK-1.1.x版本的都采 用DSO模式比较好)。

#tar xfz JDK-1.2.2-linux-i386.tar.gz

#mv JDK-1.2.2 /www/JDK122

2、安装JSDK

和安装JDK道理一样,只需要解包后拷贝到一个固定目录就可以了。 不过要注意的是,这里实际上只是用到这个包的jsdk.jar文件,所以一定要知道这个文件的路径。

#tar xfz jsdk-2.0.tar.gz

#mv JSDK-2.0 /www/jsdk

#ls -l /www/jsdk/lib

total 80 -r--r--r-- 1 root root 76453 Jun 28 01:03 jsdk.jar

3、apache基本配置

这个其实并不能说是真正的配置,只是在第一次解包的时候要生成一些必须的.h文件才需要 的一步而已。相当于预配置。

#tar xfz apache_1.3.12.tar.gz

#cd apache_1.3.12

#./configure

#cd ..

这样就会生成了诸如httpd.h等的头文件。如果没有这些文件的话,以后配置ApacheJserv或者 Php3等都会报错的。

4、ApacheJserv配置与编译

这里需要使用的指令至少有:

--with-apache-src= (指定了apache源码的路径,用于static方式的编译)

--with-jdk-home= (指定jdk的根目录)

--with-JSDK= (指定jsdk.jar的目录,注意是大写的JSDK!!!)

至于其他的并不是一定要写,但是建议还是要指定诸如安装目录,jdk平台号码(1或者2)等。 其中java-platform是这样指定的:即如果使用的是jdk-1.1.x的就是1(默认是1,可以不写)。如果是jdk-1.2.x就指定是2。

#tar xfz ApacheJserv-1.1.2.tar.gz

#cd ApacheJserv-1.1.2

#./configure --with-apache-src=../apache_1.3.12 --prefix=/www/jserv >--with-jdk-home=/www/jdk122 --with-java-platform=2 >--with-JSDK=/www/jsdk/lib/jsdk.jar --disable-debugging

#make

#make install

#cd ..

5、Apache的配置编译

关于Apache的配置很多文档都有说明,这里就不赘述了。

#cd apache_1.3.12

#./configure --prefix=/www/httpd --activate-module=src/modules/jserv/libjserv.a

#make

#make install

6、gnujsp安装

其实只是需要gnujsp-1.0中的几个jar文件而已。

#tar xfz gnujsp-1.0.tar.gz

#mkdir /www/gnujsp

#cp gnujsp-1.0/lib/*.jar /www/gnujsp

#mkdir /www/gnujsp/bean_jsp

#ls -l /www/gnujsp

drwxr-xr-x 10 root root 4096 Sep 15 15:56 bean_jsp/

-rw-rw-r-- 1 root root 125972 Sep 15 12:55 gnujsp10.jar

-rw-rw-r-- 1 root root 153015 Sep 15 12:55 gnujsp10test.jar

-rw-rw-r-- 1 root root 37291 Sep 15 12:55 servlet-2.0-plus.jar

-rw-r--r-- 1 root root 38826 Sep 15 12:55 servlet-2.1.jar

7、Jserv配置文件的编辑

这个是jsp是否能够正确解析使用的关键,也是本文的重点。

关键点在于设置好jserv的相关文件:

jserv.conf

jserv.properties

zone.properties

或者新建立一个properties文件,编辑的顺序大概是:

jserv.conf-->jserv.properties-->zone.properties-->自定义的properties文件。

现在假设你需要定义一个叫gsp的zone,那么可以按照以下步骤和方法编辑相关内容:

*jserv.conf

在编辑这个文件前,请将"include /www/jserv/etc/jserv.conf"这句 添加到apache的httpd.conf文件内。文档中说这句话可以放到任何地方,不过经过实践发现:最好还是放到httpd.conf的末尾!!!!!

你可以这样运行:

#echo "include /www/jserv/etc/jserv.conf" >> /www/httpd/conf/httpd.conf

做好后,再用例如vi编辑器编辑jserv.conf。如果你想记录(log)jserv的所有动作,那么最好是允许log,去掉以下语句注释:

ApJServLogFile /www/jserv/logs/mod_jserv.log

然后找到"# Mount point for Servlet zones"这行,这里是定义Servlet zones 的mount点的(类似linux的安装点)。我们加入以下这行:

ApJServMount /gsp /gsp

接着找到ApJServAction关键字,加入以下这行:

ApJServAction .jsp /gsp/gnujsp

这个是定义了.jsp文件是给gnujsp解析的。这样jserv.conf文件就基本设置好了。

*jserv.properties

这里要设置一下wrapper.classpath,找到wrapper.classpath关键字,添加以下这行:

wrapper.classpath=/www/jdk122/lib/tools.jar

接着找到"# Servlet Zones parameters"这行,修改zones=root成为:

zones=root,gsp (添加gsp这个zone)

接着下面几行在 root.properties=/www/jserv/etc/zone.properties后添加定义gsp的properties行:

gsp.properties=/www/jserv/etc/gsp.properties

基本上jserv.properties就设置好了。

*gsp.properties

至于zone.properties就不需要设置,因为这里定义了一个新的zone-->gsp,起作用的是gsp.properties。

找到: # List of Repositories 这行,然后添加以下几行:

repositories=/www/gnujsp/gnujsp10.jar

repositories=/www/gnujsp/servlet-2.0-plus.jar

repositories=/www/gnujsp/bean_jsp

其中第三行是定义了bean的响应目录,这个目录可以随便定义。但是必须是真实存在的。

找到"# Servlet Aliases" 这行,添加别名行:

servlet.gnujsp.code=org.gjt.jsp.JspServlet

servlet.gnujsp.initArgs=checkclass=true,\(请注意不要断行回车)

<pagebase=/www/httpd/htdocs,scratchdir=/www/httpd/jsp,\(请注意不要断行回车)

<debug=true,compiler=builtin-javac -classpath

%classpath%:%scratchdir%:/www/gnujsp/servlet-2.0-plus.jar

:/www/gnujsp/gnujsp10.jar

:/www/gnujsp/bean_jsp -d %scratchdir% -deprecation %source%

其中第二行开始到最后结束其实是同一样,由于篇幅问题才加入了换行符号。 请大家一定要注意尽量使用同一行!!!!!!!,并且注意其中的符号不可以缺少任何一个。

其中一些参数做一下解释:

pagebase意思是允许解析jsp文件的起始目录。

scratchdir是生成的.java 和.class文件的临时目录。

请大家一定要注意这个目录必须对nobody是可写的!!!所以必须用chown命令将这个目录的owner和group改成nobody。

其后的是classpath是定义搜索的路径,其中要包括bean的目录,否则没办法使用bean的。另外你也可以增加多几个类似的目录,但是必须在以上文件中都要有定义。

至此:基本的设置就全部完成了。接下来就可以进行测试了。

8、测试

首先,确定你已经重新启动了apache使所有设置生效。然后可以在浏览器里输入“http://localhost/gsp/Hello”,如果出现:

Example Apache JServ Servlet

Congratulations, ApacheJServ 1.1.2 is working!

那么说明servlets运行正常。 然后,就是创建一个test.jsp的文件:

<html>

<body>

<h1>The Famous JSP Hello Program</h1>

<% SString s = "GNUJSP"; %>

The following line should contain the text "Hello GNUJSP World!".

<br>If thats not the case start debugging ...

<p>Hello <%= s %> World!

</body>

</html>

然后放到htdocs目录内,并运行。如果正确被执行的话说明一切都基本正常了。

接下来测试一下gnujsp支持中文是否正确。将以上的test.jsp文件修改成中文的字符就可以看出是否正确了。笔者的实验中发现gnujsp对中文支持很不错,不需要任何补丁。

五、注意事项

在详细步骤中笔者也强调多次了。这里再强调一次。这些也是成功的关键点:

第一次解包apache后要先运行configure以产生相应的头文件。

创建的scratchdir目录必须是对任何人都是可写的,用nobody的owner。

对于要使用bean目录必须也在gsp.properties中定义好,而且需要使用的 bean组件必须放到你指定的bean目录中。

不需要对系统的path进行修改,一些文章说需要修改,其实并不需要,因为配置文件中有classpath。

(6)结束语

本文之所以将并不是非常复杂的配置过程和原理阐述得如此详细,就是希望读者阅读后能够正确配置jsp环境,不要再为jsp环境头疼了。其实除了采用这 个方案外,还可以采用tomcat,jrun等等。gnujsp只是一个廉价的方案。性能和 功能并不是很好。

笔者还编写了一个简单的安装脚本,帮助读者更加方便地安装配置jsp环境。 详细可参考笔者另外的文章。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有