2013-10-29 49 views
1

从某处我得到了一些愚蠢的和无效的URL请求Web服务,像如何捕捉WeldListener中的isHexDigit异常?

http://localhost:8080/WebApplication1/webresources/testme?stupidparameter=dyndcvgz/&%$\xa7edns 

我的示例应用程序看起来像下面,在GlassFish 4.0和jdk1.7u40

package WebApplication1; 

import javax.ejb.Stateless; 
import javax.ws.rs.Path; 
import javax.ws.rs.GET; 
import javax.ws.rs.Produces; 
import javax.ws.rs.QueryParam; 

@Stateless 
@Path("/testme") 
public class NewSessionBean { 
    /** 
    * http://localhost:8080/WebApplication1/webresources/testme?stupidparameter=dyndcvgz/&%$\xa7edns 
    * 
    * @param stupidparameter 
    * @return 
    */ 
    @GET 
    @Produces("text/plain") 
    public String getXml(
      @QueryParam("stupidparameter") String stupidparameter) { 
     System.out.println("stupidparameter = " + stupidparameter); 

     return "got " + stupidparameter; 
    } 
} 

,并与NetBeans中生成给定的测试网址我总是得到IllegalStateException:来自org.jboss.weld.servlet.WeldListener的isHexDigit。我怎样才能避免或处理这个异常?

回答

0

这看起来像Glassfish的一个问题,它处理带有特殊字符的参数的方式。

https://java.net/jira/browse/GRIZZLY-1538

直到问题在未来的版本中得到解决,你可以尝试编码参数为base64和里面的时候getXml()收到放慢参数对其进行解码回来。这将避免相关的特殊字符通过抛出异常的glassfish内部的逻辑。