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 >>> >>> >>
