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


Reply via email to