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



Reply via email to