在myeclipse下开发的 应用但是 放到BAE下就出现了问题,虽然显示发布成功,但是访问的时候就会出现503 Service Unavailable 错误。
通过调整 web.xml 发现纯Servlet是可以正常访问的,一旦加入struct2之后就会 503 错误。
一开始以为是struts版本的问题 更换了版本还是一样有问题,即使使用了百度文档里说的 2.3.1.2 版本问题依旧。
一直倒腾怎么久都没有解决的关键就是,他的日志里什么错误都没有!!!! 
由于BAE使用的是 jetty 容器 不是 tomcat 所以我想看看能不能通过在本地使用jetty来找出错误。
接下来我就首先以加载struts2作为首要目的,首先导入了网上所说的 5个 struts2 核心包。

1。Commons-logging.jar  --------------   用于通用日志处理

2。Freemarker.jar  --------------   表现层框架,定义了struts2的可视组件主题

3。Ognl.jar  --------------   OGNL表达式语言,struts2支持该EL

4。Struts2-core.jar  --------------    struts2 2.0.11.2的核心库

5。Xwork.jar  --------------   webwork的核心库

在jetty目录下执行下面的命令,启动jetty服务器:

> java -jar start.jar

在启动过程中就出现了错误信息,终于有错误信息了~~

排除几个错误之后,确认要包以下的jar就可以了

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

按照这样的配置之后在WebRoot 下放一个index.jsp
能够成功访问,说明struts2已经成功载入,服务器也正常了。
接下来试试Action的是否能用,对struts.xml进行简单的配置,就配置一个action。
结果还是出了问题,报404错误 result 'null' not found 。
我的actionclass是直接返回字符串的,所以应该不会是class的问题。

看了下文档发现,百度的文档中有

2、ognl

struts2依赖于ognl,在使用ognl时需要配置一个listener,将ognl的安全管理器关闭。Listener的实现代码如下:

public void contextInitialized(ServletContextEvent sce) {
OgnlRuntime.setSecurityManager(null);
}

并在web.xml中将listener的配置加上。

那接下来就是配置这个listener,由于百度没有提供完整代码的代码所以就去SAE(新浪的应用服务器)的文档里找了一个。

InitListener.java:

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener; import ognl.OgnlRuntime; public class InitListener implements ServletContextListener,
HttpSessionListener, HttpSessionAttributeListener { public InitListener() {
} public void contextInitialized(ServletContextEvent sce) {
OgnlRuntime.setSecurityManager(null);
} public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
} public void sessionCreated(HttpSessionEvent arg0) {
// TODO Auto-generated method stub
} public void sessionDestroyed(HttpSessionEvent arg0) {
// TODO Auto-generated method stub
} public void attributeAdded(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
} public void attributeRemoved(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
} public void attributeReplaced(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
} }

并且在web.xml文件中添加listener相关配置:

<listener>
<listener-class>InitListener</listener-class>
</listener>

弄好之后再测试,可以正常使用action了~

到这里struts2就算搞定了,不过在前面倒腾的时候发现一个问题原来还好好的不小心弄了一下又变成 503 了,即使恢复到前面好的状况依旧 503 ,结果复制到一个新的版本就好了~

BAE 环境下配置 struts2 + spring + hibernate(SSH)(二)struts2的更多相关文章

  1. struts2+spring+hibernate(SSH)框架的搭建和总结

    SSH框架:struts2+spring+hibernate,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. struts2+spring+hibernat ...

  2. Struts2+Spring+Hibernate(SSH)框架的搭建

    首先需要下载struts2 ,spring4,hibernate5  的资源包; struts2资源包下载路径:http://www.apache.org/spring资源包下载路径:http://p ...

  3. BAE 环境下配置 struts2 + spring + hibernate(SSH)(三)spring&hibernate

    1.在lib中加入必要的包,导入后结果如下: lib打包下载:SSH-lib.jar  (struts2.3.1.2  spring3.0.5 hibernate3.6.10.Final) 只包含必要 ...

  4. BAE 环境下配置 struts2 + spring + hibernate(SSH)(一)准备

    1.首先选择版本控制 SVN 或者 Git ,但是由于Git在windows下需要环境,所以优先选择SVN. 2.安装一个SVN客户端 windows下使用TortoiseSVN:立即下载 注意:BA ...

  5. SSH面试题(struts2+Spring+hibernate)

    struts2 + Spring +hibernate Hibernate工作原理及为什么要用?   原理:   1.读取并解析配置文件   2.读取并解析映射信息,创建SessionFactory ...

  6. SSH(Struts2+Spring+Hibernate)框架搭建流程<注解的方式创建Bean>

    此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblo ...

  7. SSH框架简化(struts2+spring+hibernate)

    目的: 通过对ssh框架有了基础性的学习,本文主要是使用注解的方式来简化ssh框架的代码编写. 注意事项: 1.运行环境:Windows 8-64位,Eclipse(开发工具),jdk1.8.0_91 ...

  8. Maven搭建struts2+spring+hibernate环境

    Maven搭建struts2+spring+hibernate环境(一) 本文简单的使用STS的自带的maven插件工具搭建ssh(struts2+spring+hibernate)开发环境,图文并茂 ...

  9. Spring、Struts2+Spring+Hibernate整合步骤

    所使用的Jar包: Hibernate: Spring(使用MyEclipse自动导入框架功能) Struts2: 注解包和MySql驱动包: 1.配置Hibernate和Spring: <be ...

随机推荐

  1. 得到创建人Id

    等到创建人id,也就是登录人id arg1 .getCtx().fetchMemberId(); 其中arg1是 LServerEnv 的对象

  2. 2016 GDCPC 省赛总结

    大神们说,要多写博客,多总结,于是很久之前就开了博客,可是一篇文章都没有写,太懒也是,没什么时间也是.现在省赛结束了,也是时候好好总结一下了. 本来一开始,三个人对拿铜牌是很有把握的,在比赛一开始A了 ...

  3. angularjs post 跨域

    web api搞好了:用Ajax妥妥的:但是前端用的AngulagJS,也懒得再换为Ajax了: 但是问题来了:提示: 已拦截跨源请求:同源策略禁止读取位于 http://x.x.x.x:port/a ...

  4. c#基础语言编程-多态

    语言中的多态性是为了使程序有扩展性,为实现多态性,在程序中体现为接口.抽象类.父类.具体类. 接口就是一种规范,解决了多重继承的问题,类似一种规范,告诉我要做什么,具有什么能力,在接口中定义写行为属性 ...

  5. 常用文件操作 分类: C# 2014-10-14 16:18 108人阅读 评论(0) 收藏

    界面图: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...

  6. [RxJS] Filtering operators: takeUntil, takeWhile

    take(), takeLast(), first(), last(), those opreators all take number or no param. takeUtil and takeW ...

  7. hdu5294||2015多校联合第一场1007 最短路+最大流

    http://acm.hdu.edu.cn/showproblem.php? pid=5294 Problem Description Innocent Wu follows Dumb Zhang i ...

  8. 转载:JAVA 正则表达式 (超详细)

    在Sun的JavaJDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用Java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu x ...

  9. Android(java)学习笔记200:Android中View动画之 XML实现 和 代码实现

    1.Animation 动画类型 Android的animation由四种类型组成: XML中: alph 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动 ...

  10. 第二篇:python高级之装饰器

    python高级之装饰器   python高级之装饰器 本节内容 高阶函数 嵌套函数及闭包 装饰器 装饰器带参数 装饰器的嵌套 functools.wraps模块 递归函数被装饰 1.高阶函数 高阶函 ...