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/
아래에 있습니다.