Hi,

I'm trying to add a filter on a Knox instance so that I'll be able to add a custom logic to (every / specific) REST requests to Knox. I thought to use the "Class Path" feature [1], so I created a Maven Java project, generated a ".jar" file and placed it in the "$GATEWAY_HOME/ext" folder Then, I thought it was necessary to link my custom class [2] on the "gateway.xml" files of the resources I wanted, e.g.

./data/deployments/sandbox.topo.16977ef2478/%2F/WEB-INF/gateway.xml

added:

<filter>
    <role>rewrite</role>
    <name>url-rewrite</name>
<class>com.test.knox.MyUrlRewriteServletFilter</class>
</filter>

then I made a REST request to Knox:

curl -i -k -u admin:admin-password -X GET 'https://localhost:8443/gateway/sandbox/webhdfs/v1/?op=LISTSTATUS'

but my filter is not called at all (I cannot see the log) and I'm not sure whether it's because the class is not loaded or the filter is placed in the wrong place or whatever.

On [4] you can see the project I have built.

So my questions are:

 * what am I doing wrong or missing?
 * is there a better way to do that? I just need to add a logic when
   executing REST requests to Knox and make another REST call to an
   external service I need.


Thank you!
Regards,
Matteo

[1] https://knox.apache.org/books/knox-1-2-0/dev-guide.html#Class+Path
[2] https://github.com/mat-ale/apache-knox-filter/blob/master/src/main/java/com/plainid/ext/MyUrlRewriteServletFilter.java
[3]
[4] https://github.com/mat-ale/apache-knox-filter


Reply via email to