基本的には、Javaを使用してSBTアプリケーションでカスタムWSClientを作成しようとしています。私は注射依存を望まないので、私はdocumentationに示されている方法を使用しています。カスタムWSClientを作成するにはAkka.stream.Materializerオブジェクトが必要ですが、抽象的なのでMaterializerオブジェクトを作成することはできません。PlayWS - マテリアライザーを使用したJavaを使用したWSClientの作成
private Materializer materializer;
private WSClient wsClient() throws IOException {
scala.Option<String> noneString = scala.None$.empty();
WSClientConfig wsClientConfig = new WSClientConfig(
Duration.apply(120, TimeUnit.SECONDS), // connectionTimeout
Duration.apply(120, TimeUnit.SECONDS), // idleTimeout
Duration.apply(120, TimeUnit.SECONDS), // requestTimeout
true, // followRedirects
true, // useProxyProperties
noneString, // userAgent
true, // compressionEnabled/enforced
SSLConfigFactory.defaultConfig());
AhcWSClientConfig clientConfig = AhcWSClientConfigFactory.forClientConfig(wsClientConfig);
// Add underlying asynchttpclient options to WSClient
AhcConfigBuilder builder = new AhcConfigBuilder(clientConfig);
DefaultAsyncHttpClientConfig.Builder ahcBuilder = builder.configure();
AsyncHttpClientConfig.AdditionalChannelInitializer logging = new AsyncHttpClientConfig.AdditionalChannelInitializer() {
@Override
public void initChannel(io.netty.channel.Channel channel) throws Exception {
}
};
ahcBuilder.setHttpAdditionalChannelInitializer(logging);
// #ws-custom-client
WSClient customWSClient = new play.libs.ws.ahc.AhcWSClient(ahcBuilder.build(), materializer);
// #ws-client
// #ws-close-client
customWSClient.close();
return customWSClient;
}
注 - 私はこれを進める必要がありますどのように依存性の注入に
を使用したくありませんか? Akka Streams docsから
まず、なぜあなたは依存性注入を避けようとしていますか?これがフレームワークの仕組みです。なぜあなたはそれを避けようとしていますか? – marcospereira
私はフレームワーク上で動くと思われるAPIを開発しているので、だから私は別のプレイアプリを作成する場合は、私はプレイアプリの中でプレイアプリを実行します。 –