私はサーバーのファイルシステムからビデオをストリーミングしようとしています。 SpringからStreamingResponseBodyを使用してレスポンスとして返されます。だから私はストリーミングを非同期に処理しなければならない。 私はweb.xmlとSpring MVCの設定方法について多くの研究を行いました。私はこの簡単なチュートリアルに従いました:http://shengwangi.blogspot.de/2015/09/asynchronous-spring-mvc-hello-world.html しかし残念ながら成功しません! "非同期サポートは、サーブレットと非同期リクエスト処理に関連するすべてのフィルタで有効にする必要があります。これは、サーブレットAPIを使用するJavaコード、またはサーブレットとフィルタ宣言に" true "を追加することで行われます。 web.xml "とは言いましたが、私はすべてのことを正しく行いました。 は、ここにweb.xmlでの私のサーブレット構成だServlet 3 Spring MVCでの非同期サポートが機能しません。
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/application-context.xml</param-value>
</context-param>
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>production</param-value>
</context-param>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ASYNC</dispatcher>
</filter-mapping>
<filter>
<display-name>springSecurityFilterChain</display-name>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ASYNC</dispatcher>
</filter-mapping>
Spring MVCの構成のコードsnipt:以来、私は任意の助けに感謝
@GetMapping("/videos/play")
public StreamingResponseBody stream(@RequestParam("code") String code, @RequestParam("locale") String locale) throws FileNotFoundException{
File video = videoService.getVideo(code, locale);
final InputStream videoInputStream = new FileInputStream(video);
return (outputStream) -> {
copyToStream(videoInputStream, outputStream);
};
}
private void copyToStream(final InputStream is, OutputStream os)
throws IOException {
byte[] data = new byte[2048];
int read = 0;
while ((read = is.read(data)) > 0) {
os.write(data, 0, read);
}
os.flush();
}
:ここ
<mvc:annotation-driven>
<mvc:async-support default-timeout="30000" task-executor="taskExecutor">
</mvc:async-support>
</mvc:annotation-driven>
<bean id="taskExecutor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="5" />
<property name="maxPoolSize" value="50" />
<property name="queueCapacity" value="10" />
<property name="keepAliveSeconds" value="120" />
</bean>
が要求ハンドラです私は3日前に苦労している! 私はTomcat8.0とSpring 4.3.6を使用しています
こんにちは - 私は同様の問題に直面し、フィルタの装飾を追加するソリューションを試してみましたよ。しかし、エラーが発生しました - org.springframework.beans.factory.NoSuchBeanDefinitionException: 'springSecurityFilterChain'という名前のBeanはありませんplsは私をガイドできますか? – csharpnewbie