Oracle Service Bus 12c (12.2.1) Native REST: Bug in HTTP GET in Pipeline?

While I was working on an Oracle tech presentation, I discovered the following issue with native REST and Oracle Service Bus 12c.

Version

SOA Quickstart / 12.2.1 OSB, running on RedHat derivative with Oracle JDK 8.

Description

OSB 12.2.1 Native REST pipelines don’t work with GET parameters.

Creating a native REST business services works fine, also adding a REST proxy service.
Once you insert a pipeline HTTP stops working correctly (since the URL parameters aren’t forwarded, a list will be returned by the backend service according to REST semantics), since URL parameters are not forwarded.

Steps to reproduce:

  • Use REST tech adapter to create a REST business service for an existing REST backend.
  • Define GET and POST methods. WADL will be created.
  • Test business service from WADL: both GET and POST will work.
  • Create proxy service from REST business service
  • Test proxy service, again GET and POST methods will work from OSB test client.
  • In JDev, drop a pipeline on the line connecting proxy and business service.
  • In JDev verify the pipeline configuration. it will display correct values.
  • Test the proxy service again, only POST will work. GET does not work anymore (now returns a whole list), since the URL parameters are not forwarded. Even an empty OSB pipeline will swallow the GET URL parameters.

Severity

IMHO this is a bug. I am currently in discussion with Oracle PM about it. Since I am working on another cloud gig, I cannot file a SR myself.

What is next?

I will let you know about updates / fixes or workarounds. Note, you could set the URL parameters as routing options to circumnavigate the issue for a particular use case.

Update 1 (Oct 2016)

I received no feedback from Oracle unfortunately. Anyway, if you experience the same issue let me know. It is important to share the knowledge here – I receive a lot of positive feedback from people with the same issues. Anyhow, also file a SR with MOS if you can. This is the official way to get it possibly fixed.

Update 2 (Jan-12, 2017)

There is a Patch 25184543 now with a backport to 12.2.1.2, see comments below. Gracias a Juan! Kudos for getting this through MOS and for sharing the knowledge.

Comments

  1. Robson says:

    I have the same problem.
    Do you have something Oracle return?
    Thanks for anything update in your blog.

    • Hi Robson,

      I received no informal feedback from Oracle on this unfortunately 🙁
      It’s obviously broken, I explored this use case with 10 senior architects of one of Germany’s biggest companies, and forwarded my issues to product management, since I could not open an SR.

      I recommend you to open a bug report so that the problem will be officially solved for you. Feel free to reference this posting if it
      helps you save some time describing the issue…

      Also I think there is a patch set available now, did you try applying it?
      Here is a discussion about it from Jon-Peter: http://blog.sysco.no/oracle/soa/osb/PatchOSBAndSOA/

      thanks for posting your feedback & feel free to post any updates, e.g. once an S.R. number exists.

      Frank

      • it really sucks so much.
        How Oracle does it? Same REST problem here. We cannot do they better software?
        have you a solution for this?

        J

      • Hi Javier,

        please file an official SR this is the only official way to get it fixed.

        I am in contact with Oracle PM about it but have not received any feedback (so far) – due to their internal processes this is all I can do at the moment. At workshops I usually work with customers through the most important issues.

        please keep posting any feedback (especially if you receive a fix).
        thanks!

  2. Senaka says:

    Have you try this to access URL parameters in OSB Pipeline?

    $inbound/ctx:transport/ctx:request/http:query-parameters/http:parameter[@name =’parameter_name’]/@value

  3. Suraj Nagvekar says:

    I am facing the same issue on Version 12.2.1.1.0, i tried every work around for 10 hours, no success.

    Did you get the resolution or the patch for this?

    • hi Suraj,

      I forwarded this issue on a private channel to OSB product management.
      However you should open an SR to get this officially fixed and to get feedback for your environment.

      obviously I cannot do support for Oracle products but I always try to help and inform my customers about such issues. feel free to redistribute this post including a link to here, to raise public awareness.

      thanks

      Frank

  4. Hi,

    I am also facing the same issue when I try to consume the REST service from a BPEL process.
    The invoke activity passing the default values, but not passing the variable values, if we don’t set the default value while configuring the REST adapter, then value is not apssed and we get the binding faule.


    Bad Request


    400

    {
    “error_message” : “Invalid request. Missing the ‘address’, ‘bounds’, ‘components’, ‘latlng’ or ‘place_id’ parameter.”,
    “results” : [],
    “status” : “INVALID_REQUEST”
    }

  5. Juan Pablo says:

    Hi,

    I am using 12.2.1.2.0 and has the same issue.

    As a workaround I created and Insert Action before the Rounting with this.

    To work from Service Bus Console…

    Insert:

    value: $inbound/ctx:transport/ctx:request/tp:user-metadata
    Position: as child of
    Location: outbound
    ./ctx:transport/ctx:request

    But from Postman the data is coming in a different place.

    Maybe you can do the same with http:relative-URI or the inbound element that you need.

    I hope it helps.

    JP

    • Thanks Juan for your feedback on this, highly appreciated!

      • Juan Pablo says:

        Hi Frank,

        At least we have a bug number.

        Bug 25184543 : OSB Rest Native don’t pass http headers to a Rest Reference when put a Pipeline

        JP

      • Excellent Juan, I just checked it out on MOS, and thanks for your heads up!
        I filed a couple of other SRs regarding 12.2.1.2 issues – will write about it soon.

      • Hmm, I must say good work, Juan!
        I can see in MOS it will be fixed in 12.2.1.3 – well done 🙂

      • Juan Pablo Vadell says:

        HI Frank,

        I asked for a backport to 12.2.1.2 and here it is!

        Patch 25184543: OSB Rest Native don’t pass http headers to a Rest Reference when put a Pipeline

        Solved!.

        JP

  6. The patch 25184543 doesn’t solves the problem, at least the one made for version 12.2.1.2 . The error is related with query params, not with headers. Has anyone any progress with this? Thanks in advance.

Speak Your Mind

*