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中定义的配置没有加载。

这就是我到目前为止的经历,不可谓不艰辛。可是问题依然还在,接下来我还会继续研究,欢迎讨论。

标签:Godaddy,主机,JSP,Java
0
投稿

猜你喜欢

  • Mozilla:Firefox 3 正式版预计6月发布

    2008-05-22 17:18:00
  • 科汛V6.5:加强推广积分互动 增加后台广告

    2009-12-02 14:57:00
  • Linux文件编辑命令vi详细整理(总结)

    2021-10-19 02:04:06
  • 搜索引擎对作弊的判断条件

    2009-01-19 12:37:00
  • Google测试新AdSense系统

    2008-02-24 15:06:00
  • 怎样做反向域名解析(反向DNS解析)?

    2010-02-05 19:18:00
  • SEO指导下的编辑艺术:重视百度做伪原创

    2009-03-21 11:14:00
  • 网易SNS产品已封闭测试 针对“90后”群体

    2009-11-16 13:58:00
  • 六个WordPress实用的评论回复通知插件下载

    2010-03-21 08:40:00
  • Web服务器的急救工具箱

    2007-03-29 11:05:00
  • Exchange 2007 中更强大的日志功能

    2010-02-21 19:13:00
  • Google 搜索新增快捷键

    2008-07-27 16:54:00
  • 动态库调用静态库示例讲解

    2023-02-17 15:28:57
  • Docker overlay 网络搭建的方法

    2021-07-21 12:24:16
  • 10种提升站点蜘蛛爬行的方法

    2009-03-11 11:10:00
  • QQ2008正式版16日发布 新功能提前揭秘

    2008-06-07 16:54:00
  • 两个虚拟SMTP服务器防止垃圾邮件中转的总结

    2008-05-04 15:18:00
  • 安全技巧:利用软件限制策略阻止网马侵袭

    2008-12-23 08:51:00
  • 被百度K站的十大诱因

    2007-11-04 18:42:00
  • 网站流量与盈利终端

    2007-11-05 13:58:00
  • asp之家 网站运营 m.aspxhome.com