Anil Unfortunately the attachment didn’t come thru. Perhaps you can just paste the relevant part of the exception.
Cheers Oleg On Mar 15, 2017, at 8:58 AM, Anil Rai <[email protected]<mailto:[email protected]>> wrote: Hi Oleg, Thanks. attached is the log. Let me know if you want us to change the log levels and re-run and send you additional logs? On Tue, Mar 14, 2017 at 5:12 PM, Oleg Zhurakousky <[email protected]<mailto:[email protected]>> wrote: Anil I understand that you are having an issue and we are here to help, but we can only do this if you help us just a little more, so it would be very helpful if you provided a stack trace (I understand if you have to mask sensitive information). The “. . .fails saying cannot create AQSession. . .” could be due to various reasons and until we see the stack trace everything here would be speculation. I hope you understand Cheers Oleg > On Mar 14, 2017, at 4:59 PM, Anil Rai > <[email protected]<mailto:[email protected]>> wrote: > > Here is the behaviour that we have seen so for....hope this helps > > 1. When we run the java code in eclipse, it works and this is the > connection object that is printed -> > oracle.jdbc.driver.T4CConnection@6f75e721 > 2. When we hard code all the values as mentioned in my first email in a > custom processor, deploy that. It works as well. The above connection > object gets printed. > 3. When we change the code in the custom processor to use the DBCP > connection service, deploy that. The connection object that gets printed is > > jdbc:oracle:thin:@oged-scan.og.ge.com:1521/ORPOGPB1<http://jdbc:oracle:thin:@oged-scan.og.ge.com:1521/ORPOGPB1> > and this does not > work. aqSession = AQDriverManager.createAQSession(connection) fails > saying cannot create AQSession. > > Thanks > Anil > > > On Tue, Mar 14, 2017 at 4:13 PM, Oleg Zhurakousky < > [email protected]<mailto:[email protected]>> wrote: > >> 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]<mailto:[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]<mailto:[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<http://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 >>>>> >>>>> >>>> >> >>
