I am currently running a java application with an MS SQL backend. The backend is access via a "com.inet.tds.TdsDriver" JDBC driver. I noticed that all of the other functionality of the system appears to be working as intended, but the flow map and the SQL Calls are not displaying any data.
In an attempt to try and troubleshoot the issue myself, I have gone through all of the tomcat logging and the AppDynamics application logging and I do not see any of the tell tale signs that there is a failure in accessing this data. I can surely provide the logs that I have poured over, but I feel that this needs a new set of eyes.
Okay, I think I have determined at least a part of the problem. Turns out that our developers have password protected the .jar file where our database connections are initiated.
So, now the question becomes, does AppDynamics have a method for accessing the calls made by the password protected .jar ?
Hi,
Thanks for writing to us. Regarding your initial query, we might need to check BCT.log(ByteCodeTransformation-<timestamp>.log) to check whether jdbc driver classes are getting instrumented by agent or not.
Regarding the other query, If webapp server is able to access(read) api part of jar(which is password protected) with out using any credentials then agent should not have any issue, if this is not the case, then agent will not be able to instrument classes part of the jar which is protected
Let us know if that clarifies your query.
Thanks,
Arun
Hi,
We understood that you are aware of attachemnets section as referred in attached screenshots while you posting/replying a message in this forum, hope you are able to see the attachements section
Please feel free to send the attachements to the email-id : akumar@appdynamics.com, if you have issues in attaching files in this forum
Thanks,
Arun
Hi,
Thanks for posting back and providing the logs. Please find the analysis of the logs and plan of action:
- We could see "com/inet/tds" classes loaded but not instrumented by agent and this could be inet classes are obfuscated. From logs we could see there was no instrumentation applied for jdbc calls.
We need to add custom configuration to see database activity and for custom configuration we need to figure out the classes those implements "java.sql.Connection", "java.sql.Statement" etc. Interface. for the following properties:
jdbc-callable-statements, jdbc-connections, jdbc-prepared-statements, and jdbc-statements
===========================
Applying method interceptor exit.jdbc.Connect at com/inet/tds/TdsDriver.connect ((Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;) id:90
..
Line 5961: [Tue Oct 01 12:32:16 EDT 2013] Matching class name com/inet/tds/ai [ClassLoader]org.apache.catalina.loader.WebappClassLoader[hashcode]26917317 : Class match found.
Line 5962: [Tue Oct 01 12:32:16 EDT 2013] Matching class name com/inet/tds/ai Matching class bytecode. : No class match found.
Line 9977: [Tue Oct 01 12:32:19 EDT 2013] Matching class name com/inet/tds/b [ClassLoader]org.apache.catalina.loader.WebappClassLoader[hashcode]26917317 : Class match found.
Line 9978: [Tue Oct 01 12:32:19 EDT 2013] Matching class name com/inet/tds/b Matching class bytecode. : No class match found.
============================
We support adding custom config in our pro version of product and we expect the lite version should work if add custom properties, Can you please add the following properties as referred in attached screenshots:
jdbc-prepared-statements: com.inet.tds.b
jdbc-statements: com.inet.tds.a
Once you have saved the changes, please restart the Liteagent and generate load on BT that makes JDBC calls and let us know how it goes. If you still see the issue, also can you check whether the BT discovered in BT list that is invoking JDBC calls.
Also can you please confirm the driver is in supported list:
http://litedocs.appdynamics.com/display/ADLite/Supported+Applications+and+Frameworks+for+Java#Suppor...
Let us know if that information helps.
Thanks,
Arun