2013-10-29 79 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內部的邏輯。