在tomcat上部署java项目本来觉得挺简单的,但是遇到若干问题,总结下。
1、启动时候报错
JSR 356 WebSocket (Java WebSocket 1.1) support is not available when running on Java 6. To suppress this message, run Tomcat on Java 7, remove the WebSocket JARs from $CATALINA_HOME/lib or add the WebSocket JARs to the tomcat.util.scan.DefaultJarScanner.jarsToSkip property in $CATALINA_BASE/conf/catalina.properties. Note that the deprecated Tomcat 7 WebSocket API will be available.
这个不影响启动项目
2、启动报错Cannot run program。。。 Permission denied
网上说:
tomcat启动报错Cannot run program "/Users/horse_leo/Documents/apache-tomcat-7.0.75/bin/catalina.sh" (in directory "/Users/horse_leo/Documents/apache-tomcat-8.0.18/bin"): error=13, Permission denied
从英文可以看出是权限不足,
解决办法,命令行进入tomcat的bin根目录,执行chmod 777 *.sh问题解决
修改后okul 06, 2017 10:57:37 AM org.apache.catalina.startup.Catalina stopServer
SEVERE: Could not contact localhost:8005. Tomcat may not be running.
Jul 06, 2017 10:57:37 AM org.apache.catalina.startup.Catalina stopServer
SEVERE: Catalina.stop:
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at java.net.Socket.<init>(Socket.java:425)
at java.net.Socket.<init>(Socket.java:208)
at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:450)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:400)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:487)
网上说
这个问题是Tomcat内存导致的,可以修改下Tomcat内存,切换到bin目录下面,使用
vi catalina.sh
修改catalina.sh文件,在位置cygwin=false前,插入以下内容
JAVA_OPTS="-Xms512m -Xmx1024m -Xss2048K -XX:PermSize=256m -XX:MaxPermSize=512m"
重启Tomcat即可。
但是我修改了后依然有这种问题,
ps -ef|grep 端口号 发现没有进程再跑,于是知己启动ok,没有再跑,说明tomcat已经停了
4、修改tomcat访问端口号
修改 conifg下的server.xml,为避免和别的服务器冲突,涉及到的端口号都需要该
5、修改tomcat的访问应用地址
正常情况下,tomcat默认访问的是webapps下的项目,在server.xml中如下
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
如果你想让tomcat访问本目录下的项目,修改appBase即可,如果是加载tomcat以外的项目,需要config下的Catalina下的host中添加一个xml,记录你的项目地址
<Context path="/bllweb" docBase="/app/tomcats/wl_bllweb/bllweb" reloadable="true" />
当然,网上也说可以在server.xml中直接增加
<Context path="" docBase="$Tomcat/webapps/ROOT" />
但是我没试不知道是否正确
我修改了 <Context path="" docBase="myapp" />因为没有app文件所项目启动不报错,但是却启动不起来。
解释下:
这个里面的name表示的是访问本地的localhost地址,appBase表示项目指定的父位置;path是说明虚拟目录的名字,如果你要只输入ip地址就显示主页,则该键值留为空;docBase是虚拟目录的路径,它默认的是$tomcat/webapps/ROOT目录!