阿里云服务器低jdk版本配置多项目

来源:互联网 发布:淘宝商城品牌旗舰店 编辑:程序博客网 时间:2024/06/05 05:15

前两天要将一个新项目部署到阿里云服务器上,过程中遇到好多困难,可惜当时没有做好记录,没有把具体遇上的异常记下来。现在趁着还没忘完过程,赶快先写下来,希望能节约以后我和遇到相同问题的人的摸索时间。

由于遇上了多方面的问题,不能针对某一专题进行讲解,所以我将整个流程讲一遍,遇到的问题都会一一讲出。


我项目的开发环境以及开发工具如下:

jdk1.80111,tomcat8.5

struts2.5,hibernate5.10,spring4.23

数据库:mysql5.3

现在难点在于公司的官网也部署到了这个服务器上,所以不能随便更改阿里云上的开发环境,也不能随便停止上面的项目。

所以我现在要做的是同一个tomcat设置多项目


阿里云服务器上的开发环境如下:

jdk1.6u43,tomcat7.072


我直接将项目放到webapps目录下发现不行

在网上查了查,tomcat的配置修改如下:

配置文件在tomcat的conf目录的server.xml

1.

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

的post由8080改为80,阿里云上的配置之前已经改过了,所以我这一项不用再改。

2.(接下来网上说

<Engine name="Catalina" defaultHost="localhost">

这一项要改,但我亲测这一项不用改) 的localhost改为域名如www.xxx.com(注意,带www和不带访问时的网址也是不一样的)

appBase改为项目所在地。我把项目A放到d:/下面,(注意,我开始直接放的时候查看日志发现报错,必须将项目放在ROOT文件夹下面)

即项目目录是:

d:/A/ROOT

web-inf

...

这样的结构。

别的不用改,这样就配置好了。


重启tomcat(步骤:tomcat bin目录下先用shutdown.bat关闭tomcat,再用startup.bat启动),

tomcat窗口一闪而过,查看日志发现报错,信息是socket bind failed之类的信息错误码[730048]。这是由于端口占用导致的重启失败。在控制台cmd使用netstat -ano,发现80端口确实被占用,不过pid为0.这让我怎么kill。估计是之前tomcat shutdown时候没关闭干净。

等了一会儿,端口占用解除,重启tomcat。

本以为见证奇迹的时刻到了。结果又报错了。

发现spring注入sessionFactory失败。

顺着日志向下查,发现由Unsupported major.minor version 52.0造成。这是由于我项目的jdk版本高,而环境的jdk版本低造成的。


我重新在我电脑上配置了与服务器上相同的环境,重新编译。由于eclipse没有换,默认的编译器还是1.8.这个需要修改,从eclipse项目的properties里面找到java compiler由1.8换为1.6.重新编译。

您猜怎么着?又报错啦!

这次是Unsupported major.minor version 51.0.报错的是struts的库。

我猜是struts2.5不支持jdk1.6。所以又下载了struts2.3,配置,完成后还报错。

这次是找不到org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter

原来struts2.5和2.3在web.xml里面的配置的filter不一样。看一下包目录结构。发现struts2.3的包目录中间多了个ng。

另外struts.xml里还有一些配置需要改。

修改后运行,又报错了。

这次是由于jdk1.6对于一些后面的新特性不支持。比如,我方法返回类型是int的但实际返回时serilaizable的类型在jdk1.6里不能强制转换为int。将返回值强转成Integer就可以了。

另一个就是jdk1.6里new ArrayList<>()这样的<>里不能为空,添加上就好了。

重新运行,这次可以了。

项目部署到服务器上,修改数据库密码等配置,重启,运行。

登录阿里云,到管理控制台页面,找到域名这项,将自己的域名解析到上面,通过审核后,项目就可以在外网访问了


成功,Cheers!

(我把期间的一些重点用加重字体标了一下,希望对大家阅读有帮助)

0 0