Skip Headers
Oracle® Communications Billing and Revenue Management Web Services Manager
Release 7.5

E16724-06
Go to Documentation Home
Home
Go to Book List
Book List
Go to Table of Contents
Contents
Go to Feedback page
Contact Us

Go to previous page
Previous
PDF · Mobi · ePub

1 Installing and Configuring Web Services Manager

This chapter contains information on the requirements for installing and setting up Oracle Communications Billing and Revenue Management (BRM) Web Services Manager.

Before reading this chapter, you should be familiar with implementing Web services using Oracle WebLogic Server. See your Oracle WebLogic Server documentation for more information.

System Requirements

Web Services Manager is available for the HP-UX IA64, Oracle Solaris, Oracle Linux, and AIX operating systems.

Before you install and configure Web Services Manager, you must install the third-party software, which includes the Perl libraries and JRE required for installing BRM components. See "Installing the Third-Party Software" in BRM Installation Guide.

Installing Web Services Manager

Note:

If you have already installed the product, features that are already installed cannot be reinstalled without uninstalling them first. To reinstall a feature, uninstall it and then install it again.

The Web Services Manager package includes Web Services Manager, Synchronization Queue Data Manager, and JCA Resource Adapter. You must download the Web Services Manager package and extract these components before you can install Web Services Manager. For more information about Synchronization Queue Data Manager and JCA Resource Adapter, see:

To install Web Services Manager:

  1. Go to the Oracle software delivery Web site:

    https://edelivery.oracle.com

    and download the appropriate software pack to a temporary directory (temp_dir):

    • 7.5_WebServicesMgr_platform_opt.tar.Z

      where platform is the operating system name.

      Important:

      • If you download to a Windows workstation, use FTP to copy the package to a temporary directory on your UNIX server.

      • You must increase the heap size used by the Java Virtual Machine (JVM) before running the installation program to avoid ”Out of Memory” error messages in the log file. For information, see "Increasing Heap Size to Avoid ”Out of Memory” Error Messages" in BRM Installation Guide.

  2. Go to temp_dir and uncompress and extract the .tar.Z file.

    The following files are extracted:

    • 7.5.0_BRM_JCA_Adapter_platform_opt.bin: JCA Resource Adapter

    • 7.5.0_DM_AQ_platform_opt.bin: Synchronization Queue Data Manager

    • 7.5.0_WebServicesMgr_platform_opt.bin: Web Services Manager

    where platform is the operating system name.

  3. Go to the directory in which you installed the Third-Party package and source the source.me file.

    Caution:

    You must source the source.me file to proceed with installation; otherwise, ”suitable JVM not found” and other error messages appear.

    Bash shell:

    source source.me.sh
    

    C shell:

    source source.me.csh
    
  4. Go to temp_dir and enter the following command:

    7.5.0_WebServicesMgr_platform_32_opt.bin
    

    where platform is the operating system name.

    Note:

    You can use the -console parameter to run the installation in command-line mode. To enable a graphical user interface (GUI) installation, install a GUI application such as X Windows and set the DISPLAY environment variable before you install the software.
  5. Follow the instructions displayed during installation. The default installation directory for Web Services Manager is BRM_Home.

    Note:

    The installation program does not prompt you for the installation directory if BRM or Web Services Manager is already installed on the machine and automatically installs the package in BRM_Home.

Your Web Services Manager installation is now complete.

About Deploying Web Services Manager

You can deploy Web Services Manager on any standards-compliant, vendor-supported application server that supports Java servlets. The package is shipped in a WAR (Web archive) file.

Web Services Manager:

  • Includes a servlet-based implementation that hosts the deployed Web service.

  • Uses the Apache AXIS library to support SOAP, WSDL, and other low-level Web service protocols.

Deploying the Web Service

You can deploy the Web service on WebLogic Server through the WebLogic Server Administration Console.

To deploy the Web service:

  1. Extract the BRM_Home/deploy/web_services/Infranetwebsvc.war file to a local directory (local_dir), where BRM_Home is the directory in which you installed the BRM software.

  2. Copy any CustomFields.jar files to the local_dir/WEB-INF/lib directory.

    Note:

    Make sure the JRE version that was used to generate CustomFields.jar is the same or lower than the version of the WebLogic Server JRE.
  3. Copy the Infranet.properties file to the local_dir/WEB-INF/classes directory.

  4. Deploy the application as a directory on WebLogic Server or convert the directory into a WAR file and deploy it.

