BAE 景象下设备 struts2 + spring + hibernate(SSH)(二)stru

    添加时间:2013-7-25 点击量:

    myeclipse下开辟的 应用然则 放到BAE下就呈现了题目,固然显示公布成功,然则接见的时辰就会呈现503 Service Unavailable 错误。
    经由过程调剂 web.xml 发明纯Servlet是可以正常接见的,一旦参加struct2之后就会 503 错误。
    一开端认为是struts版本的题目 调换了版本还是一样有题目,即使应用了百度文档里说的 2.3.1.2 版本题目依旧。
    一向倒腾怎么久都没有解决的关键就是,他的日记里什么错误都没有!!!! 
    因为BAE应用的是 jetty 容器 不是 tomcat 所以我想看看能不克不及经由过程在本地应用jetty来找失足误。
    接下来我就起首以加载struts2作为首要目标,起首导入了网上所说的 5个 struts2 核心包。


    1Commons-logging.jar  --------------   用于通用日记处理惩罚


    2Freemarker.jar  --------------   发挥解析层框架,定义了struts2的可视组件主题


    3Ognl.jar  --------------   OGNL表达式说话,struts2支撑该EL


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


    5Xwork.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.StrutsPrepareAnduteFilter</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 contextInitializedServletContextEvent sce {
    
    OgnlRuntime.setSecurityManagernull;
    }

    并在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 ,成果复制到一个新的版本就好了~

    原来,再大的房子,再大的床,没有相爱的人陪伴,都只是冰冷的物质。而如果身边有爱人陪伴,即使房子小,床小,也觉得无关紧要,因为这些物质上面有了爱的温度,成了家的元素。—— 何珞《婚房》#书摘#
    分享到: