java - How to configure a servlet init-param in a Spring boot application -


i have spring boot application (version 1.2.1.release) uses spring mvc, , need set development init parameter on jspservlet. in web.xml have looked following:

<servlet>         <servlet-name>jsp</servlet-name>         <servlet-class>org.apache.jasper.servlet.jspservlet</servlet-class>         ...         <init-param>             <param-name>development</param-name>             <param-value>false</param-value>         </init-param>          ... </servlet> 

i have thought this: how configure spring-boot servlet in web.xml?, don't think can replace new meteorservlet() new jspservlet() , go on way, sure jspservlet.init(servletconfig config) needs called valid servletconfig. and, of course if try without proper in initialization, application gives me null pointer exception (which occurs because private transient jspruntimecontext rctxt; null):

java.lang.nullpointerexception: null     @ org.apache.jasper.servlet.jspservlet.periodicevent(jspservlet.java:361)     @ org.apache.catalina.core.standardwrapper.backgroundprocess(standardwrapper.java:679)     @ org.apache.catalina.core.containerbase$containerbackgroundprocessor.processchildren(containerbase.java:1377)     @ org.apache.catalina.core.containerbase$containerbackgroundprocessor.processchildren(containerbase.java:1381)     @ org.apache.catalina.core.containerbase$containerbackgroundprocessor.run(containerbase.java:1349)     @ java.lang.thread.run(thread.java:745) 

also, have hacky way implementing tomcatembeddedservletcontainerfactory , providing servlet override init method , getinitparameter method of servletconfig, hateful, , hoping there better way. guidance appreciated.

lastly, code reads init-param in org.apache.jasper.embeddedservletoptions class , appears servletconfig init param can't specify context param (i don't think) awesome server.context-parameters.name=value.

string development = config.getinitparameter("development"); if (development != null) {     if (development.equalsignorecase("true")) {         this.development = true;     } else if (development.equalsignorecase("false")) {         this.development = false;     } else {         if (log.iswarnenabled()) {             log.warn(localizer.getmessage("jsp.warning.development"));         }     } 

}

and if try hit application anyway, following error:

java.lang.stringindexoutofboundsexception: string index out of range: 0 @ java.lang.string.charat(string.java:646) @ org.apache.jasper.compiler.jsputil.makejavaidentifier(jsputil.java:833) @ org.apache.jasper.compiler.jsputil.makejavaidentifier(jsputil.java:806) @ org.apache.jasper.jspcompilationcontext.getservletclassname(jspcompilationcontext.java:332) @ org.apache.jasper.jspcompilationcontext.getclassfilename(jspcompilationcontext.java:504) @ org.apache.jasper.compiler.compiler.isoutdated(compiler.java:444) @ org.apache.jasper.compiler.compiler.isoutdated(compiler.java:408) @ org.apache.jasper.jspcompilationcontext.compile(jspcompilationcontext.java:557) @ org.apache.jasper.servlet.jspservletwrapper.service(jspservletwrapper.java:357) @ org.apache.jasper.servlet.jspservlet.servicejspfile(jspservlet.java:391) @ org.apache.jasper.servlet.jspservlet.service(jspservlet.java:335) @ javax.servlet.http.httpservlet.service(httpservlet.java:725) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:291) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.springframework.boot.actuate.autoconfigure.endpointwebmvcautoconfiguration$applicationcontextheaderfilter.dofilterinternal(endpointwebmvcautoconfiguration.java:291) @ org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:107) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.springframework.web.filter.hiddenhttpmethodfilter.dofilterinternal(hiddenhttpmethodfilter.java:77) @ org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:107) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.springframework.boot.actuate.trace.webrequesttracefilter.dofilterinternal(webrequesttracefilter.java:100) @ org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:107) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.springframework.security.web.filterchainproxy.dofilterinternal(filterchainproxy.java:186) @ org.springframework.security.web.filterchainproxy.dofilter(filterchainproxy.java:160) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.springframework.web.filter.characterencodingfilter.dofilterinternal(characterencodingfilter.java:88) @ org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:107) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.springframework.boot.actuate.autoconfigure.metricfilterautoconfiguration$metricsfilter.dofilterinternal(metricfilterautoconfiguration.java:90) @ org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:107) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:219) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:106) @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:505) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:142) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:79) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:88) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:534) @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1081) @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:658) @ org.apache.coyote.http11.http11nioprotocol$http11connectionhandler.process(http11nioprotocol.java:222) @ org.apache.tomcat.util.net.nioendpoint$socketprocessor.dorun(nioendpoint.java:1566) @ org.apache.tomcat.util.net.nioendpoint$socketprocessor.run(nioendpoint.java:1523) @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617) @ org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61) @ java.lang.thread.run(thread.java:745) 

someone found link me, , appears work great, going got it, unless comes better option - http://fqa.io/questions/28863340/springboot-embedded-tomcat-jspservlet-options

    @bean public embeddedservletcontainercustomizer customizer() {     return new embeddedservletcontainercustomizer() {          @override         public void customize(configurableembeddedservletcontainer container) {             if (container instanceof tomcatembeddedservletcontainerfactory) {                 customizetomcat((tomcatembeddedservletcontainerfactory) container);             }         }          private void customizetomcat(                 tomcatembeddedservletcontainerfactory tomcat) {             tomcat.addcontextcustomizers(new tomcatcontextcustomizer() {                 @override                 public void customize(context context) {                     wrapper jsp = (wrapper) context.findchild("jsp");                     jsp.addinitparameter("development", development);                 }             });         }     }; } 

Comments

Popular posts from this blog

cakephp - simple blog with croogo -

How to group boxplot outliers in gnuplot -

bash - Performing variable substitution in a string -