Hello

I've fixed the problem here:
https://github.com/ops4j/org.ops4j.pax.web/commit/19696d4dcabe8b5663d33f894a8d40fc2b742c88
The problem was that during WAR scanning, if there was any servlet mapped
to "/", "default" servlet was removed entirely - now it's still registered,
but with empty mapping - so you can't invoke it, but you can get a named
dispatcher for it.

I'm going to release Pax Web 8.0.13 today.

Thanks Prashanth for the report!
regards
Grzegorz Grzybek

śr., 16 lis 2022 o 12:21 Grzegorz Grzybek <gr.grzy...@gmail.com> napisał(a):

> Hello Prashanth
>
> I've added some findings to
> https://github.com/ops4j/org.ops4j.pax.web/issues/1794 and I see there's
> a problem in Tomcat and Jetty runtimes for Pax Web.
> I've just checked it in pure standalone Tomcat and indeed - the "default"
> dispatcher should NEVER be removed - I'm working on a fix.
>
> regards
> Grzegorz Grzybek
>
> śr., 16 lis 2022 o 12:02 Prashanth Ettaboina
> <prashanth.ettabo...@motivitylabs.com.invalid> napisał(a):
>
>> Hi Grzegorz,
>>
>> Thank you for your response.
>> I have gone through your explanation; I have seen that "/" is overriding
>> the default servlet. Thank you for letting me know.
>> But we had that web.xml configuration from last several years below is
>> the web.xml which was being used from older karaf versions (before 4.4.1).
>>
>>    <servlet>
>>     <servlet-name>helloboard</servlet-name>
>>
>> <servlet-class>com.console.helloboard.HelloboardServlet</servlet-class>
>>    </servlet>
>>    <servlet-mapping>
>>     <servlet-name>helloboard</servlet-name>
>>     <url-pattern>/</url-pattern>
>>    </servlet-mapping>
>>
>> Previously HelloboardServlet used to take in all the requests and process
>> them, below is the code block which is used to be executed.
>>
>> public class HelloboardServlet extends HttpServlet {
>>
>>        protected void doGet(HttpServletRequest request,
>> HttpServletResponse response) throws ServletException, IOException {
>>              if (request.getServletPath().equals("/")) {
>>                 response.sendRedirect("views/welcome.jsp");
>>             } else if
>> (request.getServletPath().startsWith("/resources/")){
>>                 if(request.getServletPath().endsWith(".css")) {
>>                     response.setContentType("text/css");
>>                     } else if (request.getServletPath().endsWith(".js")) {
>>                            response.setContentType("text/javascript");
>>                     }
>>                 RequestDispatcher rd =
>> getServletContext().getNamedDispatcher("default");
>>                 rd.include(request, response);
>>             }
>>        }
>>     }
>>
>> I want to know why it was able to create a default RequestDispatcher back
>> then and why not now? are there any changes in the implementation as part
>> of the upgrades, if yes can I get some information of what has been
>> modified.
>>
>> As per your directions I have changed the web.xml servlet mapping from /
>> to /*, now I'm able to create the default servlet but the above code block
>> will not be working because I have changed the url-pattern from / to /* all
>> the request objects are containing servletPath as "" (empty string). Which
>> will break the existing flow.
>>
>> I'm sorry that I cannot share the WAB and can give any further inputs
>> regarding this issue.
>>
>> Thanks,
>> Prashanth Ettaboina.
>>
>>
>> From: Prashanth Ettaboina
>> Sent: 16 November 2022 14:02
>> To: 'iss...@karaf.apache.org' <iss...@karaf.apache.org>; '
>> dev@karaf.apache.org' <dev@karaf.apache.org>; 'u...@karaf.apache.org' <
>> u...@karaf.apache.org>
>> Subject: RE: Unable to create default RequestDispatcher
>>
>> Hi Grzegorz,
>>
>> Thank you for your response.
>> I have gone through your explanation; I have seen that "/" is overriding
>> the default servlet. Thank you for letting me know.
>> But we had that web.xml configuration from last several years below is
>> the web.xml which was being used from older karaf versions (before 4.4.1).
>>
>>    <servlet>
>>     <servlet-name>helloboard</servlet-name>
>>
>> <servlet-class>com.console.helloboard.HelloboardServlet</servlet-class>
>>    </servlet>
>>    <servlet-mapping>
>>     <servlet-name>helloboard</servlet-name>
>>     <url-pattern>/</url-pattern>
>>    </servlet-mapping>
>>
>> Previously HelloboardServlet used to take in all the requests and process
>> them, below is the code block which is used to be executed.
>>
>> public class HelloboardServlet extends HttpServlet {
>>
>>        protected void doGet(HttpServletRequest request,
>> HttpServletResponse response) throws ServletException, IOException {
>>              if (request.getServletPath().equals("/")) {
>>                 response.sendRedirect("views/welcome.jsp");
>>             } else if
>> (request.getServletPath().startsWith("/resources/")){
>>                 if(request.getServletPath().endsWith(".css")) {
>>                     response.setContentType("text/css");
>>                     } else if (request.getServletPath().endsWith(".js")) {
>>                            response.setContentType("text/javascript");
>>                     }
>>                 RequestDispatcher rd =
>> getServletContext().getNamedDispatcher("default");
>>                 rd.include(request, response);
>>             }
>>        }
>>     }
>>
>> I want to know why it was able to create a default RequestDispatcher back
>> then and why not now? are there any changes in the implementation as part
>> of the upgrades, if yes can I get some information of what has been
>> modified.
>>
>> As per your directions I have changed the web.xml servlet mapping from /
>> to /*, now I'm able to create the default servlet but the above code block
>> will not be working because I have changed the url-pattern from / to /* all
>> the request objects are containing servletPath as "" (empty string). Which
>> will break the existing flow.
>>
>> I'm sorry that I cannot share the WAB and can give any further inputs
>> regarding this issue.
>>
>> Thanks,
>> Prashanth Ettaboina.
>> From: Prashanth Ettaboina
>> Sent: 15 November 2022 20:03
>> To: 'iss...@karaf.apache.org' <iss...@karaf.apache.org<mailto:
>> iss...@karaf.apache.org>>; 'dev@karaf.apache.org' <dev@karaf.apache.org
>> <mailto:dev@karaf.apache.org>>; 'u...@karaf.apache.org' <
>> u...@karaf.apache.org<mailto:u...@karaf.apache.org>>
>> Subject: RE: Unable to create default RequestDispatcher
>>
>> Hi Grzegorz,
>>
>> I'm generating a WAR file of the bundle(which will have the web
>> application).
>>
>> Adding the war file in the feature.xml and installing it in the karaf as
>> a kar file.
>>
>>         <!--  Server Console Bundles -->
>>         <bundle
>> start-level="95">mvn:com.server.console/helloboard/${project.version}/war</bundle>
>>
>> karaf@root()> kar: install file :filepath*** snapshot.kar
>>
>> below are the logs from karaf which are generated while I installed the
>> kar file.
>>
>> 2022-11-15T19:19:11.401+0530 CEF:1 | org.apache.karaf.kar.core | 4.4.1 |
>> INFO  | ID=168 THR=0.0-SNAPSHOT.kar CAT=KarServiceImpl
>>  MSG=Added feature repository
>> 'mvn:com.server.kars/example-console/51.0.0-SNAPSHOT/xml/features'
>> 2022-11-15T19:19:11.403+0530 CEF:1 | org.apache.karaf.features.core |
>> 4.4.1 | INFO  | ID=19 THR=0.0-SNAPSHOT.kar CAT=FeaturesServiceImpl
>>     MSG=Adding features: example-console/[51.0.0.SNAPSHOT,51.0.0.SNAPSHOT]
>> 2022-11-15T19:19:15.041+0530 CEF:1 | org.apache.karaf.features.core |
>> 4.4.1 | INFO  | ID=19 THR=tures-3-thread-1 CAT=FeaturesServiceImpl
>>     MSG=Changes to perform:
>> 2022-11-15T19:19:15.041+0530 CEF:1 | org.apache.karaf.features.core |
>> 4.4.1 | INFO  | ID=19 THR=tures-3-thread-1 CAT=FeaturesServiceImpl
>>     MSG=  Region: root
>> 2022-11-15T19:19:15.042+0530 CEF:1 | org.apache.karaf.features.core |
>> 4.4.1 | INFO  | ID=19 THR=tures-3-thread-1 CAT=FeaturesServiceImpl
>>     MSG=    Bundles to install:
>> 2022-11-15T19:19:15.042+0530 CEF:1 | org.apache.karaf.features.core |
>> 4.4.1 | INFO  | ID=19 THR=tures-3-thread-1 CAT=FeaturesServiceImpl
>>     MSG=      mvn:com.server.console/helloboard/51.0.0-SNAPSHOT/war
>> 2022-11-15T19:19:20.621+0530 CEF:1 | org.apache.karaf.features.core |
>> 4.4.1 | INFO  | ID=19 THR=tures-3-thread-1 CAT=FeaturesServiceImpl
>>     MSG=  helloboard/51.0.0.SNAPSHOT
>> 2022-11-15T19:19:20.634+0530 CEF:1 |
>> org.ops4j.pax.web.pax-web-extender-war | 8.0.6 | INFO  | ID=269
>> THR=ender-1-thread-1 CAT=BundleWebApplication             MSG=Configuring
>> Web Application "/helloboard" for bundle helloboard/51.0.0.SNAPSHOT
>> 2022-11-15T19:19:20.635+0530 CEF:1 | org.apache.karaf.features.core |
>> 4.4.1 | INFO  | ID=19 THR=tures-3-thread-1 CAT=FeaturesServiceImpl
>>     MSG=Done.
>> 2022-11-15T19:19:32.512+0530 CEF:1 | org.ops4j.pax.web.pax-web-runtime |
>> 8.0.6 | INFO  | ID=272 THR=ender-1-thread-1
>> CAT=StoppableHttpServiceFactory      MSG=Binding HTTP Service for bundle:
>> [helloboard [318]]
>> 2022-11-15T19:19:32.514+0530 CEF:1 |
>> org.ops4j.pax.web.pax-web-extender-war | 8.0.6 | INFO  | ID=269
>> THR=ender-1-thread-1 CAT=BundleWebApplication             MSG=Allocated
>> context for /helloboard:
>> OsgiContextModel{WAB,id=OCM-233,name='/helloboard',path='/helloboard',bundle=helloboard,}
>> 2022-11-15T19:19:32.520+0530 CEF:1 | org.ops4j.pax.web.pax-web-jetty |
>> 8.0.6 | INFO  | ID=270 THR=ploy /helloboard) CAT=JettyServerController
>>       MSG=Receiving Batch{"Deployment of Web Application "/helloboard" for
>> bundle helloboard/51.0.0.SNAPSHOT", size=24}
>> 2022-11-15T19:19:32.520+0530 CEF:1 | org.ops4j.pax.web.pax-web-jetty |
>> 8.0.6 | INFO  | ID=270 THR=ploy /helloboard) CAT=JettyServerWrapper
>>        MSG=Creating new Jetty context for
>> ServletContextModel{id=ServletContextModel-234,contextPath='/helloboard'}
>> 2022-11-15T19:19:32.521+0530 CEF:1 | org.ops4j.pax.web.pax-web-jetty |
>> 8.0.6 | INFO  | ID=270 THR=ploy /helloboard) CAT=JettyServerWrapper
>>        MSG=Adding
>> OsgiContextModel{WAB,id=OCM-233,name='/helloboard',path='/helloboard',bundle=helloboard,context=WebContainerContextWrapper{bundle=helloboard
>> [318],contextId='/helloboard',delegate=org.ops4j.pax.web.extender.war.internal.WebApplicationHelper@1641e385}}
>> to o.o.p.w.s.j.i.PaxWebServletContextHandler@6ae38bdd
>> {/helloboard,null,STOPPED}<mailto:
>> o.o.p.w.s.j.i.PaxWebServletContextHandler@6ae38bdd
>> %7b/dashboard,null,STOPPED%7d>
>> 2022-11-15T19:19:32.522+0530 CEF:1 | org.ops4j.pax.web.pax-web-jetty |
>> 8.0.6 | INFO  | ID=270 THR=ploy /helloboard) CAT=JettyServerWrapper
>>        MSG=Changing default OSGi context model for
>> o.o.p.w.s.j.i.PaxWebServletContextHandler@6ae38bdd
>> {/helloboard,null,STOPPED}<mailto:
>> o.o.p.w.s.j.i.PaxWebServletContextHandler@6ae38bdd
>> %7b/dashboard,null,STOPPED%7d>
>> 2022-11-15T19:19:32.522+0530 CEF:1 | org.ops4j.pax.web.pax-web-spi |
>> 8.0.6 | INFO  | ID=273 THR=ploy /helloboard) CAT=OsgiServletContext
>>        MSG=Registering
>> OsgiServletContext{model=OsgiContextModel{WAB,id=OCM-233,name='/helloboard',path='/helloboard',bundle=helloboard,context=WebContainerContextWrapper{bundle=helloboard
>> [318],contextId='/helloboard',delegate=org.ops4j.pax.web.extender.war.internal.WebApplicationHelper@1641e385}}}
>> as OSGi service for "/helloboard" context path
>> 2022-11-15T19:19:32.523+0530 CEF:1 | org.ops4j.pax.web.pax-web-jetty |
>> 8.0.6 | INFO  | ID=270 THR=ploy /helloboard) CAT=JettyServerWrapper
>>        MSG=Configuring metadata of
>> OsgiContextModel{WAB,id=OCM-233,name='/helloboard',path='/helloboard',bundle=helloboard,context=WebContainerContextWrapper{bundle=helloboard
>> [318],contextId='/helloboard',delegate=org.ops4j.pax.web.extender.war.internal.WebApplicationHelper@1641e385
>> }}
>> 2022-11-15T19:19:32.523+0530 CEF:1 | org.ops4j.pax.web.pax-web-jetty |
>> 8.0.6 | INFO  | ID=270 THR=ploy /helloboard) CAT=JettyServerWrapper
>>        MSG=Configuring MIME and Locale Encoding mapping of
>> OsgiContextModel{WAB,id=OCM-233,name='/helloboard',path='/helloboard',bundle=helloboard,context=WebContainerContextWrapper{bundle=helloboard
>> [318],contextId='/helloboard',delegate=org.ops4j.pax.web.extender.war.internal.WebApplicationHelper@1641e385
>> }}
>> 2022-11-15T19:19:32.524+0530 CEF:1 | org.ops4j.pax.web.pax-web-jetty |
>> 8.0.6 | INFO  | ID=270 THR=ploy /helloboard) CAT=JettyServerWrapper
>>        MSG=Adding servlet
>> ServletModel{id=ServletModel-235,name='audit',urlPatterns=[/uem/data/audit/*,
>> /data/audit/*],servletClass=class
>> com..gcs.console.helloboard.AuditLogServlet,contexts=null}
>> 2022-11-15T19:19:32.524+0530 CEF:1 | org.ops4j.pax.web.pax-web-jetty |
>> 8.0.6 | INFO  | ID=270 THR=ploy /helloboard) CAT=JettyServerWrapper
>>        MSG=Adding servlet
>> ServletModel{id=ServletModel-236,name='jsp',urlPatterns=[*.jspx,
>> *.jsp],servletClass=class
>> org.ops4j.pax.web.jsp.JspServlet,contexts=[{WAB,OCM-233,/helloboard,/helloboard}]}
>> 2022-11-15T19:19:32.525+0530 CEF:1 | org.ops4j.pax.web.pax-web-jetty |
>> 8.0.6 | INFO  | ID=270 THR=ploy /helloboard) CAT=JettyServerWrapper
>>        MSG=Adding servlet
>> ServletModel{id=ServletModel-237,name='login-typeCheck',urlPatterns=[/loginType/*],servletClass=class
>> com..gcs.console.helloboard.LoginTypeCheckServlet,contexts=null}
>> 2022-11-15T19:19:32.525+0530 CEF:1 | org.ops4j.pax.web.pax-web-jetty |
>> 8.0.6 | INFO  | ID=270 THR=ploy /helloboard) CAT=JettyServerWrapper
>>        MSG=Adding servlet
>> ServletModel{id=ServletModel-238,name='repository',urlPatterns=[/data/docs/*,
>> /uem/data/docs/*],servletClass=class
>> com..gcs.console.helloboard.RepositoryServlet,contexts=null}
>> 2022-11-15T19:19:32.525+0530 CEF:1 | org.ops4j.pax.web.pax-web-jetty |
>> 8.0.6 | INFO  | ID=270 THR=ploy /helloboard) CAT=JettyServerWrapper
>>        MSG=Adding servlet
>> ServletModel{id=ServletModel-239,name='helloboard',urlPatterns=[/],servletClass=class
>> com..gcs.console.helloboard.HelloboardServlet,contexts=null}
>> 2022-11-15T19:19:32.525+0530 CEF:1 | org.ops4j.pax.web.pax-web-jetty |
>> 8.0.6 | INFO  | ID=270 THR=ploy /helloboard) CAT=JettyServerWrapper
>>        MSG=Adding servlet
>> ServletModel{id=ServletModel-240,name='basic-auth',urlPatterns=[/login/*],servletClass=class
>> com..gcs.console.helloboard.BasicAuthServlet,contexts=null}
>> 2022-11-15T19:19:32.525+0530 CEF:1 | org.ops4j.pax.web.pax-web-jetty |
>> 8.0.6 | INFO  | ID=270 THR=ploy /helloboard) CAT=JettyServerWrapper
>>        MSG=Changing filter configuration for context /helloboard
>> 2022-11-15T19:19:32.526+0530 CEF:1 | org.ops4j.pax.web.pax-web-jetty |
>> 8.0.6 | INFO  | ID=270 THR=ploy /helloboard) CAT=JettyServerWrapper
>>        MSG=Reconfiguration of welcome files for all resource servlets in
>> context
>> "OsgiContextModel{WAB,id=OCM-233,name='/helloboard',path='/helloboard',bundle=helloboard,context=WebContainerContextWrapper{bundle=helloboard
>> [318],contextId='/helloboard',delegate=org.ops4j.pax.web.extender.war.internal.WebApplicationHelper@1641e385
>> }}"
>> 2022-11-15T19:19:32.526+0530 CEF:1 | org.ops4j.pax.web.pax-web-jetty |
>> 8.0.6 | INFO  | ID=270 THR=ploy /helloboard) CAT=JettyServerWrapper
>>        MSG=Changing error page configuration for context /helloboard
>> 2022-11-15T19:19:32.526+0530 CEF:1 | org.ops4j.pax.web.pax-web-jetty |
>> 8.0.6 | INFO  | ID=270 THR=ploy /helloboard) CAT=JettyServerWrapper
>>        MSG=Starting Jetty context "/helloboard" with default Osgi Context
>> OsgiContextModel{WAB,id=OCM-233,name='/helloboard',path='/helloboard',bundle=helloboard,context=WebContainerContextWrapper{bundle=helloboard
>> [318],contextId='/helloboard',delegate=org.ops4j.pax.web.extender.war.internal.WebApplicationHelper@1641e385
>> }}
>> 2022-11-15T19:19:32.528+0530 CEF:1 | org.ops4j.pax.web.pax-web-jsp |
>> 8.0.6 | INFO  | ID=271 THR=ploy /helloboard) CAT=PaxWebTldScanner
>>        MSG=Searching for TLDs in pax-web-jsp bundle
>> 2022-11-15T19:19:32.639+0530 CEF:1 | org.ops4j.pax.web.pax-web-jsp |
>> 8.0.6 | INFO  | ID=271 THR=ploy /helloboard) CAT=PaxWebTldScanner
>>        MSG=Searching for TLDs in context configuration (web.xml)
>> 2022-11-15T19:19:32.639+0530 CEF:1 | org.ops4j.pax.web.pax-web-jsp |
>> 8.0.6 | INFO  | ID=271 THR=ploy /helloboard) CAT=PaxWebTldScanner
>>        MSG=Searching for TLDs in /WEB-INF/
>> 2022-11-15T19:19:32.640+0530 CEF:1 | org.ops4j.pax.web.pax-web-jsp |
>> 8.0.6 | INFO  | ID=271 THR=ploy /helloboard) CAT=PaxWebTldScanner
>>        MSG=Searching for TLDs in bundle helloboard [318]
>> 2022-11-15T19:19:32.828+0530 CEF:1 | org.ops4j.pax.web.pax-web-runtime |
>> 8.0.6 | INFO  | ID=272 THR=ploy /helloboard) CAT=HttpServiceEnabled
>>        MSG=Registering
>> EventListenerModel{id=EventListenerModel-252,listener='ch.qos.logback.classic.servlet.LogbackServletContextListener@70476be6
>> ',contexts=[{WAB,OCM-233,/helloboard,/helloboard}]}
>> 2022-11-15T19:19:32.828+0530 CEF:1 | org.ops4j.pax.web.pax-web-jetty |
>> 8.0.6 | INFO  | ID=270 THR=ploy /helloboard) CAT=JettyServerController
>>       MSG=Receiving Batch{"Registration of
>> EventListenerModel{id=EventListenerModel-252,listener='ch.qos.logback.classic.servlet.LogbackServletContextListener@70476be6',contexts=[{WAB,OCM-233,/helloboard,/helloboard}]}",
>> size=1}
>> 2022-11-15T19:19:32.830+0530 CEF:1 | org.ops4j.pax.web.pax-web-runtime |
>> 8.0.6 | INFO  | ID=272 THR=ploy /helloboard) CAT=HttpServiceEnabled
>>        MSG=Registering
>> EventListenerModel{id=EventListenerModel-251,listener='org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer$ContextDestroyListener@526531fa
>> ',contexts=[{WAB,OCM-233,/helloboard,/helloboard}]}
>> 2022-11-15T19:19:32.831+0530 CEF:1 | org.ops4j.pax.web.pax-web-jetty |
>> 8.0.6 | INFO  | ID=270 THR=ploy /helloboard) CAT=JettyServerController
>>       MSG=Receiving Batch{"Registration of
>> EventListenerModel{id=EventListenerModel-251,listener='org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer$ContextDestroyListener@526531fa',contexts=[{WAB,OCM-233,/helloboard,/helloboard}]}",
>> size=1}
>> 2022-11-15T19:19:32.834+0530 CEF:1 | org.eclipse.jetty.util |
>> 9.4.48.v20220622 | INFO  | ID=243 THR=ploy /helloboard) CAT=ContextHandler
>>                  MSG=Started
>> o.o.p.w.s.j.i.PaxWebServletContextHandler@6ae38bdd
>> {ServerHelloboard,/helloboard,null,AVAILABLE}<mailto:
>> o.o.p.w.s.j.i.PaxWebServletContextHandler@6ae38bdd
>> %7bServerDashboard,/dashboard,null,AVAILABLE%7d>
>>
>>
>>
>> From: Prashanth Ettaboina
>> Sent: 15 November 2022 16:28
>> To: 'iss...@karaf.apache.org' <iss...@karaf.apache.org<mailto:
>> iss...@karaf.apache.org>>; 'dev@karaf.apache.org' <dev@karaf.apache.org
>> <mailto:dev@karaf.apache.org>>; 'u...@karaf.apache.org' <
>> u...@karaf.apache.org<mailto:u...@karaf.apache.org>>
>> Subject: RE: Unable to create default RequestDispatcher
>>
>> Hi Grzegorz,
>>
>> I'm not registering the ExampleServlet anywhere, I'm configuring them in
>> web.xml.
>> In the web.xml we are giving the servlet and servlet mapping with
>> url-pattern and class path.
>>
>> Thanks,
>> Prashanth Ettaboina.
>>
>> From: Prashanth Ettaboina
>> Sent: 14 November 2022 19:11
>> To: iss...@karaf.apache.org<mailto:iss...@karaf.apache.org>;
>> dev@karaf.apache.org<mailto:dev@karaf.apache.org>; u...@karaf.apache.org
>> <mailto:u...@karaf.apache.org>
>> Subject: Unable to create default RequestDispatcher
>>
>> Hi Team,
>>
>> I have updated my KARAF version from 4.2.15 to 4.4.1 and Java from 8 to
>> 11 in my application.
>> Gone through the official Release notes and updated some dependencies as
>> well.
>>
>> Upgraded OSGI-Core from 6.0.0 to 8.0.0.
>> Upgraded osgi.compendium 5.0.0 to osgi.cmpn 7.0.0
>> Upgraded Jetty from 9.4.43.v20210629 to 9.4.46.v20220331.
>> Upgraded pax-web-spi from 4.3.4 to 7.2.11.
>> I'm using javax.servlet-api 3.1.0 version in my application.
>>
>> I'm unable to create default RequestDispatcher.
>> Please check the below code lines.
>>
>> public class ExampleServlet extends HttpServlet {
>>       protected void doGet(HttpServletRequest request,
>> HttpServletResponse response) throws ServletException, IOException {
>>              RequestDispatcher requestDispatcher =
>> getServletContext().getNamedDispatcher("default"); // get
>> getServletContext() is calling the method in GenericServlet.
>>              requestDispatcher.include(request, response);
>>       }
>> }
>>
>> the above code used to work fine before the version upgrades but now I'm
>> getting the requestDispatcher as null.
>>
>> Can anyone please look at it, let me know if I'm missing something.
>>
>> Thanks,
>> Prashanth Ettaboina
>>
>>
>>
>>

Reply via email to