EAR不在Weblogic 10.3.6中工作

时间:2016-03-07 09:58:21

标签: spring spring-mvc weblogic thymeleaf ear

我正在使用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解决了我的问题。阅读答案以获取更多详细信息。

2 个答案:

答案 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以获取有关如何执行此操作的详细信息。