Patch-ID# 113635-05 Keywords: snmp memory leak discovery cascading rmi Synopsis: Windows2000: Java Dynamic Management Kit 5.0 patch Date: Oct/13/2004 Install Requirements: Additional instructions may be listed below Solaris Release: SunOS Release: Unbundled Product: Java Dynamic Management Kit Unbundled Release: 5.0 Xref: patch available for sparc as patch 113634-05 Topic: Relevant Architectures: i86pc 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 5044821 5066835 5072890 Changes incorporated in this version: 5072890 5044821 5066835 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: Problem Description: 5066835 The SnmpTimerServer thread never seems to be blocked on its waitQ . 5044821 Snmp tooBig error in JDMK 5.0 5072890 JDMK 5.0 Snmp Manager can't detect Virtual IP in HA Environment (from 113635-04) 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 113635-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 113635-02) 4783766 RmiConnectorClient.disconnect creates problems when remote MBeanServer dies 4624028 Enhancement request for support of RMI/SSL (from 113635-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: 0 Special Install Instructions: ----------------------------- Before installing this patch, you need to remove JDMK 5.0 product with: # cd \SUNWjdmk\jdmk5.0 # java uninstall_jdmk50_windows2000 To install this patch, you need to execute "setup.bat" which is provided by this patch. *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 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: Wednesday, October 13, 2004