Setting Up Web Services Manager to Support Custom Opcodes

To expose custom opcodes as a Web service, enable Web Services Manager to support custom opcodes. For more information on custom opcodes, see BRM Developer's Guide.

To enable Web Services Manager to support custom opcodes:

  1. Do one of the following:

    • Create the CustomOp.java file by running the following command:

      parse_custom_ops_fields -L pcmjava -I input -O output -P java_package
      

      where:

      • input is the header file you create for your custom opcodes and fields.

      • output is the memory-mapped file or directory for the output of the script. output must be a directory having some correspondence with the Java package. For example, if java_package is in com.portal.classFiles, output must be f:/mysource/com/portal/classFiles.

      • java_package is the Java package in which to put the generated classes.

      For more information, see the discussion about the parse_custom_ops_fields utility in BRM Developer's Guide.

    • Manually create the CustomOp.java file.

  2. Verify that the CustomOp.java file contains the following:

    • The opcode name to the opcode number mapping for all the custom opcodes in the file

      Important:

      Verify that the mapping includes the full name of each opcode. If any opcode name is truncated, replace the truncated name with the full name.
    • The opToString method, which converts opcode numbers to opcode names

    • The stringToOp method, which converts opcode names to opcode numbers

    The following is a sample CustomOp.java file:

    public class CustomOp {
    
    public static final int MY_CUSTOM_OPCODE = 100001;
    
    public static String opToString( int op ) {
    ...
    }
    
    public static int stringToOp( String op ) { 
    ...
    }
    
    }
    
  3. Compile the CustomOp.java file into the CustomOp.class file by running the following command:

    javac -d . path/CustomOp.java
    

    For example:

    javac -d . com/portal/classFiles/CustomOp.java
    
  4. Package the CustomOp.class file into the CustomFields.jar file by running the following command:

    Note:

    Make sure the JRE version that was used to generate the CustomFields.jar file is the same or lower than the version of the application server JRE.
    jar cvf CustomFields.jar path.CustomOp.class
    

    For example:

    jar cvf CustomFields.jar com.portal.classFiles.CustomOp.class
    
  5. Make the CustomFields.jar file available to Web Services Manager by doing one of the following:

    • If you have not deployed Web Services Manager, do the following:

      1. Extract the BRM_Home/deploy/web_services/Infranetwebsvc.war file to a local directory (local_dir).

      2. Copy the path/CustomFields.jar file to the local_dir/WEB-INF/lib directory, where path is the path to the CustomFields.jar file (for example, com/portal/classFiles).

      3. Open the BRM_Home/deploy/web_services/Infranet.properties file in a text editor.

      4. Add or modify the following entry:

        infranet.custom.field.package = path
        

        where path is the path to the CustomOp.java file; for example, com.portal.classFiles.

      5. Save and close the file.

      6. Copy the BRM_Home/deploy/web_services/Infranet.properties file to the local_dir/WEB-INF/classes directory.

      7. Deploy the application as a directory on the application server or convert the directory into a WAR file and deploy it.

    • If you have deployed Web Services Manager, do the following:

      1. Copy the path/CustomFields.jar file to the Webservices_deployment_dir/WEB-INF/lib directory.

        where path is the path to the CustomFields.jar file (for example, com/portal/classFiles), and Webservices_deployment_dir is the directory in which you have deployed the Web services on the application server.

      2. Open the Webservices_deployment_dir/WEB-INF/classes/Infranet.properties file in a text editor.

      3. Add or modify the following entry:

        infranet.custom.field.package = path
        

        where path is the path to the CustomOp.java file; for example, com.portal.classFiles.

      4. Save and close the file.

      5. Restart the application server.

Testing the Web Service

To test your Web services implementation, write a client application that communicates with the Web service using the SOAP protocol. The sample procedures use WebLogic Server, but you can apply the concepts to any standards-compliant, vendor-supported application server that supports Web services.

