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 を使用すると、常に org.jboss.weld.servlet.WeldListener から IllegalStateException: isHexDigit を取得しました。この例外を回避または処理するにはどうすればよいですか?

4

1 に答える 1

0

これは、特殊文字を使用してパラメータを処理する方法である Glassfish の問題のようです。

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

将来のリリースで問題が解決されるまでは、パラメータを base64 としてエンコードし、パラメータが内部で受信されたときにデコードして戻すことができますgetXml()。これにより、関連する特殊文字が、例外がスローされるグラスフィッシュ内のロジックを通過することを回避できます。

于 2013-12-12T15:54:38.213 に答える