목차

Captcha 적용시 sound 출력 오류 문제

증상

16:24:38,295 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/portal].[CaptchaServlet]] (AJP-THREAD-202) JBWEB000236: Servlet.service() for servlet CaptchaServlet threw exception: java.lang.RuntimeException: javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input stream
        at nl.captcha.audio.Sample.<init>(Sample.java:48) [simplecaptcha-1.2.1.jar:]
        at nl.captcha.util.FileUtil.readSample(FileUtil.java:47) [simplecaptcha-1.2.1.jar:]
        at nl.captcha.audio.producer.RandomNumberVoiceProducer.getVocalization(RandomNumberVoiceProducer.java:89) [simplecaptcha-1.2.1.jar:]
        at nl.captcha.audio.AudioCaptcha$Builder.build(AudioCaptcha.java:108) [simplecaptcha-1.2.1.jar:]
...
Caused by: javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input stream
        at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1119) [rt.jar:1.7.0_80]
        at nl.captcha.audio.Sample.<init>(Sample.java:45) [simplecaptcha-1.2.1.jar:]
        ... 61 more

원인

JBoss 상에서 Captcha 적용된 서비스 운영시 음성듣기(sound)효과를 사용하면 아래와 같은 오류가 발생하면서 정상 동작하지 않는 경우가 있다.
이것은 .wav 형식은 EAP 6.x에서 기본적으로 지원되지 않기 때문에 발생하는 문제이다.

해결방법

1) {$EAP_HOME}/modules/system/layers/base/sun/jdk/main/modules.xml 을 열어 아래 내용을 추가

<path name="com/sun/media"/>
<path name="com/sun/media/sound"/>

2) 다음 파일을 {$EAP_HOME}/modules/system/layers/base/sun/jdk/main/service-loader-resources/META-INF/services/ 디렉토리로 복사

javax.sound.sampled.spi.AudioFileReader
javax.sound.sampled.spi.AudioFileWriter
javax.sound.sampled.spi.FormatConversionProvider
javax.sound.sampled.spi.MixerProvider

이 파일들은 JDK의 rt.jar 또는 /jre/lib/resources.jar 안에 /META-INF/services/ 아래에 있습니다.

참조링크