Exception loading groovy class when start nginx

15 views
Skip to first unread message

Georgios Papageorgiou

unread,
Dec 13, 2017, 9:31:27 AM12/13/17
to Nginx-Clojure
Hello, 

I have this groovy class 

package gr.test.headers;

import java.io.IOException;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import static nginx.clojure.java.Constants.PHASE_DONE;
import nginx.clojure.ChannelCloseAdapter;
import nginx.clojure.java.NginxJavaFilterRequest;
import nginx.clojure.java.NginxJavaHeaderFilter;

public class ResponseFilterHeaders implements NginxJavaHeaderFilter {

static Map<Long, NginxJavaFilterRequest> headerFilterRequests = new ConcurrentHashMap<Long, NginxJavaFilterRequest>();
public ResponseFilterHeaders() {
}
@Override
public Object[] doFilter(int status, Map<String, Object> request, Map<String, Object> responseHeaders)
throws IOException {
System.err.println("============= Inside invoke ResponseFilterHeaders =============");
System.err.println(status);
System.err.println(request);
return PHASE_DONE;
}
}

and when i am trying to start nginx i get the excpetion

java.lang.ClassCastException: gr.test.headers.ResponseFilterHeaders cannot be cast to nginx.clojure.java.NginxJavaRingHandler
at nginx.clojure.groovy.NginxGroovyHandlerFactory.newInstance(NginxGroovyHandlerFactory.java:36)
at nginx.clojure.NginxHandlerFactory.fetchHandler(NginxHandlerFactory.java:46)
at nginx.clojure.NginxClojureRT.registerCode(NginxClojureRT.java:866)
2017/12/13 15:38:15 [error] 3796#6728: invalid groovy header_filter code : gr.test.headers.ResponseFilterHeaders

my nginx.conf file is like this...

  location / {
  resolver 8.8.8.8;
          rewrite_handler_type 'groovy';
          rewrite_handler_name 'gr.test.HelloGroovy';
  header_filter_type 'groovy';
  header_filter_name 'gr.test.headers.ResponseFilterHeaders';
  body_filter_type 'groovy';
  body_filter_name 'gr.test.body.ResponseFilterBody';
  proxy_pass $mytarget;
}

The first groovy class HelloGroovy is loaded by the NginxGroovyHandlerFactory with no error.
If i change the ResponseFilterHeaders and ResponseFilterBody classes as .java than .groovy and the types in nginx.conf from groovy to java 
the nginx is being started and all are working as expected.

I use nginx-clojure 0.4.5

Thanks
Reply all
Reply to author
Forward
0 new messages