Anil,
Typically, your custom processor should have a property, something like
public static final PropertyDescriptor DBCP_SERVICE = new
PropertyDescriptor.Builder()
.name("Database Connection Pooling Service")
.description("The Controller Service that is used to obtain
connection to database")
.required(true)
.identifiesControllerService(DBCPService.class)
.build();
When your NiFi user sets up the flow, he or she puts a reference to
NiFi's DBCPConnectionPool in it. In configuring that (a
ControllerService, you tell it that it's Oracle, location, etc.)
Then, your onTrigger() code would do something like this:
final DBCPService dbcpService =
context.getProperty(DBCP_SERVICE).asControllerService(DBCPService.class);
and later...
try (final Connection connection = dbcpService.getConnection())
{
try (final Statement stmt =
connection.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_READ_ONLY))
etc.
Does this help?
Russ
On 03/14/2017 11:54 AM, Anil Rai wrote:
We have a use case to connect to oracle database and subscribe to Advanced
Queuing (https://docs.oracle.com/cd/A58617_01/server.804/a58241/ch_aq.htm).
Below is the java snippet to establish this connection from a java client.
We can run this in eclipse and consume message from the advanced queue.
**************
Class.forName("oracle.jdbc.driver.OracleDriver");
connection = DriverManager.getConnection("
jdbc:oracle:thin:@xxx-yyy.zzz.com:1521/DB1","user", "pwd");
connection.setAutoCommit(true);
Class.forName("oracle.AQ.AQOracleDriver");
aqSession = AQDriverManager.createAQSession(connection);
System.out.println("AQ Session --->" + aqSession);
********************
We have created a custom processor in Nifi. This processor is getting the
connection string using getConnection function of Standard DBCP service.
The problem is, the connection object that is retrieved from eclipse versus
what is returned from DBCP service is different. We have made sure we are
referring to the same jar both in eclipse and Nifi (ojdbc7.jar)
It fails @ aqSession = AQDriverManager.createAQSession(connection);
The connection object that comes from DBCP is not what is expected by
AQDriverManager.
Any help is greatly appreciated.
Thanks
Anil