Godaddy共享主机JSP/Java支持的体验经历 Godaddy 超市
来源:asp之家 发布时间:2010-04-07 13:17:00
最近体验了一下Godaddy共享主机上的Jsp/Java支持,感觉相当糟糕。竟然不支持struts的应用,至今尚未完全搞明白Godaddy是如何设置,达到不支持某一个框架的。现在说说我的体验经历,希望有志同道合者一起讨论,共同寻找解决办法。
最初的想法是,测试一下Godaddy对Jsp/Java的支持如何,希望能把自己写的一些小的应用放在上面。 鉴于自己对struts比较熟悉,于是用struts写了个Hello World,简简单单的一个action,为了能和Godaddy的环境尽可能的一致,特地下了个5.0.28的tomcat(godaddy是5.0.27,没找到这个版本的)测试了一下,一切ok。
于是把这个helloworld打成war包,上传到主机,等待……(godaddy的共享主机的tomcat每天夜里1点左右重启,是北京时间的下午4点左右)终于蛋孵化出来了,于是输入url测试,出现报错,说是servlet action not found之类的(具体记不清了)。第一次就出现报错我并不惊讶,因为是第一次,可能哪里忽略了(真正令我惊讶的是后来经过不断测试,发现问题依然存在,网上搜索也只见问题,并没有哪里解决了的), 于是我多写了几个页面,有带action的,有不带action的,测试测试,结果发现不带action的jsp是可以显示的,而带action的jsp就报错。难道是web.xml哪里写错了,导致配置没有读入?不对啊,本地测试都可以的,没道理godaddy就不行啊。其间,又把web.xml的相关配置init parameter,load on startup修改了一下,测试还是老样子。(每次修改核心文件都要等下次tomcat重启,佩服自己真有耐心)
我曾经看到有人说godaddy的共享主机不支持struts,但是我想只要是同样的tomcat(虽然我的版本与他有细微差异),哪有不支持struts的。我于是我发邮件给godaddy的support,答复大概说共享的linux主机不支持struts,如果要支持请都买独立主机(我晕)。
godaddy到底是通过什么来限制struts的呢?我们有什么办法可以绕过这个限制呢?
首先,我想到的是tomcat启动时,会从WEB-INF/lib里的jar文件加载class,是不是godaddy在tomat的设置里屏蔽了struts有关的jar包,经过检测(起初是在jsp里通过Class.forName()来检测,后来发现可以通过从application中获取相应attribute可以得知加载了哪些jar),发现并没有屏蔽,jar文件都加载了。既然没有屏蔽jar(后来想想其实jar文件的屏蔽检测是没必要的,如果jar文件没有加载,那应该会有class not found的错误),那么会不会是屏蔽了struts-config.xml呢,于是把struts-config改了个名字,测试还是不行。
现在记不清在哪一步改动之后,servlet action not found之类的错误没了,换成了module “null”之类的错误。 既然也不是struts-config引起的,那就剩下servlet-class org.apache.struts.action.ActionServlet了,是不是屏蔽了这个类呢?于是我写了一个类,继承自ActionServlet,并且覆盖了init(),doGet()方法,加了一些代码来debug。代码如下:
@Override
?
public void init() throws ServletException {
?
initConfig();
?
Trace.add("Servlet init==after init config:" + config);
?
try {
?
super.init();
?
} catch (Exception e) {
?
Trace.add("servlet init exception:" + e.toString()
?
+ "
===cause:" + e.getCause().toString());
?
throw new ServletException(e);
?
}
?
}
?
@Override
?
public void doGet(HttpServletRequest request, HttpServletResponse response)?
throws IOException, ServletException {
?
Trace.add("do get:" + request.getRequestURL());
?
try {
?
super.doGet(request, response);
?
} catch (ServletException e) {
?
Trace.add("do get Exception:" + e.toString());
?
throw e;
?
} catch (IOException ioe) {
?
Trace.add("do get Exception:" + ioe.toString());
?
throw ioe;
?
}
?
}
?
protected void initConfig() {
?
config = "/WEB-INF/struts-config.xml";
?
}
其中Trace是一个单例类,为了记录一些debug信息,以便得知执行到哪一步了。initConfig()是为了测试一下在这里指定struts-config。
搞好之后上传,等待,测试,这次发现module “null”之类的错误不见了,出现一个空白页面,action的执行还是不成功,也就是说struts-config的配置还是没有成功读取。 我又在一个jsp中输出Trace中记录的内容,发现只有一行:Servlet init==after init config:/WEB-INF/struts-config.xml,也就是说在进入struts的ActionServlet的init()方法之后,就如同飞越大西洋的法国飞机一样,销声匿迹了。为什么会这样呢?即使报错了,trace里应该有记录啊,但是现在没有,那就是坠入init()这个大西洋了。我可是catch了Exception的,难道被内部catch了没有抛出来?不应该啊, 通过分析application的attribute,也就是servlet context的attribute,发现里面有org.apache.struts.action.SERVLET_MAPPING=*.do,这个attribute是在init()方法里调用initServlet()方法的最后一段代码执行时set进去的。那就是说initServlet之后的执行出问题了,那是在哪儿呢?还是说,上面的attribute在容器加载web.xml时就设置了,这里的设置是冗余的,那么struts的ActionServlet里的init()方法根本没执行?
目前,我就测试到了上面那一步,那么,可以看出是servlet没有初始化,导致struts-config中定义的配置没有加载。
这就是我到目前为止的经历,不可谓不艰辛。可是问题依然还在,接下来我还会继续研究,欢迎讨论。
猜你喜欢
- 决定一个网站成败命运的,不是视觉设计,而是设计的可用性和有效性。访问网页的用户们握着鼠标,决定一切,“以用户为中心&am
- 大家在投放google adwords广告的时候,可能一开始就是想要带来流量,但是谁投放广告不是想挣钱,给自己带来客户呢,但是通过你投放的g
- 所谓双线,它是为了解决国内南北方电信和网通用户互联互通的问题特推出的智能双线主机服务。是指同一台服务器同时拥有电信网络和网通网络二条线路.通
- 笔者阿霸的站长资源群有很多初级站长朋友,在群里日常的交流中,发现这些初级站长对SEO是有所了解。但是站长们在网站制作的细节上,往往掌握不到一
- 把 member/config.php里的$cfg_ml = new MemberLogin();改成$cfg
- Google AdSense英文关键词价格要远远高于中文关键词,初略观察,有实力的同学,做英文站也许是这个经济形式下的一个不错的选择。并不是
- 社区赢利是广大站长非常关心的问题,“Yes玩”是康盛创想(Comsenz)为了助力站长赢利,潜心推出的一款官方插件产品。论坛游戏插件“Yes
- 10月30日消息,登录Google(谷歌)现在已经有了新捷径,Google (谷歌)中国的博客网志昨日公布了其新上线的最简单的网址G.cn。
- SQL SERVER是NT平台上用的最多的数据库系统,但是它的安全问题也必须引起重视。数据库中往往存在着最有价值的信息,一旦数据被窃后果不堪
- 对于已经建设好的网站,我们该如何做呢?下面我就结合自己建设“QQ空间5.0模板”亲身经历谈一点自己粗浅的做法,也许对你有所帮助!第一、网站的
- 之前,探讨了地方网站的文化建设与新闻推广,今天和大家交流的主题是地方网站的情感培育。这里,着重谈“怀旧&rdqu
- 美国东部时间2月28日下午6时(北京时间3月1日上午7时)消息,盛大游戏(纳斯达克:GAME)于今天公布了其截至去年12月31日的2009年
- 每个站长在建站之初,都很明确自己网站的定位及网站的目标客户群,那么,在具体的推广工作中,我们该如何寻找自己的目标客户,以便更有针对性的推广自
- 我们链接专题系列的第三篇是关于创建导出链接,也就是怎样“链出去”。对于大多数网站管理员来说,导出链接是很自然的事情,不需要特别关注。然而,如
- 由于中文点击网赚由于开站的成本比较低,开站比较容易,但是前期的投入比较大,如果没有更多的后续资金做保证、或者网站没有稳定的收入来源,网站的倒
- 站长在竞争及生存压力非常大的今天,该如何靠网站赚钱?据CHINAZ的调查显示,六成站长靠广告联盟赚钱,但是流量是基础,如果没有流量,就赚不到
- 要做好一个网站是非常辛苦的,通常有没有捷径,但以下这个清单应该能为您提供几点建议。这是我为了在最短时间内改善网站、提高浏览量而编制出的一份清
- 昨天一个朋友给我传了几个博客大全的一些程序源码,想在本机调试看下好不好的,格局那些等好看不的。熟料当我http://127.0.0.1根本就
- 1、最近在搜索结果呈现方式上两个关键词经常出现:综合(整合)搜索、搜索建议。2、综合(整合)搜索,简单来说:现在google、baidu的搜
- 我们在一些行业资讯网站(特别是数码类资讯网站)逛的时候,经常会在某个产品介绍页面下方发现有相关文章、评测文章、相关下载等栏目,如太平洋电脑产