1
votes
$ 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
1
Any particular reason you're not using Immutant 2? It's very possible the latest version of Pedestal is incompatible with Immutant 1.jcrossley3
all our old production system is in immutant 1.x so I am planning to upgrade to immutant 2.xpiyushmandovra
is there any good production set up and deployment docs for immutant 2.x..?piyushmandovra
If you're embedding it, you would follow deployment guidelines for any Clojure application. If you're running it on WildFly, you should follow the guidelines for WildFly.jcrossley3

1 Answers

2
votes

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.