For example, with WebLogic Server:

  1. Run one of the following commands, which set up the WebLogic Server environment:

    • WebLogic_Home/server/bin/setWLSEnv.cmd

    • WebLogic_Home/server/bin/setenv.exe

      where WebLogic_Home is the directory in which you installed the WebLogic Server.

  2. Create an XML file (some_name_1.xml) using the following text:

    <project name="buildWebservice" default="all">
    <property name="buildDir" value="./myapps" />
    <property name="jarFiles" value="jars" />
    <target name="all" depends="jar" description="builds everything">
    </target>
    <target name="generate-client">
    <clientgen wsdl="http://10.176.231.245:7001/infranetwebsvc/services/Infranet?wsdl"       
    packageName="test_client"  
    destDir= "./myapps"/>       
    </target>
    <target name="compile" depends="generate-client" description="compile source files">
        <echo> Compiling adapter files</echo>
        <javac  destdir="${buildDir}">
            <src path="${buildDir}"/>
        </javac>
    </target>
    <target name="jar" depends="compile" description="generate jar file(s)">
        <jar jarfile="clientStub.jar"  basedir="${buildDir}">
        <exclude name = "**/*.java"/>
    
        </jar>
    </target>
    <target name="clean" description="remove files created by target prepare">
        <delete dir="${buildDir}"/>
    </target>
    </project>
    

    This XML file uses the WebLogic Server clientgen task to autogenerate a utility library that provides low-level SOAP communication (client stubs).

  3. Run the following command, which creates the client stubs:

    ant -file some_name_1.xml
    

    This process generates the clientstubs.jar file, which contains stubs used by the client. The test client code (src\TestClient.java) then creates an flist, converts it to XML, and calls the PCM_OP_TEST_LOOPBACK opcode.

    The following is a sample listing of TestClient.java:

    import java.io.IOException;
    import test_client.*;  // corresponds to package name clientgen generated 
    
    public class TestClient {
    
        public static void main(String[] args) {
            try {
    
                String wsdlUrl = 
    "http://10.176.231.245:7001/infranetwebsvc/services/Infranet?wsdl"; 
                InfranetWebServiceService service = new InfranetServiceService_Impl( wsdlUrl );
                InfranetWebService port = service.getInfranet();
    
                // convert flist to XML representation
                String XMLInput="<flist xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><POID>0.0.0.1 /account 80408 8</POID></flist>";
                System.out.println("Input: " + XMLInput);
                // invoke web service &rsquor;opcode' method
                String result = port.opcode("TEST_LOOPBACK", XMLInput);
        
                System.out.println("result: "+ result);
    
            } catch (Exception ex) {
                ex.printStackTrace();    
            }
        }
    }
    
    
  4. Create another XML file (some_name_2.xml) using the following text:

    Note:

    Replace the paths for the JAR files as required.
    <project name="test_client" default="all">
    
    <target name="all" depends="run"/>
    
    <path id="classpath">
        <pathelement path="clientstubs.jar"/>
        <pathelement path=".\classes"/>
        <pathelement path="D:\WebServices\webman\lib\jaxrpc.jar"/>
        <pathelement path="D:\bea\wlserver_10.3\server\lib\wseeclient.jar"/>
        <pathelement path="D:\bea\wlserver_10.3\server\lib\weblogic.jar"/>
    </path>
    
    
    <target name="compile">
        <mkdir dir="classes"/>
        <javac  srcdir="src" 
            destdir="classes"
            classpathref="classpath"
        />
    </target>
    
    <target name="run" depends="compile">
        <java classname="TestClient"
                fork="yes"
                classpathref="classpath">
        </java>
    </target>
    
    </project>    
    
  5. Build and run the test with the some_name_2.xml file using regular Ant tasks:

    ant -file some_name_2.xml
    

Using Sample Web Services Programs

Web Services Manager includes sample programs that demonstrate how to write code for various tasks when customizing Web services. For example, the sample program InfranetBALTestClient.java creates an flist, converts it to XML, and calls the PCM_OP_BAL_GET_BALANCES opcode.

Uninstalling Web Services Manager

To uninstall Web Services Manager:

  1. Go to the BRM_Home/uninstaller/WebServicesMgr directory.

  2. Enter the following command:

    uninstaller.bin
    

About Validating Input and Output XML Data

Web Services Manager validates the input and output XML by comparing the XML fields and values against the opcode XML schema.

