首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用immutant服务器从浏览器访问页面时出错

使用immutant服务器从浏览器访问页面时出错
EN

Stack Overflow用户
提问于 2015-06-03 13:38:57
回答 1查看 194关注 0票数 1
代码语言:javascript
复制
$ lein new pedestal-service peddy

然后将以下文件添加到immutant文件夹中

代码语言:javascript
复制
(ns immutant.init
  (:require [immutant.web :as web]
            [io.pedestal.http :as http]
            [peddy.service :as app]))

(web/start-servlet "/" (::http/servlet (http/create-servlet app/service)))

在那之后

代码语言:javascript
复制
$ lein immutant deploy peddy

然后

代码语言:javascript
复制
$ lein immutant run

使用nrepl声明的不变服务器

但当我尝试在浏览器中打开页面时,它抛出错误

我使用的是immutant 1.1.4和pedestal-service 0.4.0

堆栈-错误跟踪

代码语言:javascript
复制
ERROR [io.pedestal.http.impl.servlet-interceptor] (http-/0.0.0.0:8080-1) {:line 293, :msg "error-stylobate triggered", :context {:io.pedestal.impl.interceptor/terminators (#<servlet_interceptor$terminator_inject$fn__11550 io.pedestal.http.impl.servlet_interceptor$terminator_inject$fn__11550@7681d2d5>), :io.pedestal.impl.interceptor/stack (#io.pedestal.interceptor.Interceptor{:name :io.pedestal.http.impl.servlet-interceptor/terminator-injector, :enter #<helpers$before$fn__9159 io.pedestal.interceptor.helpers$before$fn__9159@76b5905>, :leave nil, :error nil}), :io.pedestal.impl.interceptor/execution-id 1, :servlet #<FnServlet io.pedestal.http.servlet.FnServlet@4b4b3283>, :servlet-config #<Dynamic org.apache.catalina.core.StandardWrapperFacade$Dynamic@1e733d96>, :servlet-response #<ResponseFacade org.apache.catalina.connector.ResponseFacade@28a7423c>, :servlet-request #<RequestFacade org.apache.catalina.connector.RequestFacade@2f3f5533>}}: clojure.lang.ExceptionInfo: Interceptor Exception: No matching field found: getContentLengthLong for class org.apache.catalina.connector.RequestFacade {:execution-id 1, :stage :enter, :interceptor :io.pedestal.http.impl.servlet-interceptor/stylobate, :exception-type :java.lang.IllegalArgumentException, :exception #<IllegalArgumentException java.lang.IllegalArgumentException: No matching field found: getContentLengthLong for class org.apache.catalina.connector.RequestFacade>}
    at clojure.core$ex_info.invoke(core.clj:4403) [clojure-1.6.0.jar:]
    at io.pedestal.impl.interceptor$throwable__GT_ex_info.invoke(interceptor.clj:37)
    at io.pedestal.impl.interceptor$try_f.invoke(interceptor.clj:53)
    at io.pedestal.impl.interceptor$enter_all_with_binding.invoke(interceptor.clj:140)
    at io.pedestal.impl.interceptor$enter_all$fn__8979.invoke(interceptor.clj:156)
    at clojure.lang.AFn.applyToHelper(AFn.java:152) [clojure-1.6.0.jar:]
    at clojure.lang.AFn.applyTo(AFn.java:144) [clojure-1.6.0.jar:]
    at clojure.core$apply.invoke(core.clj:624) [clojure-1.6.0.jar:]
    at clojure.core$with_bindings_STAR_.doInvoke(core.clj:1862) [clojure-1.6.0.jar:]
    at clojure.lang.RestFn.invoke(RestFn.java:425) [clojure-1.6.0.jar:]
    at io.pedestal.impl.interceptor$enter_all.invoke(interceptor.clj:154)
    at io.pedestal.impl.interceptor$execute.invoke(interceptor.clj:272)
    at io.pedestal.http.impl.servlet_interceptor$interceptor_service_fn$fn__11571.invoke(servlet_interceptor.clj:399)
    at io.pedestal.http.servlet.FnServlet.service(servlet.clj:28)
    at immutant.web.servlet.ServletProxy.service(servlet.clj:64)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.2.0.Final.jar:7.2.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.0.Final.jar:7.2.0.Final]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) [jbossweb-7.2.0.Final.jar:7.2.0.Final]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.2.0.Final.jar:7.2.0.Final]
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) [jboss-as-web-7.2.x.slim.incremental.18.jar:7.2.x.slim.incremental.18]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) [jbossweb-7.2.0.Final.jar:7.2.0.Final]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.2.0.Final.jar:7.2.0.Final]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.2.0.Final.jar:7.2.0.Final]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336) [jbossweb-7.2.0.Final.jar:7.2.0.Final]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) [jbossweb-7.2.0.Final.jar:7.2.0.Final]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [jbossweb-7.2.0.Final.jar:7.2.0.Final]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920) [jbossweb-7.2.0.Final.jar:7.2.0.Final]
    at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_45-internal]
Caused by: java.lang.IllegalArgumentException: No matching field found: getContentLengthLong for class org.apache.catalina.connector.RequestFacade
    at clojure.lang.Reflector.getInstanceField(Reflector.java:271) [clojure-1.6.0.jar:]
    at clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:315) [clojure-1.6.0.jar:]
    at io.pedestal.http.impl.servlet_interceptor$add_content_length.invoke(servlet_interceptor.clj:206)
    at io.pedestal.http.impl.servlet_interceptor$request_map.invoke(servlet_interceptor.clj:224)
    at io.pedestal.http.impl.servlet_interceptor$enter_stylobate.invoke(servlet_interceptor.clj:255)
    at io.pedestal.impl.interceptor$try_f.invoke(interceptor.clj:50)
    ... 25 more
EN

回答 1

Stack Overflow用户

发布于 2015-06-03 23:13:04

这是由Servlet规范3.1版中的added --基座using .getContentLengthLong()引起的。Immuant1.x基于JBoss AS7,它使用规范的3.0版本。这意味着你将不能在任何3.1版本之前的容器中使用0.4.0。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30611642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档