Patch-ID# 113634-04 Keywords: snmp memory leak discovery cascading rmi Synopsis: Java Dynamic Management Kit 5.0 patch Date: May/14/2004 Install Requirements: None Solaris Release: 8 9 SunOS Release: 5.8 5.9 Unbundled Product: Java Dynamic Management Kit Unbundled Release: 5.0 Xref: Topic: Relevant Architectures: sparc BugId's fixed with this patch: 4624028 4626073 4653805 4658703 4680431 4692891 4755854 4756550 4770217 4770295 4776369 4783766 4873785 4878413 4884304 4898453 4963551 4990243 4991101 5021251 5025846 5025850 Changes incorporated in this version: 4963551 4990243 5021251 4991101 5025850 5025846 Patches accumulated and obsoleted by this patch: Patches which conflict with this patch: Patches required with this patch: Obsoleted by: Files included with this patch: /opt/SUNWjdmk/jdmk5.0/lib/jdmkrt.jar /opt/SUNWjdmk/jdmk5.0/lib/jdmktk.jar /usr/sadm/lib/snmp/jsnmpapi.jar Problem Description: 5025846 Bad code generated when an Index is imported from another MIB. 5025850 mibgen fails with NullPointerException when description clause is missing 4991101 IPAcl shouldn't make use of getHostName() 5021251 SnmpRequest::waitForCompletion(0) calls never return 4990243 get next swallows objects sandwiched by nested groups. 4963551 JDMK does not handle nested groups correctly. (from 113634-03) 4878413 fixes in RmiConnectorAddress break compatibility JDMK 5.0 - 4.2 4898453 modelmbean pointlessly forbid empty descriptor field values. 4884304 Exception in RequiredModelMBean.setAttribute() if no setter 4873785 HttpConnectorServer not able to listen on a particular network interface IP addr (from 113634-02) 4783766 RmiConnectorClient.disconnect creates problems when remote MBeanServer dies 4624028 Enhancement request for support of RMI/SSL (from 113634-01) 4680431 Timer.removeNotifications(String type) is causing NullPointerException 4692891 SNMP counter64 response causing problem in JDMK session 4653805 URLConnection with timeout option 4626073 Master agent locks up due to synchronization problem in JDMK 4658703 Trace should display JDMK version and release Number 4776369 Memory leak in Finalize() 4756550 the method setUserData does not work after starting the DiscoveryResponder 4755854 JDMK Discovery passes hostnames through discovery packets. 4770295 SnmpAdaptorServerMBean interface must contain the addMib(mib, context) method 4770217 delays due to getLocalHost() timeouts Patch Installation Instructions: -------------------------------- Please refer to the man pages for instructions on using 'patchadd' and 'patchrm' scripts provided with Solaris. Any other special or non-generic installation instructions should be described below as special instructions. The following example installs a patch to a standalone machine: example# patchadd /var/spool/patch/104945-02 The following example removes a patch from a standalone system: example# patchrm 104945-02 For additional examples please see the appropriate man pages. Special Install Instructions: ----------------------------- *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- To use the fix for bug 4692891 (Counter64 as an UnsignedLong), that enables to use values > 2^63-1 for Counter64 variables, this is what to do : 1/ Compilation by mibgen ------------------------ A new option has been added to mibgen : -ulong. You must use this option if you want to consider Counter64 variables as UnsignedLong (instead of Long) example : mibgen -ulong mib.txt 2/ Modifications in your Manager application --------------------------------------------- *) there is a new class com.sun.jdmk.UnsignedLong that must be used, and imported in your application *) There is a new constructor in the class SnmpCounter64, that takes in argument an UnsignedLong. This constructor must be used. Example : SnmpCounter64 var = new SnmpCounter64(UnsignedLong.make(Long.MAX_VALUE 1)) , The static method UnsignedLong.make(long x) returns an UnsignedLong. *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- if you want to set a timeout to your RmiConnectorClient, (fix for bug 4626073), use the new constructor : public RmiConnectorClient(InetAddress add, int timeout), with timeout = timeout in number of seconds. *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- To use fix for bug 4653805, use property -Dcom.sun.jdmk.urlconnectionTimeout. With this property, a timeout is used each time JDMK uses URLConnection, Default value is 10s (10000ms), it is tunable by giving the property an explicit value, e.g.: -Dcom.sun.jdmk.urlconnectionTimeout=15000 15000 here means 15000ms, i.e., 15s. *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- To avoid the access to the method getLocalHost() (fix for bugId 4770217), you must run your jdmk application with the property jdmk.hostname set to your local IP address. For example : java -Djdmk.hostname=129.157.179.168 BaseAgent *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- To use the fix for bugId 4755854 : To have the correct hostname/IP address, you just have to use this constructor for DiscoveryClient : public DiscoveryClient (String multicastGroup, int multicastPort, InetAddress inf) -> The address inf will now be taken for the return address. *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- To use the fix for bugId 4624028 : You must use, on the client side, the new constructor in RmiConnectorClient.java public RmiConnectorClient(RMIClientSocketFactory csf) *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- To use the fix for BugId 4783766 : There is a new method : public void disconnect(boolean local) in these 2 classes : - RmiConnectorClient - GenericHttpConnectorClient If local=true, then, no request will be sent to the server. You must use disconnect(true) instead of disconnect() if you know that the server is down *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- To use the fix for bugId 4873785 : use the 2 new constructors of the classes HttpConnectorServer and HttpsConnectorServer : public HttpConnectorServer(int port, InetAddress bindAddr) public HttpConnectorServer(int port, AuthInfo[] authInfoList, InetAddress bindAddr) where bindAddr is the addr to listen on. README -- Last modified date: Friday, May 14, 2004