Connecting to Oracle from Apigee Proxy

Not applicable

We need to call Oracle stored procedure from Apigee proxy. First I explored node.js option. However there is no node.js based Volos SQL connectors (http://docs.apigee.com/api-services/content/apigee-connectors) are available for oracle database. The connectors are available only for MySql, Postgres and SQL server. There is node.js module (https://www.npmjs.com/package/oracledb) from oracle but it required additional prerequisites Python, oracle client, C Compiler with support for C++ 11 etc which is not possible in our case.

So the next approach is to use java call out policy. We can call oracle procedure in java program and use java call out policy. For this no additional software's are required except jdbc driver. I assume it should work.

Is there any other alternative where we can connect to oracle database?

1 9 2,724
9 REPLIES 9

JDBC via java callout is your best bet. Personally I would push for having an application layer that talks to the DB and having the API layer talk to the app layer, but that might just be my inner three-tier firewall preference sneaking through.

YES! I agree with Carlos that architecturally, it feels better to have that function in an app layer.

Along those lines, @Sujnana Rai , is it possible for you to use Oracle REST Data services (aka ORDS)? If so, ORDS can act as that "application layer", which means external HTTP clients (like Apigee Edge) can connect to it, and invoke sprocs.

See this article for some details.

You can certainly write a Java callout that does this; in fact we (Apigee) could probably provide you with some example code to start you off. And it's going to work, and it will perform well. But, it feels cleaner, to me, to have a separate layer.

Not applicable

You can try using the node-oracledb that is a Node.js driver for connecting to Oracle Database.

https://blogs.oracle.com/opal/introducing-node-oracledb-a-nodejs-driver-for-oracle-database

i guess apigee is intended to run as a gateway esb residing in dmz layer as an architecture level.

You may need a traditional esb inside trusted network connecting to gateway esb for this purpose.

Its my opinion.

Thanks.

Sujith Mathew

Not applicable

I have similar question. Our customer wants to connect to Oracle db using stored procedures. Apigee Trireme module does not support this option and was last updated Dec 2, 2015. We can use node-oracledb, deploy it outside Apigee and use Apigee as simple proxy. However, the customer would like to run the application inside Apigee itself. Is there an option for that? Will Apigee upgrade Trieme module to support stored procedures? If yes, when exactly?

Are they running Edge themselves (OPDK) or using the SaaS service? I can understand the desire to run something in Edge directly (as a 'paas-like' or 'serverless-like' solution), but I would still worry about network isolation.

Regarding trireme or some other solution for running code of this sort, I think @Mukundha Madhavan is possibly the person to answer.

Not applicable

@Angelina What does "run the application inside Apigee" means. Is Apigee in your case an on prem instance ? If it is on prem you can easily use the node-oracledb to connect to the Oracle. If it is on cloud, you need to expose the oracle DB (may be read only access on insentitive data) to be accessible through internet and then use the node-oracledb to call that instance.

@Mohd Haziq

i meant deploying Node.js app in Apigee.

can you please share how this can be achived using Node.js