Why is my ORDS servlet not running even though I followed existing rules?

I am currently writing an ORDS plugin that is designed to filter specific requests. I don't really want the filtering to work, so I decided to follow the instructions provided by Oracle for their plugin APIs.

I configured most of the assembly using the Gradle task, which automatically:

  • WAR Downloads
  • Adds a plugin JAR (also previously built using Gradle) to ORDS
  • Make sure configdir is set appropriately

In fact, this is the automatic launch equivalent:

# Assuming the JAR is cURL'd in from somewhere...
java -jar ords.war plugin build/myPlugin.jar
java -jar ords.war configdir /home/makoto/ords-configuration

... and I am deploying it in my local IntelliJ instance.

This is what my servlet looks like. It is pretty simple.

import oracle.dbtools.plugin.api.di.annotations.Provides;
import oracle.dbtools.plugin.api.http.annotations.Dispatches;
import oracle.dbtools.plugin.api.http.annotations.PathTemplate;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@Provides
@Dispatches(@PathTemplate(("/plugin/servlet/")))
public class TestServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().println("this worked?!");
    }
}

, http://localhost:8080/ords/my_schema/plugin/servlet/, , . 404:

DispatcherNotFoundException [statusCode=404, reasons=[]]
    at oracle.dbtools.http.entrypoint.Dispatcher.choose(Dispatcher.java:87)
    at oracle.dbtools.http.entrypoint.Dispatcher.dispatch(Dispatcher.java:98)
    at oracle.dbtools.http.entrypoint.EntryPoint$FilteredServlet.service(EntryPoint.java:240)
    at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:73)
    at oracle.dbtools.url.mapping.RequestMapperImpl.doFilter(RequestMapperImpl.java:125)
    at oracle.dbtools.url.mapping.URLMappingBase.doFilter(URLMappingBase.java:103)
    at oracle.dbtools.url.mapping.filter.URLMappingFilter.doFilter(URLMappingFilter.java:148)
    at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:47)
    at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
    at oracle.dbtools.http.cors.CORSResponseFilter.doFilter(CORSResponseFilter.java:83)
    at oracle.dbtools.http.filters.HttpResponseFilter.doFilter(HttpResponseFilter.java:45)
    at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
    at oracle.dbtools.http.errors.ErrorPageFilter.doFilter(ErrorPageFilter.java:94)
    at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:47)
    at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
    at oracle.dbtools.http.auth.ForceAuthFilter.doFilter(ForceAuthFilter.java:44)
    at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:47)
    at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
    at oracle.dbtools.http.filters.Filters.filter(Filters.java:47)
    at oracle.dbtools.http.entrypoint.EntryPoint.service(EntryPoint.java:82)
    at oracle.dbtools.http.entrypoint.EntryPointServlet.service(EntryPointServlet.java:49)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at oracle.dbtools.rt.web.HttpEndpointBase.dispatchableServices(HttpEndpointBase.java:116)
    at oracle.dbtools.rt.web.HttpEndpointBase.service(HttpEndpointBase.java:81)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)

-- snip --

? , , "Hello World!". , - .

:

  • ORDS.
  • , ; Glassfish Tomcat.
  • APEX, , , . ORDS RESTful .
  • @Dispatches, , ; , .

, . , , , .


, , BalusC , JAR, , .

, , ...

enter image description here

... ...

com.foo.bar.baz.bing.servlet.TestServlet
oracle.dbtools.plugin.api.di.AnnotationsProvider

... , JAR , AnnotationsProvider.

oracle.dbtools.plugin.api.di.AnnotationsProvider

! !

JAR , :

enter image description here

..., , - .

+4
2

. BalusC .

ORDS , META-INF/oracle.dbtools.plugin.api.di.providers. , , @Provides. , , ORDS.

, , , , JAR. Neovim, FQN , . Nautilus/File Extractor, - FQN.

. , JAR. Gradle :

jar {
   duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}

*providers, ORDS.

, ; , - JAR, ORDS . , .

+2

JAR -, SPI. , ​​ORDS WAR. Ant ORDS SPI JAR. , Gradle, , .

, Gradle JAR, JAR Gradle , /META-INF/oracle.dbtools.plugin.api.di.providers FQN TestServlet. , ORDS WAR.

, PluginDemo , JAR, Ant , . , Gradle, , . , . , .

+1

Source: https://habr.com/ru/post/1679499/


All Articles