1

从某个地方我收到了一些对 Web 服务的愚蠢和无效的 URL 请求,比如

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

我的示例应用程序如下所示,在 glassfish 4.0 和 jdk1.7u40 上使用 Netbeans 构建

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;
    }
}

并且使用给定的测试 url 我总是得到 IllegalStateException: isHexDigit from org.jboss.weld.servlet.WeldListener。如何避免或处理此异常?

4

1 回答 1

0

这似乎是 Glassfish 的问题,它处理带有特殊字符的参数的方式。

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

在将来的版本中解决该问题之前,您可以尝试将参数编码为 base64 并在内部接收到参数时将其解码回来getXml()。这将避免相关的特殊字符通过引发异常的 glassfish 内部的逻辑。

于 2013-12-12T15:54:38.213 回答