The opcode specifications, schemas, and WSDL files are packaged along with Web Services Manager. The package includes the opspec.xsd file and the pin_opspec_to_schema utility. Use the opspec.xsd file to write opcode specifications for custom opcodes that need to be exposed as a Web service. Use the pin_opspec_to_schema utility to generate the schema files from the opcode specification files.

To configure Web Services Manager to validate the input and output XML against the target opcode XML schema

  1. Open the local_dir/WEB-INF/classes/Infranet.properties file.

  2. Add the following entries to the file:

    • webservices.input.validation.enabled=true

    • webservices.output.validation.enabled=true

  3. Do one of the following:

    • If you are using WebLogic Server, copy the schema files packaged as a part of Web Services Manager installation from the BRM_Home/deploy/web_services/schemas directory to the local_dir/common/lib directory.

    • If you are using any other standards-compliant, vendor-supported application server that supports Web services, copy the schema files from the BRM_Home/deploy/web_services/schemas directory to the local_dir/WEB-INF/classes directory.

About BRM Web Services and WSDL Files

Web Services Manager exposes the opcodes as operations through the different WSDLs in JCA Resource Adapter.

The WSDL files included with Web Services Manager define the opcodes that can be called and the attributes required to call a specific opcode. The opcodes are grouped by functional area into a Web service. For example, one Web service defines the billing opcodes and another Web service defines the payment opcodes. Web Services Manager includes one WSDL file for each Web service.

Table 1-1 describes the WSDL files:

Table 1-1 WSDL Default Files

WSDL File Name Description

BRMARServices.wsdl

Defines the accounts receivable Web service, which includes the following opcodes:

  • PCM_OP_AR_ACCOUNT_ADJUSTMENT

  • PCM_OP_AR_BILL_ADJUSTMENT

  • PCM_OP_AR_GET_ACCT_ACTION_ITEMS

  • PCM_OP_AR_GET_ACCT_BAL_SUMMARY

  • PCM_OP_AR_GET_ACCT_BILLS

  • PCM_OP_AR_GET_BAL_SUMMARY

  • PCM_OP_AR_GET_BILL_ITEMS

  • PCM_OP_AR_ITEM_ADJUSTMENT

  • PCM_OP_AR_EVENT_ADJUSTMENT

  • PCM_OP_AR_GET_ACTION_ITEMS

  • PCM_OP_AR_GET_BILLS

  • PCM_OP_AR_RESOURCE_AGGREGATION

See "Accounts Receivable FM Standard Opcodes" in BRM Developer's Reference for more information.

BRMBalServices.wsdl

Defines the balances Web service, which includes the following opcodes:

  • PCM_OP_BAL_GET_BALANCES

  • PCM_OP_BAL_GET_BAL_GRP_AND_SVC

  • PCM_OP_BAL_GET_ACCT_BAL_GRP_AND_SVC

  • PCM_OP_BAL_GET_ACCT_BILLINFO

See "Balance FM Standard Opcodes" in BRM Developer's Reference for more information.

BRMBillServices.wsdl

Defines the billing Web service, which includes the following opcodes:

  • PCM_OP_BILL_GET_ITEM_EVENT_CHARGE_DISCOUNT

  • PCM_OP_BILL_GROUP_MOVE_MEMBER

  • PCM_OP_BILL_MAKE_BILL_NOW

  • PCM_OP_BILL_DEBIT

  • PCM_OP_BILL_GROUP_GET_PARENT

See "Billing FM Standard Opcodes" in BRM Developer's Reference for more information.

BRMCollectionsServices.wsdl

Defines the collections Web service, which includes the following opcode:

  • PCM_OP_COLLECTIONS_SET_ACTION_STATUS

See "Collections Manager FM Standard Opcodes" in BRM Developer's Reference for more information.

BRMCustcareServices.wsdl

Defines the customer care Web service, which includes the following opcode:

  • PCM_OP_CUSTCARE_MOVE_ACCT

BRMCustServices.wsdl

Defines the customer Web service, which includes the following opcodes:

  • PCM_OP_CUST_COMMIT_CUSTOMER

  • PCM_OP_CUST_MODIFY_CUSTOMER

  • PCM_OP_CUST_UPDATE_CUSTOMER

  • PCM_OP_CUST_UPDATE_SERVICES

  • PCM_OP_CUST_DELETE_ACCT

  • PCM_OP_CUST_DELETE_PAYINFO

  • PCM_OP_CUST_CREATE_PROFILE

  • PCM_OP_CUST_MODIFY_PROFILE

  • PCM_OP_CUST_DELETE_PROFILE

