Chapter 2: The Diagnostic Tool for the Microsoft VM
Note For complete instructions on installation, use, and the system requirements of this tool, refer to the Diagnostic Tool for the Microsoft VM User Manual. The MSJVM website contains information about obtaining this tool: http://www.microsoft.com/java.
The Diagnostic Tool for the Microsoft VM searches for evidence of MSJVM dependencies. It scans targeted machines for the following types of dependencies:
Existence of the MSJVM, including registry entries.
MSJVM-dependent applications (including files with the .exe, .dll, and .ocx extensions).
Compiled Java files (with the .class extension).
Web page files (with extensions .html, .jsp, .php, .asp, and so on) that contain or invoke the MSJVM.
This tool is intended to simplify the process of locating all dependent applications and web pages by scanning machines and compiling the results in a single report. Ideally, the Diagnostic Tool will be run several times during the course of discovery and transition: first, to assess all dependencies prior to attempting a transition; second, during the transition project as a guide and reminder of current status; and third, during deployment to ensure all applets and applications were identified and transitioned.
To run an effective scan, make sure that you are focusing the scope of the scan on the highest priority issues. For example, you may want to first identify all MSJVM-specific dependencies using the Quick Scan, and at a later time run a separate scan for all Java dependencies, as well as scan URLs for Java dependencies in web pages using a Custom Scan.
The Diagnostic Tool can create a large amount of data. One of the best ways to reduce resulting data is to scan as few machines as possible to get the necessary results. It is rarely necessary to scan every machine in an enterprise. If your environment contains one or more standard desktops that cannot be modified by the end user, then scanning a single copy of the installed images will identify dependencies present on all desktops.
Additionally, if there are particular groups of machines that are similar in setup to each other—such as all of your web servers—scanning representative machines may be an option. By selecting representative samples of machines from your enterprise and limiting the number of scans run, you can greatly reduce the amount of extraneous data and avoid being overwhelmed by redundancies in the diagnostic reports.
As you progress and resolve dependencies, the number of issues found during each subsequent scan will decrease. At that point you can choose to expand the number of machines in your sample size to check for additional applications that are in need of remediation.
On This Page
Types of Scan Modes
Interpreting Diagnostic Results
Types of Scan Modes
The Diagnostic Tool prompts you to specify controls of two types: the first controls which computers are examined, and the second controls the types of dependency that are searched for. Any set of computers on the local network can be specified, but you will need administrator-level privileges to run the tool locally and remotely. There are three types of scan modes initiated by the Diagnostic Tool:
The Quick Scan is ideal for identifying your MSJVM dependencies. It scans for the MSJVM and Microsoft SDK for Java; MSJVM dependent applications; and web files containing applets or MSJVM references. Quick Scan includes only the following scan options: File Scan – Runtime, File Scan – Dependent Microsoft VM Applications, File Scan—Compiled Visual J++ Extensions and File Scan – Web Files with Microsoft VM References.
A Complete Scan scans for the MSJVM and Microsoft SDK for Java; MSJVM dependent applications; java CLASS files; compiled java code using the Microsoft language extensions for java; web files containing applets or MSJVM references; and URLs containing applets or MSJVM references. This scan identifies MSJVM and Java dependencies. The Complete Scan includes all scan options listed below.
A Custom Scan allows you to choose which scan options you would like to perform from the scan options listed below.
This option scans the registry for the presence of the MSJVM and the Microsoft SDK for Java. If the MSJVM is installed, the version and filename of the VM DLL is displayed in the report. This option is available in all three scan modes.
File Scan—Dependent Microsoft VM Applications
This option scans the logical drives of all target machines for compiled, executable applications that require the MSJVM to run, including EXE, DLL, and OCX. Files are searched for embedded tokens that indicate that the application may be linked to the MSJVM. This option is available in all three scan modes.
File Scan—Compiled Visual J++ Extensions
This option scans for all compiled applications that contain MSJVM specific dependencies, including EXE, DLL, OCX, and CLASS files. These MSJVM features are referred to as Visual J++ Extensions. These include RNI, Java/COM Interop, and JDirect. It also finds Java classes registered as COM components. This option is available in all three scan modes.
File Scan—Web Files with Microsoft VM References
This option scans the target machine for all web files that contain Java applets that may depend on the MSJVM. The files are searched for <APPLET>, <EMBED>, and <OBJECT> tags that result in a Java applet appearing in the web browser. This lists all applets, not only those with MSJVM dependencies. It is possible that an alternate JRE would also run these applets. This option only checks files on the selected target computers. This option is available in all three scan modes.
File Scan—Java CLASS Files
This option scans for Java bytecode CLASS files and JAR (Java archive) files. This means that all non-Microsoft Java CLASS files are also detected. Files with MSJVM requirements are detected in the Compiled Visual J++ Extensions scan. Files listed as a result of this scan, but were not reported in the Compiled Visual J++ Extensions scan are candidates for running on an alternate JRE. This option is only available in Complete Scan and Custom Scan.
This option scans a URL for all web files that contain Java applets that may depend on the MSJVM. This scan works essentially the same as the Web File scan, except it downloads the pages from the web using the given URLs. This scan works like a web crawler where the tool follows all links within the given domain to a specified depth. The default depth is “0” where only the given URL is scanned. The maximum scan depth is unlimited where all links are followed until every page within the given domain that can be accessed via the provided URL is scanned. This option is only available in Complete Scan and Custom Scan.
Note A Custom Scan with all scan options selected is the same as a Complete Scan.
An automatically generated HTML report containing diagnostic results is produced by the Diagnostic Tool for the Microsoft VM. The results are summarized in the following manner: Report Statistics, Scan Options, File Scan Summary, URL Scan Report, and an individual report for each scan option chosen on each target machine.
The Report Statistics section includes general information such as when the results of the report were generated, the name of the target machine(s), the start and stop time of the scan, the duration of the scan, and whether or not any errors occurred during the course of the scan.
The Scan Options section specifies what scan options were run by the Diagnostic Tool:
**VM Runtime—**Specified as “Yes” if this scan option was selected.
**Microsoft VM Dependency—**Specified as “Yes” if this scan option was selected.
**Java Binaries—**Specified as “Yes” if this scan option was selected.
**MS Java Binaries—**Specified as “Yes” if this scan option was selected.
**Web File Extensions—**List of file extensions (i.e. html, htm, shtml, jsp, etc.) that were searched.
**URL Scan – Crawl Depth—**The depth of the URL Scan. For example, top page only, one level deep, two levels deep, or all pages within the domain.
File Scan Summary
The File Scan Summary lists the number of Java-related files located on each target machine and includes the following information:
The name of the host on which the scan was run.
Indicates if the MSJVM is detected.
Microsoft VM Dependencies
The number of MSJVM dependent executable applications.
The number of compiled Java files discovered.
The number of files which use Microsoft extensions for the java language.
J++ JavaReg Entries
The number of Java classes that are registered as COM objects.
Java Web Files
The number of web page files containing embedded Java applets.
Details regarding the file scans are found in individual reports that include general and specific information on each scan option run on the target machine.
URL Scan Report
This section describes the URLs with applets and Java dependencies. The URL entered in the wizard is highlighted, with any linked, sub-level URL files listed underneath. There are two columns in this section.
The left column is URL, which lists the URL searched; and the right column is Content and either contains the message: “No Microsoft VM dependencies found.” or provides the description of the dependency found.
Any errors that occurred during the URL Scan are listed in the File Errors subsection and provides the name of the URL at which the error occurred and a description of that error (i.e. “The server sent back HTTP Code 404 (Not Found)”).
File Scan Details
For each scan option selected, an individual report is created providing general information including: the duration of the scan, the location and file names of affected files, and any errors that occurred during the scan.
VM Scan Report
Indicates whether the MSJVM is installed, the version number, and the location of the file.
Microsoft VM Dependency Report
Lists MSJVM dependent executable applications (including files with EXE, DLL, and OCX extensions). An entry in this scan report section indicates that there is a MSJVM dependency. These files must be transitioned, as they will not run correctly with an alternate JRE.
Java Class Report
Lists all files with the CLASS and JAR extensions. An entry in this scan report indicates that there is some type of Java dependency. However, this may not necessarily be a MSJVM dependency.
Visual J++ Class Report
Lists all files with the CLASS, EXE, DLL, and OCX extensions that utilize the Microsoft extensions for Java. An entry in this scan report section indicates that there is a MSJVM dependency.
Visual J++ JAVAREG Report
Lists java classes that are registered as COM objects.
**Web File Report—**Lists any web page files (including the HTML, JSP, PHP, ASP, etc. extensions) on the machine that contain embedded Java applets. Similar to the Java Class Report, an entry in this scan report indicates that there is some type of Java dependency. However, this may not necessarily be a MSJVM dependency.
Some reports may contain additional notes that signify special types of results.
File Errors—Provides the file name in which the error occurred and a description of that error.
Partial Report Notification— You can evaluate scan results as the Diagnostic Tool is running. The report will notify you if the report you are reading is not complete with the Partial Report notification. This allows you to begin interpreting scan results before all scans are finished.
Interpreting Diagnostic Results
The first step in understanding the diagnostic report is identifying any “false positives” that are reported. “False positives” are files that are reported as having dependencies on Java, but may not necessarily have a specific dependency on the MSJVM. Files listed as a result of the Java CLASS Files scan, but were not reported in the Compiled Visual J++ Extensions scan are files that have a Java dependency, but not a MSJVM dependency.
One of the challenges in interpreting the diagnostic report is identifying which application contains the MSJVM dependent file. To determine which application contains the dependent file you can view the directory name the file is located in; make an assessment based on the properties of the file; or enter the file information in a search engine to search for the application on the web.
When interpreting diagnostic results, you may find files marked as dependent that you may not feel need remediation. Files users often ignore are temporary files, uninstall files, hotfixes, and similar files. Evaluate your level of comfort with these files and choose whether or not to remediate the applications that caused these files to be created.
Example Methodology for Processing Result Data
The Diagnostic Tool for the Microsoft VM may create a large amount of data depending on the type of scan options and target machines selected. The following example describes steps on how to process report data. Modify these steps according to your specific needs.
Load the diagnostic report data into a database.
Copy and paste the diagnostic report data into a database or spreadsheet, or use SQL Server’s Data Transformation Services (DTS) to load the XML data files created by the scan into a database.
If you are using DTS version 1.0, the XML data files are made available in the Temp folder until you click Finish in the wizard. Once you select Finish, all XML data for the scan is deleted. Only XML data files created by the wizard are stored in the Temp folder, and are named using the following syntax:
<unique GUID for the machine>_<ScanName> XML.
If you are using DTS version 1.0a, the XML data files are created in the Temp folder during the scan. Once the scan is completed, the files created by the wizard or from the command line are saved and moved to the “Data” subdirectory in the default report directory. The default directory varies depending on your operating system:
Windows 2000 and above:
C:\Documents and Settings\[User Name]My Documents\Diagnostic Tool for the Microsoft VM\Data.
C:\WINNT\Profiles\[User Name]\Personal\Diagnostic Tool for the Microsoft VM\Data.
Windows 95 OSR2, 98 SE, and ME:
C:\My Documents\Diagnostic Tool for the Microsoft VM\Data
Normalize the data by replacing directory names with system variables.
You may want to replace certain directory names with variables. Replacing directory names makes it easier to locate files installed into different directories by the same application. Examples of these directories include the Windows directory, Program Files directory, Temp directory, and other locations shared across machines in your scan.
For example, replace the Windows directories reported by various machines (C:\Windows, E:\Windows, G:\Windows) with the wildcard “%windir%.”
Match MSJVM dependent files to the appropriate applications.
Add a column to your data for “Application” and add the application name into each row as appropriate. There are two ways of determining the application:
The first is to determine the application based on the directory name. For example, you may find several files under the subdirectory “%Windir%\System32.” Knowing that these files likely belong to the operating system, you could set the application name as Windows for all of these files.
For applications that cannot be identified by the directory name, the properties of the file may be able to identify the application that installed it. To view file properties, right-click on a file and select Properties. Click on the Summary tab to view any identifying information encoded into the file.
Determine transition options.
Once you have identified the list of applications in which there were MSJVM dependencies detected, determine the correct transition path for each one. For Microsoft applications, check the application dependency list for suggested transition options. For third-party applications, contact the appropriate software vendor to determine the suggested transition option. For applications written internally, involve your developers to determine the best transition plan.