Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jetty下Spring MVC应用程序中的ServletContext_Java_Spring Mvc - Fatal编程技术网

Java Jetty下Spring MVC应用程序中的ServletContext

Java Jetty下Spring MVC应用程序中的ServletContext,java,spring-mvc,Java,Spring Mvc,我尝试创建使用Jetty作为servlet容器的SpringMVC应用程序。我的方法的特点是通过bean在Spring内部运行Jetty: <bean id="server" class="org.mortbay.jetty.Server" destroy-method="stop"> <property name="connectors"> <list> <bean id="connector" cla

我尝试创建使用Jetty作为servlet容器的SpringMVC应用程序。我的方法的特点是通过bean在Spring内部运行Jetty:

<bean id="server" class="org.mortbay.jetty.Server" destroy-method="stop">

    <property name="connectors">
        <list>
            <bean id="connector" class="org.mortbay.jetty.nio.SelectChannelConnector">
                <property name="port" value="9080" />
            </bean>
        </list>
    </property>

    <property name="handlers">
        <list>
            <ref bean="basicContext" />
        </list>
    </property>
</bean>

<bean name="basicContext" class="org.mortbay.jetty.servlet.Context">
    <property name="contextPath" value="/" />

    <property name="servletHandler">
        <bean class="org.mortbay.jetty.servlet.ServletHandler">
            <property name="servlets">
                <list>
                    <bean class="org.mortbay.jetty.servlet.ServletHolder">
                        <property name="name" value="spring-mvc" />
                        <property name="servlet">
                            <bean class="name.krestjaninoff.hello.util.DispatcherServletWrapper" />
                        </property>
                    </bean>
                </list>
            </property>

            <property name="servletMappings">
                <list>
                    <bean class="org.mortbay.jetty.servlet.ServletMapping">
                        <property name="servletName" value="spring-mvc" />
                        <property name="pathSpec" value="/*" />
                    </bean>
                </list>
            </property>
        </bean>
    </property>

</bean>
应用程序启动良好,但当我尝试获取某些页面时,会出现下一个异常:

2010-12-08 09:50:22,684 [29071401@qtp-4084687-0] DEBUG name.krestjaninoff.hello.util.DispatcherServletWrapper
 - org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:671)
 - Could not complete request
java.lang.NullPointerException
        at org.springframework.web.context.support.WebApplicationObjectSupport.getServletContext(WebApplicationObjectSupport.java:124)
        at org.springframework.web.servlet.view.JstlView.exposeHelpers(JstlView.java:135)
        at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:211)
        at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
        at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
        at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:326)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
        at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:926)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
        at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
        at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
所以,当JstlView类尝试获取ServletContext时,出现了问题。JstlView实现ServletContextAware接口,因此他必须了解ServletContext


在我看来,问题在于没有创建ServletContext实例。有人能帮我吗?

我的第一个问题是请你解释一下为什么你想用这种方式启动jetty。还有更简单的方法,比如使用maven-jetty-plugin。你已经找到答案了吗?汉斯说的其实就是我要建议的。您将servlet容器与代码绑定在一起,这不是一个好主意。我知道我的想法很愚蠢:)现在,我的应用程序直接使用包含Spring MVC servlet的上下文运行Jetty。我的第一个问题是请您解释为什么要以这种方式启动Jetty。还有更简单的方法,比如使用maven-jetty-plugin。你已经找到答案了吗?汉斯说的其实就是我要建议的。您将servlet容器与代码绑定在一起,这不是一个好主意。我知道我的想法很愚蠢:)现在,我的应用程序直接使用包含Spring MVC servlet的上下文运行Jetty。
2010-12-08 09:50:22,684 [29071401@qtp-4084687-0] DEBUG name.krestjaninoff.hello.util.DispatcherServletWrapper
 - org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:671)
 - Could not complete request
java.lang.NullPointerException
        at org.springframework.web.context.support.WebApplicationObjectSupport.getServletContext(WebApplicationObjectSupport.java:124)
        at org.springframework.web.servlet.view.JstlView.exposeHelpers(JstlView.java:135)
        at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:211)
        at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
        at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
        at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:326)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
        at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:926)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
        at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
        at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)