Olá pessoal…
Estou utilizando o JCaptcha para fazer a validação de Captcha em um formulário de e-mail…
Tudo funciona normalmente em ambiente de desenvolvimento.
Porém, ao subir a aplicação para produção, o ocorre o problema. No formulário, a imagem não aparece (fica “quebrada”). Tentando acessar a URL da imagem http://www.atom.com.br/captcha.html recebo a seguinte exception:
com.octo.captcha.CaptchaException: access denied (java.util.PropertyPermission * read,write)
com.octo.captcha.image.gimpy.GimpyFactory.getImageCaptcha(GimpyFactory.java:79)
com.octo.captcha.image.ImageCaptchaFactory.getCaptcha(ImageCaptchaFactory.java:37)
com.octo.captcha.engine.GenericCaptchaEngine.getNextCaptcha(GenericCaptchaEngine.java:67)
com.octo.captcha.service.AbstractCaptchaService.generateAndStoreCaptcha(AbstractCaptchaService.java:148)
com.octo.captcha.service.AbstractManageableCaptchaService.generateCountTimeStampAndStoreCaptcha(AbstractManageableCaptchaService.java:339)
com.octo.captcha.service.AbstractManageableCaptchaService.generateAndStoreCaptcha(AbstractManageableCaptchaService.java:328)
com.octo.captcha.service.AbstractCaptchaService.getChallengeForID(AbstractCaptchaService.java:64)
com.octo.captcha.service.multitype.GenericManageableCaptchaService.getImageChallengeForID(GenericManageableCaptchaService.java:66)
br.com.atom.cms.web.controller.JCaptchaController.handleRequest(JCaptchaController.java:37)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:723)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:663)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:394)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:348)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5 logs.
Como dá pra ver, o problema ocorre em
" access denied (java.util.PropertyPermission * read,write) "
Ao meu ver, isso está ocorrendo por que o JCaptcha está tentando, por algum motivo, alterar as propriedades da JVM. Não sei que motivo é esse. Este problema só ocorre em ambiente de produção porque o site está num servidor compartilhado, com a JVM compartilhada, e então eles negam as permissões de escrita na JVM. Eles me disseram que não há como liberar estas permissões para ambientes compartilhados.
Gostaria de saber se alguém já passou por este problema, e se tem algum jeito de “configurar” o JCaptcha para não fazer estas alterações na JVM (se é que ele funcionará sem isso…).
Obrigado!