Hi Grzegorz,

I hope the latest version(8.0.13) should solve the issue.
Thank you for taking up the issue and being supportive, your responses are 
deeply appreciated.

Regards,
Prashanth

From: Prashanth Ettaboina
Sent: 16 November 2022 15:33
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: 16 November 2022 14:02
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,

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