ubuntu 12.04 tomcat 7: Could not get file lock

ubuntu升级后,tomcat也升级到7,最近突然发现tomcat的log里有这个错误:

2012-7-6 23:55:28 java.util.prefs.FileSystemPreferences syncWorld
警告: Couldn’t flush user prefs: java.util.prefs.BackingStoreException: Couldn’t get file lock.
2012-7-6 23:55:59 java.util.prefs.FileSystemPreferences checkLockFile0ErrorCode

搜索后,从这个站点得到解决方法,在ubuntu 12.04中,tomcat7运行的默认账号是tomcat7,tomcat7默认的家目录是/usr/share/tomcat7,这点可从/etc/passwd中得到证实:

tomcat7:x:119:126::/usr/share/tomcat7:/bin/false

因此,查看此目录的权限,发现是root,因此修改为tomcat7后,即可消除此错误:

sudo chown -R tomcat7:tomcat7 /usr/share/tomcat7

ubuntu feisty下的tomcat5.5问题

默认情况下,在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;

就是做了一个字符串替换的工作。

另外一个问题就是无法汇交元数据,这个问题最后是糊涂的解决了(就是不知道怎么就好了)。

Tomcat5.5的基本配置说明

原文见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端口设置,找到以下:

把8080端口改为你喜欢使用的端口,如常见的80,以后你就可以利用该端口进行访问你的网站了:http://localhost:80 期中80是默认的,可以不写,其他的一下配置,可以参观相关的内容,入门就是这么简单。
web.xml为servlet的一些相关配置,可以参照一下规范。可以看我写的其他文章。
继续说一下server.xml文件的设置,
找到以下:

....

在他们之间可以添加一个元素,如:,其中属性path代表是网络访问的上下文路径,reloadable表示可以在运行时在classes与lib文件夹下自动加载类包,docBase属性表示你的应用程序的路径,在windows在如:docBase=”E:\Sun\ axis”,workDir表示是缓存文件的放置地点,可以方便跨平台移植时不用重编译。这样,你的应用程序就可以放到硬盘上的任意地方了。还有一个方法可以做到这点(推荐):编写一个xml文件,然后放到tomcat目录/conf/Catalina/<相应的网站>/目录下,如:现在我有个应用程序ACMEWeb,我编了一个文件ACMEWeb.xml内容如下:

我把它放到了tomcat目录/conf/Cataline/localhost下,在浏览器打开http://localhost/ACMEWeb 就会转向我放在E:\eclipseproject\ACMEWeb下的程序了
四、关于taglib的修改:
(1)servlet-2.4之后,web.xml文件就有了一点修改。首先是声明命名空间:

(2)其次是taglib,与传统的有所改变,对jsp的配置都被放置到元素里了。可以使用Altova xmlspy打开web.xml文件,使用taglib的话,按照以下配置:


oscache
/WEB-INF/oscache.tld

ubuntu下安装tomcat5.5

安装:

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

AllowOverride None
deny from all

修改网站的配置,把index.jsp添加到默认首页。
重新启动tomcat/apache2。

install tomcat5 in debian sarge

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

debian sarge mapserver tomcat4

最简单方案


apt-get install gdal-bin libgdal-doc libgdal1 libgdal1-dev proj
apt-get install libgd2 libgd2-dev
./configure --with-gd=/usr --with-gdal=/usr/bin/gdal-config --with-ogr --with-proj --with-threads --with-postgis=/usr/local/pgsql/bin/pg_config
make

cd mapscript/java
make
make test
cp *.so /usr/lib/jni/
cp *.jar /usr/share/tomcat4/common/lib