raksmart活动促销

分享

写回答

发帖

godaddy之tomcat攻略

互联网出海创业 互联网出海创业 4567 人阅读 | 5 人回复

发表于 2008-12-27 12:04:28 | 显示全部楼层 |阅读模式

  国外的godaddy提供jsp空间,价格比国内的便宜很多,而参数却好得多。例如,它的delux方案,150G空间+1500G流量+25个mysql数据库,国内的jsp空间最大的通病是数据库太小。50M的数据库基本上存不了多少东西。
  类似的服务还有lurnpage的等,eatj提供免费试用的jsp空间,空间里的tomcat是独立的,你可以控制tomcat的重启。一般的共享型虚拟主机是不分配独立tomcat的,因为这样浪费了太多的内存。我在eatj上试了一下我的应用,在免费空间上运行得很好,但网上的统计数据显示我用了68MB的存储器空间,随着网站的运行,估计内存还会持续增长,但eatj的参数里限制了内存使用为64MB。
  godaddy的一些特性:tomcat的版本是5.0.27,mysql可选5.0或4.几的版本,apache的版本是1.3.3,apache缓存了所有的.htm文件,.htm类型文件不经过tomcat处理就直接返回给了客户。最好开发的时候,搭建和此一样的环境,tomcat5.0.27必须在tomcat项目的源码库里才下载得到。tomcat每天重启一次,时间是美国时间凌晨1点,也就是中国的16点钟,但实际上,我观察到的改变是在18点之后。正因为如此,class文件的改变只能在每天重启后生效,但jsp文件却能立即生效。这意味着你每天只能调试一次。
  godaddy不允许往服务器上写文件,虽然文件系统根目录下的/tmp可以写,但读出时仍然可能出错,看似服务器缓存了文件,不能即时反应文件的改变。总之不要利用文件系统做任何事情,以数据库代替。
  数据库连接的时候加上useunicode,characterset=utf-8,因为如果不这样的话,Blob型字段读写会出错。因为数据库与应用之间传送Blob型二进制数据时,把某些字节进行了反斜线+字符的转码。
  开发框架可以用,但要谨慎,这种共享型主机一般都对内存限制,象spring这种耗内存的框架不要用。看看spring所依赖的庞大类库就够吓人的。而实际上,Spring对WEB开发的作用不大。Spring建议用singelton的方式产生所有类的实例,而jsp容器出于节省内存的目的,更希望你的类是在"request"作用域,好让它用完了就回收。我的网站没有使用Spring,但,设计的时候由于IoC技术的煽动,使用了同样支持IoC的JSF技术,但实际上,我现在想把JSF都去掉,直接用JSP实现。JSF看起来不够稳定,因为JSF在每个带form的页面请求送到服务器时,都尝试恢复缓存在服务器上的一个UIROOT,但http协议本身是没有状态的,非要做到有状态是会有问题的。而且JSF基本不支持url后带参数,常常会有很多麻烦,但这是web开发的基本需求。而且jsf的致命弱点是:你几乎不可能对jsf的页面进行美化。jsf的ui控件的编写需要太专业的知识。
  我的网站用了hibernate,但我同样比较后悔。千万不要迷信hibernate的面向对象的诱惑,在高速数据处理领域,面向对象只是累缀。说到面向对象,当然得使用hibernate里的多对一、一对多、多对多关系,但实际上,实际使用中几乎不可能用到它。因为它的速度实在是太慢了。举个例子 ,学生对象实例里有个老师类的集合,而老师对象会包含老师的多方面的信息。页面上本只要显示一下老师们的姓名就行了,但通过学生取得老师,hibernate在后台做的却是把老师的所有信息都取出来了。这个例子可能不很明显,如果实际做网站,你就会发现,hibernate的关系什么用都没有,使用它只能是慢如蜗牛。hibernate比原生jdbc还是有较大简化,如果使用hibernate,我建议不要建任何关系。我觉得iBatis是个很好的替代品,但我没有亲自尝试。
  用hibernate时常会出现cannot open connection的情况,可能是由于后台数据库太繁忙引起的,我没有找到根本的原因,但我用一种替代方式解决了这个问题,那就是catch org.hibernate.jdbcException,如果捕获到了,我把session关掉,再索取一个,然后重新执行我的逻辑。尝试次数为4,超过4次,我就不尝试了。
  我在程序中不关闭sesssion,做了一个filter,在响应发送到用户之前关闭hibernate session。我做了个listener,负载hibernatesessionfactory的创建。因为我发现,如果不在此创建,而是在首次调用单例的HibernateSessionFactory时,创建sessionFactory是不成功的,我不知道是为什么。还有,我的hibernate代码里,不能使用session.load()方法,延迟加载看来是无效的。
  开发框架的诸多问题,是不是让你很迷茫呢?这方面的书是如此之多!但实际上,有经验的熟手会告诉你一些真相,真正工业级的应用是不使用这些开发框架的,越是简洁的实现,越能体现速度,也越容易调试。诸多开发框架陡峭的学习曲线,使得你的调试过程是很漫长的。
  似乎只有struts1.x被广泛应用,是事实上的标准。但我没有用过,没有发言权,只是给你一个建议。
  有时,我们会发现,tomcat返回的是一个空白页面,出错信息不见了,这是因为我们的filter里捕捉了异常,私自处理掉了,没有上抛给tomcat,导致tomcat并不知道发生了异常,改正方法就是不捕捉异常。需要finally的话,直接用try finally配对。
  本人的网站http://www.busquery.com.cn调试了三个月,才基本可行,有兴趣可以到我的站点去看一下,我的站点上提供手机用的免费公交查询软件下载,以及站上公交查询等功能。尤其“公交宝典”软件是目前手机上最快的公交查询软件,不可不试,否则你会后悔的。

回答|共 5 个

kingto

发表于 2008-12-27 16:11:21 | 显示全部楼层

lz网站错位了

ffnn

发表于 2008-12-27 18:33:44 | 显示全部楼层

好像和以前紫鱼出的一样问题,
RAKSmart

waluojia

发表于 2009-1-5 17:14:54 | 显示全部楼层

收下了,正需要,因为最近在研究JSP程序。
RAKSmart

lenovohutao

发表于 2009-1-5 19:49:18 | 显示全部楼层

嘻嘻不错嗾照收

sevenstar

发表于 2009-7-9 15:24:06 | 显示全部楼层

收藏。最后一段有广告之嫌,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则