0

APIに接続するために、リボンと偽装でいくつかのテストを行っています。API はスプリング ブートを使用して実行されています。

@Controller
@EnableAutoConfiguration
public class MovieService {

    @RequestMapping("/")
    @ResponseBody
    List<String> findAllMovies() {
        System.out.println("finding all movies");
        return Arrays.asList("start wars", "inception", "the martian");
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(MovieService.class, args);
    }
}

これは、feign インターフェイスを使用した私のクライアント コードです。

public interface MovieService {

    @RequestLine("GET /")
    List<String> findAllMovies();

}

私が単独で偽物を使用すると、すべてが機能します:

public class MovieClient {

    public static void main(String args[]) {
        MovieService movieService = Feign.builder()
                .decoder(new GsonDecoder())
                .target(MovieService.class, "http://localhost:8080");
        System.out.println(movieService.findAllMovies());

    }

}

しかし、リボンも使用する場合:

public class MovieClient {

    public static void main(String args[]) {
        ConfigurationManager.getConfigInstance().setProperty("MovieService.ribbon." + CommonClientConfigKey.MaxAutoRetriesNextServer, "3");
        ConfigurationManager.getConfigInstance().setProperty("MovieService.ribbon." + CommonClientConfigKey.ListOfServers, "localhost:8080");

        MovieService movieService = Feign.builder().client(RibbonClient.create()).target(MovieService.class, "https://MovieService");
        System.out.println(movieService.findAllMovies());
    }

}

スプリング ブート サーバーのログに次のエラーが表示されます。

2016-01-06 21:26:50.670  INFO 61353 --- [nio-8080-exec-1] o.a.coyote.http11.Http11NioProcessor     : Error parsing HTTP request header
 Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.

java.lang.ArrayIndexOutOfBoundsException: -64
    at org.apache.coyote.http11.AbstractNioInputBuffer.parseHeader(AbstractNioInputBuffer.java:474) ~[tomcat-embed-core-8.0.30.jar:8.0.30]
    at org.apache.coyote.http11.AbstractNioInputBuffer.parseHeaders(AbstractNioInputBuffer.java:381) ~[tomcat-embed-core-8.0.30.jar:8.0.30]
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1025) ~[tomcat-embed-core-8.0.30.jar:8.0.30]
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674) [tomcat-embed-core-8.0.30.jar:8.0.30]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) [tomcat-embed-core-8.0.30.jar:8.0.30]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) [tomcat-embed-core-8.0.30.jar:8.0.30]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_05]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_05]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.0.30.jar:8.0.30]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_05]

私のスプリングブートアプリで次のヘッダーを受け取っているようです:

2016-01-06 21:43:52.606 DEBUG 61415 --- [nio-8080-exec-9] o.a.c.http11.InternalNioInputBuffer      : Received [ÏËV|jà^kgáxþæèðMn¨{oý²]Aì7FÀ#À'<À%À)g@À  À/ÀÀ32ÀÀÀÀÀ+À/À-À1¢ÀÀ
ÿ\
42  

私が間違っていることは何ですか?何か不足していますか?

4

0 に答える 0