Author Info
Chris Malek

Chris Malek is a PeopleTools® Technical Consultant with two decades of experience working on PeopleSoft enterprise software projects. He is available for consulting engagements.

About Chris Work with Chris
Looking for pain-free PeopleSoft web services? 😀
PeopleSoft Simple Web Services (SWS)

Introducing a small but powerful PeopleSoft bolt-on that makes web services very easy. If you have a SQL statement, you can turn that into a web service in PeopleSoft in a few minutes.

Contents

Common REST Issues & Trouble Shooting

Below are a collection of common issues and their solutions.

500 Error

If you are getting a response that looks like the following:

HTTP/1.1 500 Internal Server Error
Connection: close
Date: Tue, 01 Oct 2019 00:02:01 GMT
Content-Length: 121
Content-Type: text/plain; charset=UTF-8; encoding="UTF-8"

500 Internal Server Error
The server encountered an unexpected condition which prevented it from fulfilling the request.

The source of the issue is likely your URL is not matching exactly to one of the “URI Indexes” setup on the service operation.

  • This could be a case issue with your path or query string. They are all case-sensitive.
  • You have a typo in the query string.
  • You version name is in URL but in the routing the external alias has it removed (or visa versa)
  • Make sure you are including the Content-Type header in the request like this example for xml Content-Type: application/xml. You may see an error in the msgLog.html that gives you and indication that you did not include it.

These two requests are different because the “EMPLID” query string parameter has a different case.

https://server/PSIGW/RESTListeningConnector/HRMS/getStudent?Emplid=123

https://server/PSIGW/RESTListeningConnector/HRMS/getStudent?emplid=123

I would really like to see some better error handling around this issue from Oracle.

Another common cause is having a forward slash ("/") as the first character in the URI template. I have wasted many hours debugging this one. Do not start the URIs with a forward slash as it is implied.

500 Error with Unable to find a routing corresponding to the incoming request message.

HTTP/1.1 500 Internal Server Error
connection: close
content-length: 131
content-type: text/plain; charset=UTF-8; encoding=UTF-8
date: Tue, 14 May 2024 11:54:24 GMT
x-oracle-dms-ecid: 9ea3a9d4-ac21-43d1-b914-c837f7983bf5-00000035
x-oracle-dms-rid: 0

500 Internal Server Error
Integration Service: Unable to find a routing corresponding to the incoming request message. (158,505)

This is a user name and password issue! It is NOT a routing issue. The user name and password are not correct. This is a very misleading error message.

OnRequest could not run to completion

If your message response looks like the following, you need to look in the application server log files.

<HTML><HEAD><TITLE>RESTListeningConnector</TITLE></HEAD><BODY>OnRequest could not run to completion.</BODY></HTML>

You might see something like this:

(3) The Document Primitive: nameType defined length is smaller than the value: Y (0,0)
  • In some cases, you may be passing parameters that are longer than you have defined on the “Document template”. I have made this mistake using “string” primitives on the template and forgot to set a length. I generally try to use text primitive types which don’t have this issue as there is no length. This might not be you issue but look carefully at the log file.
Zero Length String
  • You can also get this error if you do not have a handler configured on the Service Operation. The funny thing here is that the RESTListeningConnector returns HTTP Status 200 but this is an error.

Parameters Parsed with Additional Query string parameters.

When your handler code runs and pulls the parameters from the document template there are times when you may get back additional parameters that you had expected to be parsed as separate parameters. This can be perplexing but also you can use this as a “feature”. I have found this can be useful if you want to parse you own parameters.

If your service operation URI template looks like this where this is just one template consisting of {PATHANDQUERYSTRING}

Catch All URI Template

This will end up “catching” all parameters in that string. If your clients call the web service with different “paths” and query strings then all of that will be stuff into the PATHANDQUERYSTRING variable that get in the handler. The string will be URL Encoded.

Here is a table to visual what what is invoked and what is parsed.

Path and Query String Parsed Value
/A A
/A/B/C A/B/C
A?val1=1 A?val1=1
/A?val1=1&val2=4&val3=34,3 A?val1=1&amp;val2=4&amp;val3=34,3

Never Get a Response

If you submit a transaction to the RESTListeningConnector and you don’t get back a response or it times out I have seen issues where the path that your client is submitting does not match a path in the URI Templates In once instances, the client was submitting a trailing “/” but the template did not have that defined as a valid template. In this case, it was actually hanging up the application server entirely. This looks like a tools bug as it should have returned quickly with an invalid routing.

Parameters are NOT parsing

  • TODO: Include example here