Anil

When you say "it does not like the connection object. . .” what do you mean by 
that?
Can you please provide stack trace or some other details?

Cheers
Oleg

> On Mar 14, 2017, at 4:06 PM, Anil Rai <[email protected]> wrote:
> 
> Thanks Russ. Yes, we are doing exactly the same thing.
> 
>        driverClass = context.getProperty(DRIVER_CLASS).getValue();
>        queueName = context.getProperty(QUEUE_NAME).getValue();
>        databaseSchema = context.getProperty(DATABASE_SCHEMA).getValue();
>        consumerName = context.getProperty(CONSUMER_NAME).getValue();
>        eventName = context.getProperty(EVENT_NAME).getValue();
>        DBCPService connection =
> context.getProperty(JDBC_CONNECTION_POOL).asControllerService(DBCPService.class);
>        Connection conn = connection.getConnection();
> *        aqSession = AQDriverManager.createAQSession(connection);*
> 
> The underlined code above fails as it does not like the connection object
> that is returned by the DBCPService.
> 
> Regards
> Anil
> 
> 
> On Tue, Mar 14, 2017 at 2:43 PM, Russell Bateman <[email protected]>
> wrote:
> 
>> 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_SERVI
>> CE).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