我正在使用Eclipse,当我在Pivotal tc(又名Tomcat)下运行Spring MVC项目时,我有一个正确显示的图像(我可以访问它的URL),但是当我在Weblogic 10.3.6下运行时EAR项目(加载Spring MVC项目)没有显示图像,当我尝试直接加载图像URL(在浏览器“在新窗口中打开”)时,我收到此错误:
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I
at org.springframework.web.context.request.ServletWebRequest.checkNotModified(ServletWebRequest.java:176)
at org.springframework.web.servlet.resource.ResourceHttpRequestHandler.handleRequest(ResourceHttpRequestHandler.java:241)
at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:51)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:119)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:442)
at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:103)
at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:171)
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:139)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3730)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
图片位于:/ resources / images / 我加载它:
<img th:src="@{/resources/images/0-logo.gif}" />
在xml中我有:
<mvc:annotation-driven/>
<mvc:resources mapping="/resources/**" location="/resources/"/>
为什么只有当我在tomcat上运行我的项目Foo时才显示图像,而不是当我在Weblogic下运行FooEAR时?我能做什么?我还需要其他配置吗?
从春季4.2.0.RELEASE降级到3.1.4.RELEASE和百里香从2.1.3.RELEASE降至2.1.2.RELEASE解决了我的问题。阅读答案以获取更多详细信息。
答案 0 :(得分:2)
HttpServletResponse#getStatus仅在Servlet 3.0中添加。问题是由应用程序服务器提供的旧Servlet实现引起的。检查Weblogic的版本,然后查看它是否实现了Servlet 3。
更新:根据提供的信息,您使用的Weblogic版本是10.3.6。看看这个Servlet version support table,你应该至少使用Weblogic 12c来使用Servlet 3。
答案 1 :(得分:0)
我猜测问题在于上下文根映射。
尝试添加特定于WebLogic的部署描述符并添加上下文根站点。
请尝试查看WebLogic deployment descriptor docs以获取有关如何执行此操作的详细信息。