JDK-4975578 : Macromedia JRun won't start on 1.5
  • Type: Bug
  • Component: core-svc
  • Sub-Component: javax.management
  • Affected Version: 5.0
  • Priority: P2
  • Status: Closed
  • Resolution: Not an Issue
  • OS: solaris_8
  • CPU: generic
  • Submitted: 2004-01-08
  • Updated: 2004-01-10
  • Resolved: 2004-01-10
Description
Date: Thu, 08 Jan 2004 11:56:19 +0100
From: Jarle Mjaasund <###@###.###>
Subject: Macromedia JRun won't start on 1.5
To: ###@###.###
Message-id: <###@###.###>
X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Content-class: urn:content-classes:message
Thread-topic: Macromedia JRun won't start on 1.5
Thread-index: AcPV1gwO/9P+GatUSxKymsuH8qgy9g==
x-fsavag4mse-ts: 8f02830643e4c569
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
Keywords: disclaimer
Original-recipient: rfc822;###@###.###

#./jrun start default

Starting Macromedia JRun 4 (Build 63824), default server
[1]java.lang.NoSuchMethodException: setURL
        at
com.sun.jmx.mbeanserver.StandardMetaDataImpl.forbidInvokeGetterSetter(Stan
dardMetaDataImpl.java:489)
        at
com.sun.jmx.mbeanserver.StandardMetaDataImpl.invoke(StandardMetaDataImpl.j
ava:402)
        at
com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:228)
        at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanS
erverInterceptor.java:823)
        at
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:792)
        at jrunx.kernel.JRun.startServer(JRun.java:557)
        at jrunx.kernel.JRun.<init>(JRun.java:476)
        at jrunx.kernel.JRun$1.run(JRun.java:329)
        at java.security.AccessController.doPrivileged(Native Method)
        at jrunx.kernel.JRun.start(JRun.java:326)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorIm
pl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:489)
        at jrunx.kernel.JRun.invoke(JRun.java:180)
        at jrunx.kernel.JRun.main(JRun.java:168)
[0]javax.management.ReflectionException: Cannot invoke getter or setter
(setURL) as operation unless jmx.invoke.getters property is set
        at
com.sun.jmx.mbeanserver.StandardMetaDataImpl.forbidInvokeGetterSetter(Stan
dardMetaDataImpl.java:491)
        at
com.sun.jmx.mbeanserver.StandardMetaDataImpl.invoke(StandardMetaDataImpl.j
ava:402)
        at
com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:228)
        at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanS
erverInterceptor.java:823)
        at
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:792)
        at jrunx.kernel.JRun.startServer(JRun.java:557)
        at jrunx.kernel.JRun.<init>(JRun.java:476)
        at jrunx.kernel.JRun$1.run(JRun.java:329)
        at java.security.AccessController.doPrivileged(Native Method)
        at jrunx.kernel.JRun.start(JRun.java:326)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorIm
pl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:489)
        at jrunx.kernel.JRun.invoke(JRun.java:180)
        at jrunx.kernel.JRun.main(JRun.java:168)
Caused by: java.lang.NoSuchMethodException: setURL
        at
com.sun.jmx.mbeanserver.StandardMetaDataImpl.forbidInvokeGetterSetter(Stan
dardMetaDataImpl.java:489)
        ... 15 more

Comments
PUBLIC COMMENTS .
01-09-2004

EVALUATION JRun is relying on behaviour which was explicitly undefined in JMX 1.1, namely the ability to invoke a getter or (in this case) setter as an operation. If a Standard MBean interface contains a method "void setX(T x)" where X is any non-empty string and T is any type, then that method defines a writable attribute called X of type T. In the case at hand, setURL presumably has a single argument of type java.net.URL, so it defines an attribute called "URL" of type "java.net.URL". In JMX 1.1, an implementation was *allowed* to accept calling the setURL method as if it were an operation, not an attribute, but the specification explicitly said that an implementation could also forbid it. As of JMX 1.2, implementations are *required* to forbid this. There is a simple workaround: set the property jmx.invoke.getters to a non-empty string, and getters will be invokeable. This is *not portable* so it is discouraged, but it may help until the application can be fixed. ###@###.### 2004-01-10
10-01-2004

WORK AROUND Set the system property jmx.invoke.getters to a non-empty value, as the exception message suggests. ###@###.### 2004-01-10
10-01-2004