网站上线,虚拟主机遇到的问题!

来源:互联网 发布:数据分析经典案例 编辑:程序博客网 时间:2024/05/21 11:32

  最近在做公司网站,公司不用独立主机,于是在网上租用了虚拟主机,购买了mssql2005数据库。于是随之而来引发了一系列的问题。我们在公司的电脑上通过花生壳将网站映射到网络上,经过一个星期的测试是没有任何问题的,在这一个星期里均能对正常数据进行操作,于是我们项目编译之后的文件通过FTP上传到虚拟主机的根目录下,(当然这里要适当修改配置文件,需要修改连接数据库的地址和用户名,密码)

      OK,一切配置完成。通过网页重启TOMCAT ,发现数据库连接错误,经过排查之后发现hibernate.hbm.xml映射文件中配置错误..这些错误都是因为购买的数据库与原始开发数据库不同的原因,这里我开发的时候用的是sa这个超级用户,所以建成的表前都有dbo 如create table tb_user 那么实际生成的表名会显示dbo.tb_user,这个dbo就表示“所有者” 而我们购买数据库空间的时候,肯定不会是sa这个用户,因此要注意查看购买的数据库上面表的名称 讲hibernate.hbm.xml中的schema="dbo" 属性改成对应的名称.

  OK!修改之后数据库可以正常连接了.网站也可以正常浏览.欣慰一下。

  接下来过了一段时间,出现500错误,查找原因发现sql语句不能执行,原因是数据库连接断开了.重启tomcat,问题解决!可以一段时间后 重复的问题又来了!我KAO,我总不能守着网站,看到错误就重启吧?

  由于之前在公司电脑上用花生壳发布了一周都没有出现这样的问题,我开始怀疑这个是数据库的原因,但是研究了大半天始终毫无头绪,最后问提供虚拟机的客服,他们说我发布在花生壳上的数据库是不是没有重启过,确实,项目和数据库是同步的,当然没有重启过!但是一语惊醒梦中人,我去将公司电脑上的数据库重启,然后再访问网站,果然出现和上线之后同样的错误!我顿时烦了,这这这...你们公司有毛病,有事没事总重启数据库干嘛?害得我连接池的连接总是无效的,不错误才怪呢!

  可是这不是自己弄着玩,公司的任务还是得完成嘛,我回想以前学习的时候练手多好啊。实在搞不出来,就放下了..可现在我不能放,得硬着头皮解决啊!接着发了疯似的去google...最后发现在spring配置文件里可以先判断一下连接是否有效。这里先贴出来记录下:


Data Source URL:连接数据库的URL

JDBC Driver Class:Jbdc数据库的驱动名称
User Name:访问数据库的用户
Password:访问数据库的密码
Max. Active Connections:最大活跃连接数,指同时可以有多少个连接,设置为0没有限制
Max. Idle Connections:最大空闲连接数,表示没有数据库连接时,连接池也必须保持最大空闲连接数,设置为0没有限制
Max. Wait for Connection:连接建立等待时间,单位为毫秒,设置为-1无限制
Validation Query::此参数用来查询池中的空闲连接

testOnBorrow、 testOnReturn、testWhileIdle,这些属性的意义是取得、返回对象和空闲时是否进行验证,检查对象是否有效,默认都为false即不验证。所以当使用DBCP时,数据库连接因为某种原因断掉后,再从连接池中取得连接又不进行验证,这时取得的连接实际已经时无效的数据库连接了,只有把这些属性设为true,再提供validationQuery语句就可以保证数据库连接始终有效了

如果是mssql2005 按照我上面配置的方法就OK啦...

到了这一步网站终于可以一直被访问了。

开始在虚拟机上添加数据,过了一会又发现一个问题。添加数据的时候只要涉及到文件上传,就会被直接打到错误页面..根据以往的经验,我认定这个是struts2配置文件的问题,以前开发的时候出现这样的问题最后查出来是由于上传文件大小超过显示或者上传文件的内型与拦截器里面设置的不匹配。可是问题的关键是我在自己主机发布的时候同样也是没有问题的。然后我继续郁闷...这回偷了个小懒!我直接问客服的java技术经理说“我在自己公司发布了一个星期,功能都没有问题,上传到虚拟主机就出问题了,是不是和虚拟主机的配置有关?”于是我把sturts2的属性文件里面与上传文件有关的几条截图给他看:

struts.multipart.maxSize=9999999999999
struts.multipart.saveDir=/temp
struts.multipart.parser=jakarta

最后他跟我说把/temp改成/tmp  实际上/temp 这个只是struts2文件上传时的一个临时文件..我在其他机子上发布都是用temp这个文件夹名字的,都没有任何问题,于是我猜想他们虚拟主机上可能已经有个temp了,并且是不让写入的..我按照他说的修改后,文件果然可以上传了。

最后总结下:虽然以前学习的时候遇到问题可以放在一边,不会像现在这样硬着头皮去做去想去研究,确实在少点提升的机会。所以真正把技术变得扎实还是要用实战来锻炼。这里小欣慰一下..呵呵 解决了问题的喜悦真是无与伦比!开心ing...

ps:可能对于很多高手来说上面的不值一提..但是这是我的一个成长过程。呵呵..

ps:独立主机还是比虚拟主机好啊。什么样的环境都可以自己配置...

原创粉丝点击