tomcatservletstomcat9opengrok

OpenGrok And Tomcat 404 not found


I am trying to setup OpenGrok in fresh Linux environment. I have followed the instructions from: https://github.com/oracle/opengrok/wiki/How-to-setup-OpenGrok.

Once I setup OpenGrok and Tomcat, I have copied the source.war from Opengrok to Tomcat/webapps. After copying when I tried to connect http://localhost:8080/source it always give me this 404 not found error:

HTTP Status 404 – Not Found
Type Status Report

Message The requested resource [/source] is not available

Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

Apache Tomcat/9.0.48

I am using the latest OpenGrok version and Tomcat version: Apache Tomcat/9.0.48

Here's the detailed error from the OpenGrok Logs:

11:49:08 SEVERE: Couldn't notify the webapp on http://localhost:8080/source.
jakarta.ws.rs.NotFoundException: HTTP 404 Not Found
        at org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:916)
        at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:723)
        at org.glassfish.jersey.client.JerseyInvocation.lambda$invoke$1(JerseyInvocation.java:643)
        at org.glassfish.jersey.client.JerseyInvocation.call(JerseyInvocation.java:665)
        at org.glassfish.jersey.client.JerseyInvocation.lambda$runInScope$3(JerseyInvocation.java:659)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:205)
        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:390)
        at org.glassfish.jersey.client.JerseyInvocation.runInScope(JerseyInvocation.java:659)
        at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:642)
        at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:417)
        at org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:313)
        at org.opengrok.indexer.index.IndexerUtil.enableProjects(IndexerUtil.java:79)
        at org.opengrok.indexer.index.Indexer.main(Indexer.java:334)

Couldn't notify the webapp on http://localhost:8080/source: HTTP 404 Not Found.
11:49:09 SEVERE: Failed to send configuration to http://localhost:8080/source (is web application server running with opengrok deployed?)
java.io.IOException: InboundJaxrsResponse{context=ClientResponse{method=PUT, uri=http://localhost:8080/source/api/v1/configuration?reindex=true, status=405, reason=Method Not Allowed}}
        at org.opengrok.indexer.configuration.RuntimeEnvironment.writeConfiguration(RuntimeEnvironment.java:1427)
        at org.opengrok.indexer.index.Indexer.sendToConfigHost(Indexer.java:1149)
        at org.opengrok.indexer.index.Indexer.main(Indexer.java:378)

Need help to resolve this 404 tomcat error and setting up opengrok.

Thanks in Advance


Solution

  • On the installation page you cite, under requirements you find:

    A servlet container like GlassFish or Tomcat 10.0 or later

    (emphasis mine).

    source.war is a Jakarta EE 9 application, it will not work on Tomcat 9.0. Since version 1.6.0 OpenGrok requires a Servlet 5.0 container.