See "Customer FM Standard Opcodes" in BRM Developer's Reference for more information.

BRMInvServices.wsdl

Defines the invoicing Web service, which includes the following opcode:

  • PCM_OP_INV_VIEW_INVOICE

Important: You must configure your client application to convert the invoice data received from the PCM_OP_INV_VIEW_INVOICE opcode into the appropriate format. See "About Invoicing Output XML Data" in BRM JCA Resource Adapter.

See "Invoicing FM Standard Opcodes" in BRM Developer's Reference for more information.

BRMPricesServices.wsdl

Defines the prices Web service, which includes the following opcodes:

  • PCM_OP_PRICE_COMMIT_PRODUCT

  • PCM_OP_PRICE_COMMIT_DISCOUNT

  • PCM_OP_PRICE_SET_PRICE_LIST

  • PCM_OP_PRICE_GET_PRICE_LIST

See "Price List FM Standard Opcodes" in BRM Developer's Reference for more information.

BRMPymtServices.wsdl

Defines the payment Web service, which includes the following opcode:

  • PCM_OP_PYMT_COLLECT

See "Payment FM Standard Opcodes" in BRM Developer's Reference for more information.

BRMReadServices.wsdl

Defines the read Web service, which includes the following opcodes:

  • PCM_OP_READ_FLDS

  • PCM_OP_READ_OBJ

  • PCM_OP_SEARCH

See "LDAP Base Opcodes" in BRM Developer's Reference for more information.

BRMSubscriptionServices.wsdl

Defines the subscription Web service, which includes the following opcodes:

  • PCM_OP_SUBSCRIPTION_CANCEL_PRODUCT

  • PCM_OP_SUBSCRIPTION_CANCEL_DISCOUNT

  • PCM_OP_SUBSCRIPTION_CANCEL_SUBSCRIPTION

  • PCM_OP_SUBSCRIPTION_CHANGE_DEAL

  • PCM_OP_SUBSCRIPTION_PURCHASE_DEAL

  • PCM_OP_SUBSCRIPTION_SET_BUNDLE

  • PCM_OP_SUBSCRIPTION_SET_DISCOUNT_STATUS

  • PCM_OP_SUBSCRIPTION_SET_DISCOUNTINFO

  • PCM_OP_SUBSCRIPTION_SET_PRODINFO

  • PCM_OP_SUBSCRIPTION_SET_PRODUCT_STATUS

  • PCM_OP_SUBSCRIPTION_TRANSFER_SUBSCRIPTION

  • PCM_OP_SUBSCRIPTION_GET_PURCHASED_OFFERINGS

See "Subscription Management FM Standard Opcodes" in BRM Developer's Reference for more information.


You can create a new WSDL file or add an opcode description to an existing WSDL file. For more information, see "Generating the WSDL Files for Your System" in BRM JCA Resource Adapter.

Configuring Java Logging in Oracle WebLogic Server

To configure Java logging in Oracle WebLogic server, do the following:

  1. Specify the Java Unified Logging (JUL) mechanism. See "Specifying the JUL Mechanism".

  2. Create a startup class. See "Creating a Startup Class".

  3. Change the logging level by using JConsole. See "Changing the Java Logging Level in Oracle WebLogic Server".

Specifying the JUL Mechanism

Specifying the Java Unified Logging (JUL) mechanism allows Web Services Manager to use JUL in addition to the WebLogic Server Administration console logging.

To specify the JUL mechanism:

  1. Open the BRM_Home/deploy/web_services/Infranet.properties file in a text editor.

  2. Uncomment the following entry:

    # webservices.log.enabled = true
    
  3. Change the value to false:

    webservices.log.enabled = false
    
  4. Save and close the file.

Creating a Startup Class

You define a startup class to enable JUL and create log files for the following Web service classes:

  • com.portal.webservices.BRMFlistToXML

  • com.portal.webservices.BRMXMLToFlist

  • com.portal.webservices.OpcodeCaller

  • com.portal.webservices.WebServicesUtilities

