默认情况下,在ubuntu feisty下安装tomcat5.5会出现问题,可以启动,但其实是假象。
sudo /etc/init.d/tomcat status
会提示没有运行。
安装方法:
sudo aptitude install sun-java6-jdk tomcat5.5
然后处理:
sudo gedit /etc/default/tomcat5.5
修改JAVA_HOME环境变量:
JAVA_HOME=/usr/lib/jvm/java-6-sun
之后运行tomcat,就出现上述问题。
问题的解决办法:
cd /var/log/tomcat5.5/
sudo rm catalina.out
sudo touch catalina.out
sudo chown tomcat55:nogroup catalina.out
sudo chmod uo-wrx catalina.out
具体请参考:
http://ubuntuforums.org/showthread.php?t=436295
http://cefn.com/blog/ubuntutomcat.html
https://bugs.launchpad.net/ubuntu/+source/tomcat5.5/+bug/118592
我们这边一直存在登陆问题,非常奇怪。
但是在后台可以登陆,在前台汇交元数据时也可以登陆。
但是别的中心都没有问题,问题可能是出在我们这边的结构上。
我们的网站是由2部分组成的:
DEBIAN负责oracle数据库和web proxy,WIN 2K3负责tomcat解析。
为什么采用这样奇怪的结构?
共享网的代码在WINDOWS上的TOMCAT解析没有任何问题,但是在DEBIAN上总是有问题。但是他们总中心也是在LINUX上布置的,真是奇怪。我估计是tomcat的policy导致的问题。
仔细浏览了代码,发现能登陆和不能登陆时的区别在于转向地址不同,估计是在servelet中进行了验证?
因此就直接对这部分代码进行了修改,修改后的代码:
String _pageURL=null; //当前访问页面的真实的UrL
String _replaceURL=_requestURL.replaceAll("xxxx:8080","westdc.geodata.cn");
if (_strQuery!=null){
_strQuery=URLEncoder.encode(_strQuery,"gb2312"); //这个必须编码呀,否则死的很惨
_pageURL=_replaceURL+"?"+_strQuery;
}else
_pageURL=_replaceURL;
就是做了一个字符串替换的工作。
另外一个问题就是无法汇交元数据,这个问题最后是糊涂的解决了(就是不知道怎么就好了)。
原文见http://blog.csdn.net/jwsh1984/archive/2005/02/09/284999.aspx
Tomcat是apache的一个子项目,也是一个开源项目,主要是用于J2EE web容器,由于是一个开源项目,在学习与开发测试中经常被用到(而目前商业最为经常用到的web服务器是BEA WebLogic)。在开源项目中,鼎鼎大名的apache基金会大家肯定有所了解,网站链接:http://www.apache.org/,而旗下的Jakarta Project 主要包括了Tomcat、Alexanda等Java项目,有兴趣者可看:http://jakarta.apache.org/。考虑到各位学习者的机器配置与学习成本问题,这里选了Tomcat作为我们学习与测试J2EE的环境
以下为一些基本配置:
一、先从网上下载tomcat,目前最新版本是5.57,下载地址是:http://apache.freelamp.com/jakarta/tomcat-5/v5.5.7/bin/jakarta-tomcat-5.5.7.zip,下载安装完后,在安装目录下有以下目录,主要介绍一下conf、common、webapps:
如果你现在等不急了,就想体验一下tomcat的魅力的话,把你的网页拷到webapps/ROOT目录下,然后再通过浏览器访问即可,默认如下格式:http://localhost:8080/你的网页
1)webapps文件夹主要用于web应用程序部署,比如你可以把你的应用程序包,如war文件拷到该目录下,容器会自动部署。
2)conf文件夹下主要是放置tomcat的服务器的相关配置文件
3)common文件夹主要是对容器全局变量的文件放置地方,如common/lib下就是放置一些需要全文配置的文件包。
二、j2ee的相关部署规范:
一般来说作为一个符合规范的web程序,会包括以下文件夹和文件:/WEB-INF/(主要是放置一些配置文件与不希望外部程序访问的隐私文件),在网络上是不允许访问该文件夹的,如当你输入以下http://localhost:8080/WEB-INF/的话就会出现错误。
在WEB-INF文件夹下有一个web.xml文件,这是对当前应用程序的相关设置,资源寻找等,/WEN-INF/文件夹下有个classes子文件夹,该文件夹是应用程序的根路径(等于是classpath的路径),/WEN-INF下还要有个lib文件夹,主要是放置需要引入的包,应用程序导入的包先从这里开始寻找,其次到容器的全局路径下$TOMCAT_HOME/common/lib下寻找。
以下是基本文件夹:
/tomcat
/common
/lib
/classes
/conf
/webapps
/ROOT
web.xml
/WEB-INF
/lib
/classes
/你部署的程序包
web.xml
/WEB-INF
/lib
/classes
三、容器的配置(server.xml)
到主目录/conf文件夹下server.xml文件是对web服务器的配置:
以下是一些常见的设置,http端口设置,找到以下:
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
把8080端口改为你喜欢使用的端口,如常见的80,以后你就可以利用该端口进行访问你的网站了:http://localhost:80 期中80是默认的,可以不写,其他的一下配置,可以参观相关的内容,入门就是这么简单。
web.xml为servlet的一些相关配置,可以参照一下规范。可以看我写的其他文章。
继续说一下server.xml文件的设置,
找到以下:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
....
</Host>
在他们之间可以添加一个<Context>元素,如:<Context path="/axis" reloadable="true" docBase="axis" workDir="webapps/axis/work"/>,其中属性path代表是网络访问的上下文路径,reloadable表示可以在运行时在classes与lib文件夹下自动加载类包,docBase属性表示你的应用程序的路径,在windows在如:docBase="E:\Sun\ axis",workDir表示是缓存文件的放置地点,可以方便跨平台移植时不用重编译。这样,你的应用程序就可以放到硬盘上的任意地方了。还有一个方法可以做到这点(推荐):编写一个xml文件,然后放到tomcat目录/conf/Catalina/<相应的网站>/目录下,如:现在我有个应用程序ACMEWeb,我编了一个文件ACMEWeb.xml内容如下:
<Context path="/ACMEWeb" reloadable="true" docBase="E:\eclipseproject\ACMEWeb" workDir="E:\eclipseproject\ACMEWeb\work" />
我把它放到了tomcat目录/conf/Cataline/localhost下,在浏览器打开http://localhost/ACMEWeb 就会转向我放在E:\eclipseproject\ACMEWeb下的程序了
四、关于taglib的修改:
(1)servlet-2.4之后,web.xml文件就有了一点修改。首先是声明命名空间:
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4"></web-app>
(2)其次是taglib,与传统的有所改变,对jsp的配置都被放置到<jsp-config>元素里了。可以使用Altova xmlspy打开web.xml文件,使用taglib的话,按照以下配置:
<jsp-config>
<taglib>
<taglib-uri>oscache</taglib-uri>
<taglib-location>/WEB-INF/oscache.tld</taglib-location>
</taglib>
</jsp-config>
安装:
sudo aptitude install tomcat5.5
若还要和apache2结合,还要安装:
sudo aptitude install libapache2-mod-jk
若没有配置JAVA环境变量,tomcat是无法启动的。
首先确认安装的JAVA位置:
sudo update-alternatives --config java
然后修改环境变量:
sudo nano /etc/profile
添加:
JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
JRE_HOME=/usr/lib/jvm/java-1.5.0-sun/jre
CLASSPATH=.:/usr/lib/jvm//java-1.5.0-sun/lib/tools.jar:/usr/lib/jvm/java-1.5.0-sun/lib/dt.jar
export JRE_HOME
export JAVA_HOME
export CLASSPATH
注意,我的jdk是安装在/usr/lib/jvm/java-1.5.0-sun这个目录下,这是ubuntu下的默认安装位置。
若安装了libapache2-mod-jk,则还需要进一步的配置:
sudo nano /etc/apache2/mods-available/jk.load
添加一行:
Include /etc/apache2/conf.d/jk.conf
sudo nano /etc/apache2/conf.d/jk.conf
其内容如下:
JkWorkersFile /etc/libapache2-mod-jk/workers.properties
# Where to put jk logs
JkLogFile /var/log/apache2/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# 将所有servlet 和jsp请求通过ajp13的协议送给Tomcat,让Tomcat来处理
JkMount /servlet/* ajp13_worker
JkMount /*.jsp ajp13_worker
JkShmFile /var/log/jk-runtime-status
<LocationMatch '.*WEB-INF.*'>
AllowOverride None
deny from all
</LocationMatch>
修改网站的配置,把index.jsp添加到默认首页。
重新启动tomcat/apache2。
安装并配置好APACHE2,TOMCAT5,JK之后,样例程序一直无法运行。
最后才知道是默认的context好像是设置在ROOT目录下,然后在HOST中添加一个CONTEXT就可以了:
<Context path="" docBase="" debug="0" reloadbable="true" />
1.install j2sdk 1.5
http://wiki.debian.org.tw/index.php/Java
2. 下载tomcat5的bin版本
wget ...
tar ...
mv ... /usr/local/
ln -s /usr/local/... /usr/local/tomcat
export JAVA_HOME=/usr/lib/j2sdk1.5-sun
/usr/local/tomcat/bin/startup.sh
3. 设置Mapserver
cp *.so /usr/lib/j2sdk1.5-sun/jre/lib/i386/
然后参考: http://www.unicolet.org/mapserver/tomcat.html