lotus-domino

Locating JAR file used by agent


More than 20 years ago I created a Domino agent that calls Java code and uses JDBC to write information into a DB2 database. Despite its questionable quality this agent has been running since then and now needs to be migrated to a completely different platform because we are shutting down Domino completely.

The colleagues that are now in charge of the agent need to have that JAR in order to decompile it and analyze its behaviour.

Yes, I know sourcecode should be available in a repository, but it isn't ;-)

Yes, I know that this reverse engineering approach has some risks, but we don't have better options ;-)

Unfortunately we can't find the JAR file anywhere. From what I remember it was uploaded to the NSF file and is stored and handled by Domino.

What we already tried:

We are on Domino 9, I don't remember which version of Notes I used while creating the agent.

Here are parts of the agent code:

Option Public
Option Explicit
Use "LinkRegistry"
Uselsx "*javacon"
Use "DB2 Connect"
Use "database"
Use "hilfe"
Option Base 0
...

Sub Initialize
      ...
      Call ConnectDB2( opendoc )
      ...
End Sub

Sub ConnectDB2( opendoc As NotesDocument )
      ...
      Dim DatabaseAccessToDb2 As JavaClass
      Set DatabaseAccessToDb2 = jsession.GetClass( "de.my.company.forms.database.DatabaseAccessToDb2" )

      Set db2 = DatabaseAccessToDb2.CreateObject
      Call db2.enableLog()
      db2.doInsert( "..." )
      db2.close
...
End Sub

This is the structure of the agent, we looked "everywhere" and couldn't find the compiled java code: structure

Where should the JAR file be located ? Are we searching for the wrong kind of file (I don't think WAR files are relevant) ? We checked SO posts like this one but they didn't bring us closer to a solution.


Solution

  • With an agent using LS2J as yours does, there are four places that the Java code could be, and code could be used from more than one of these places at once:

    You don't mention script libraries in your question. Check those first if you haven't yet done so.

    If Domino or Notes uses a custom jar file from the file system, the jar file can be in the jvm\lib or jvm\lib\ext subdirectory of the Domino or Notes installation directory, or in a custom location specified by the JavaUserClasses key in the appropriate Notes.ini file.