IBM Support

PI87522: getRequestUri() in a JAX-RS resource throws IllegalArgumentException when URI contains UTF8 characters

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • The application uses the following URI:
    /UcaSkeleton/uca/myResource/
    
    This application has a resource class as:
    
    @Path("/myResource")
    public class MyResource
    {
    
        @Context
        private UriInfo uriInfo;
    
        protected static String escapeUnicode(String input)
        {
            StringBuilder b = new StringBuilder(input.length());
            Formatter f = new Formatter(b);
            for (char c : input.toCharArray())
            {
                if (c < 128)
                {
                    b.append(c);
                }
                else
                {
                    f.format("\\u%04x", (int) c);
                }
            }
            return b.toString();
        }
    
        @GET
        public String doGet()
        {
            System.out.println(uriInfo.getRequestUri());
            return "Hello World";
        }
    
        @GET
        @Path("/{name}")
        public String doGet(@PathParam("name") String name)
        {
            System.out.println(uriInfo.getRequestUri());
            return "Hello " + escapeUnicode(name);
        }
    }
    
    The method "uriInfo.getRequestUri() in the doGet()" throws the
    following exception:
    
    [10/19/16 16:05:21:554 MDT] 000002bd webapp        E com.ibm.ws.
    webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet
    Error]-
    [com.avaya.uca.MyApplication]:
    java.lang.IllegalArgumentException: The
    http://10.129.177.222:9080//UcaSkeleton-3.2.0.0.7/uca/myResource
    /%60}%
    20%60? variable was not supplied a value. Provide a value for
    this
    variable.
            at org.apache.wink.common.internal.uritemplate.
    UriTemplateProcessor$Literal.assertValid(UriTemplateProcessor.ja
    va:380)
            at org.apache.wink.common.internal.uritemplate.
    UriTemplateProcessor$Literal.<init>(UriTemplateProcessor.java:36
    9)
            at org.apache.wink.common.internal.uritemplate.
    UriTemplateProcessor$AbstractPatternBuilder.literal
    (UriTemplateProcessor.java:600)
            at org.apache.wink.common.internal.uritemplate.
    JaxRsUriTemplateProcessor$JaxRsPatternBuilder.literal
    (JaxRsUriTemplateProcessor.java:240)
            at org.apache.wink.common.internal.uritemplate.
    UriTemplateProcessor$AbstractPatternBuilder.endCompile
    (UriTemplateProcessor.java:608)
            at org.apache.wink.common.internal.uritemplate.
    JaxRsUriTemplateProcessor.compile(JaxRsUriTemplateProcessor.java
    :139)
    ...
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server                                      *
    ****************************************************************
    * PROBLEM DESCRIPTION: Certain UTF-8 characters in resource    *
    *                      path are decoded incorrectly.           *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    Certain UTF-8 characters in resource path are incorrectly
    decoded. Server decodes the special character as '?' and is
    unable to find the resource.
    

Problem conclusion

Temporary fix

Comments

APAR Information

  • APAR number

    PI87522

  • Reported component name

    WEBSPHERE APP S

  • Reported component ID

    5724J0800

  • Reported release

    850

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2017-09-18

  • Closed date

    2017-11-27

  • Last modified date

    2017-12-13

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    WEBSPHERE APP S

  • Fixed component ID

    5724J0800

Applicable component levels

  • R850 PSY

       UP

  • R900 PSY

       UP

[{"Business Unit":{"code":"BU053","label":"Cloud \u0026 Data Platform"},"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"850","Line of Business":{"code":"LOB36","label":"IBM Automation"}}]

Document Information

Modified date:
19 October 2021