【错误】新浪SinaSAE 上传Java WAR包出现is not a javax.servlet.Filter

使用Java Web做了一个签到系统,使用的是Struts2 + ExtJs4 + BoneCP + Mysql。

准备部署到Sina SAE上面,之前部署微信公众号开发的的Java程序一点问题都没有,但是部署这个应用问题一堆。不过之前的应用使用的是Servlet,没有使用任何框架。

先说一个部署问题,大致是将war包上传之后,在SAE中的日志系统中的JVM日志有以下错误:

java.lang.IllegalStateException: class com.cxl.signin.filter.AuthFilter is not a javax.servlet.Filter

然后输入二级域名,发现前台显示也是报错的:

Error 404 - Not Found.No context on this server matched or handled this request.
Contexts known to this server are:...(后面是关于个人应用的一些乱鸡巴遭的东西)

最终在一个英文的讨论论坛找到了一个相关的回答:
My top-of-the-brain guess would be that you have two servlet JARs in your classpath, and jetty is using one but your WAR is using another.
Really weird error though, for sure.

大致意思是那哥们看到这个问题,第一感觉就是项目classpath里面有两个servlet jar包,服务器jetty使用一个,你的war包使用的另一个。

我想应该是sina的服务器classpath里面就有了servlet-api.jar包了,于是我删掉了web-INF/lib下面的这个包,上传,不报错,首页可以打开。我的二级域名为sign.sinaapp.com/login.jsp,大家测试。

另外还有一个需要注意的是:请不要用jre7的版本去编译你的项目...

除此之外,项目还有其他的问题,就是session问题,我Java开的是4个虚拟机,登陆的时候明明已经运行到登陆成功,session写入的那一步,然后该进入主界面了,但后面被登陆验证的过滤器拦截,得不到登陆时写入session,判定为没有登录,返回登陆页面.

有部署过类似Java项目到SAE上的同学帮个忙啊~~~

0 个评论

要回复文章请先登录注册