Skip to Main Content

ORDS, SODA & JSON in the Database

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

REST on ORDS 2.0.8 and DB 12.1.0.2 accessing PDB returns invalid username / password

Roel HartmanAug 5 2014 — edited Oct 9 2014

Yesterday I upgraded my database to 12.1.0.2.

Then I removed APEX from the container database and (re)installed it in a PDB (called apex42).

Downloaded and configured ORDS 2.0.8.

Now APEX runs just fine. Great!

Now I want to use the REST stuff again. So I ran the apex_rest_config.sql - which creates the APEX_REST_PUBLIC_USER and APEX_LISTENER users. I verified I can log in using SQLPlus with these users and passwords. Ran ORDS config again to store the passwords in the XML files.

But testing REST services returns this (after switching debug on):

    Error during evaluation of resource template: GET hr/employees/, SQL Error Code: 1,017, SQL Error Message: ORA-01017: invalid username/password; logon denied

Request Path passes syntax validation

Mapping request to database pool: PoolMap [_failed=false, _lastUpdate=1407103200000, _pattern=/demo/, _poolName=apex, _regex=null, _type=BASE_PATH, _workspaceIdentifier=DEMO, _serviceName=null]

Applied database connection info

Attempting to process with PL/SQL Gateway

Not processed as PL/SQL Gateway request

Attempting to process as a RESTful Service

hr/employees/ matches: hr/employees/ score: 0

Choosing: oracle.dbtools.rt.resource.templates.jdbc.JDBCResourceTemplateDispatcher as current candidate with score: Score [handle=JDBCURITemplate [scopeId=null, templateId=3177324644782361|3177909187782428, uriTemplate=hr/employees/], score=0, scope=SecurityConfig [constraint=none, realm=NONE, logonConfig=NONE], originsAllowed=[], corsEnabled=true]

Determining if request can be dispatched as a Tenanted RESTful Service

Request path has one path segment, continuing processing

Tenant Principal already established, cannot dispatch

Chose oracle.dbtools.rt.resource.templates.jdbc.JDBCResourceTemplateDispatcher as the final candidate with score: Score [handle=JDBCURITemplate [scopeId=null, templateId=3177324644782361|3177909187782428, uriTemplate=hr/employees/], score=0, scope=SecurityConfig [constraint=none, realm=NONE, logonConfig=NONE], originsAllowed=[], corsEnabled=true] for: GET hr/employees/

hr/employees/ is a public resource

Using generator: oracle.dbtools.rt.json.query.JSONQueryGenerator

Performing JDBC request as: DEMO

Error during evaluation of resource template: ORA-01017: invalid username/password; logon denied

These are the “db”-entries in the defaults.xml file.

<entry key="db.hostname">localhost</entry>

<entry key="db.password">@05D44DA435E3E78677DDE9C471942412B5</entry>

<entry key="db.port">1522</entry>

<entry key="db.servicename">apex42</entry>

contents of the apex_rt.xml file:

<entry key="db.password">@05ED7A07BBB7570F17EA7258C03F13673C</entry>

<entry key="db.username">APEX_REST_PUBLIC_USER</entry>

My assumption is that the REST service is trying to log into the CDB and not the PDB - but that assumption might be false …

What could I do to get this running ?

This post has been answered by Roel Hartman on Aug 6 2014
Jump to Answer

Comments

NickR2600-Oracle

So when would it be beneficial to have an abstract method in a super class? One answer would be because the sub classes have no shared functionality. Or in other words, because the functionality is so different between subclasses. Or because the functionality can't be defined yet.

In Java Puzzle Ball, I have an abstract class called GameObject. It's inherited by a lot of different concrete classes: bumpers, assignable behaviors, level geometry... And one if its responsibilities is to define what happens when a collision occurs. But I have to leave the collision effect method abstract. The geometry of all these objects are so dramatically different, there isn't any shared functionality I can write to define how the physics of all these different angles and shapes should work. The best I can do is write an abstract method as a promise to implement the functionality somewhere later down the inheritance structure.

pastedImage_0.png

AjayKumarGuttikonda

Thank you so much for taking time out and answering the question in very elaborated manner. I understand, the conclusion is Account class need not be abstract as all methods are implemented and also there is no problem Account class being abstract as the abstract class by definition can have all methods implemented. Can you please also explain why in this case it is beneficial to have Account class as abstract since we have implemented all methods.

NickR2600-Oracle

You got it.  I'm glad you're enjoying the course

It's more of a design choice in this example.  Even though Account could technically exist as a concrete class, I only meant for it to be a container for all the fields and methods shared by savings and checking accounts.  So to reinforce that decision and prevent instances of Accounts from getting created, the class is left abstract.

One other thing to consider is that Accounts don't have an accountType field, but savings and checking account classes do.  Looking back, maybe I should have written an abstract method into the Account class to somehow enforce the need for this field.

1 - 3
Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Nov 6 2014
Added on Aug 5 2014
7 comments
3,545 views