$ lein new pedestal-service peddy
and then add following file to immutant folder
(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)))
after that
$ lein immutant deploy peddy
and then
$ lein immutant run
immutant server stated with nrepl
but when i try to open page in browser it throws error
I am using immutant 1.1.4 and pedestal-service 0.4.0
stack-trace of error
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
This is caused by Pedestal using .getContentLengthLong(), which was added in version 3.1 of the Servlet spec. Immutant 1.x is based on JBoss AS 7, which uses version 3.0 of the spec. This means you won't be able to use Pedestal 0.4.0 in any pre-3.1 container.