To create a startup class:

  1. Copy the BRM_Home/deploy/web_services/weblogic_ws_startup.jar file to the local_dir/WEB-INF/lib directory.

  2. Log in to the WebLogic Server Administration Console. The default is:

    http://localhost:8001/console
    
  3. Click Lock and Edit.

  4. In the Domain Structure tree, expand Environment and then click Startup and Shutdown classes.

    The Startup and Shutdown Classes pane appears.

  5. Click New.

    The Configure a New Startup or Shutdown Class: Class Type pane appears.

  6. Select Startup Class and click Next.

    The Configure a New Startup or Shutdown Class: Startup Class Properties pane appears.

  7. In the Name field, enter BRMWSLoggerStartUpClass.

  8. In the Class Name field, enter com.portal.webservices.BRMWSLoggerStartUp.

  9. Click Next.

    The Configure a New Startup or Shutdown Class: Select Targets pane appears.

  10. From the Servers box, select the server on which to deploy the class and click Finish.

    The Startup and Shutdown Classes pane appears.

  11. Click BRMWSLoggerStartUpClass.

    The Settings for BRMWSLoggerStartUpClass pane appears.

  12. Select Run Before Application Deployments and Run Before Application Activations and click Save.

  13. Click Activate Changes.

  14. Restart the WebLogic Server, which applies changes.

By default, log files are created in the WebLogic_Home/user_projects/domains/Domain_Name/logs/BRMWebServicesMgrLogs/BRMWebServicesMgr.log directory.

where Domain_Name is the name of the domain you are configuring.

Changing the Java Logging Level in Oracle WebLogic Server

To change the Java logging level in WebLogic Server:

  1. Go to the WebLogic_Home/jdk160_05/bin directory and enter the following command:

    jconsole
    

    The New Connection dialog box appears as shown in Figure 1-1.

    Figure 1-1 New Connection Dialog Box

    Description of Figure 1-1 follows
    Description of "Figure 1-1 New Connection Dialog Box"

  2. Select Remote Process.

  3. In the Host Name field, enter the WebLogic Server host name.

  4. In the Port Number field, enter the WebLogic Server port number.

  5. In the User Name field, enter your user name.

  6. In the Password field, enter your password.

  7. Click Connect.

    Note:

    When WebLogic Server is running on the same system, you can use Local Process without authentication. The Local Process list shows the WebLogic Server process name and PID.

    The Java Monitoring and Management Console pane appears.

  8. Click the MBeans tab.

  9. In the MBean tree, expand java.util.logging, then expand Attributes, and then select LoggerNames.

    The LoggerNames pane appears.

  10. Copy the com.portal.webservices.BRMFlistToXML logger name.

  11. In the MBean tree, expand java.util.logging and then select Operations.

    The Operation invocation pane appears.

  12. In the void setLoggerLevel p0 field, paste the logger name that you copied.

  13. In the void setLoggerLevel p1 field, change the logging level to one of the following:

    • To log problems that require attention from the system administrator, change the value to SEVERE.

    • To log actions that should be reviewed and may require action before an error occurs, change the value to WARNING.

    • To log normal actions or events, change the value to INFO. This includes user operations, such as user log ins, and automatic operations, such as log file rotations.

    • To log configuration-related messages, change the value to CONFIG.

    • To log trace or debug messages for performance monitoring, change the value to FINE.

    • To log highly detailed trace or debug message, change the value to FINER.

    • To log the most detailed trace or debug messages, change the value to FINEST.

  14. Click setLoggerLevel, which updates the logging level.

  15. In the MBean tree, select LoggerNames.

    The Logger Names pane appears.

  16. Copy the com.portal.webservices.BRMXMLToFlist logger name.

  17. Repeat steps 11 to 14 to change the logging level for the com.portal.webservices.BRMXMLToFlist logger.

  18. Copy the com.portal.webservices.OpcodeCaller logger name.

  19. Repeat steps 11 to 14 to change the logging level for the com.portal.webservices.OpcodeCaller logger.

  20. Copy the com.portal.webservices.WebServicesUtilities logger name.

  21. Repeat steps 11 to 14 to change the logging level for the com.portal.webservices.WebServicesUtilities logger.

  22. Close the Java Monitoring and Management Console pane.

For more information, see the discussion about using JConsole in Java SE Monitoring and Management Guide: http://download.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html.