[
http://jira.jboss.com/jira/browse/JBAS-1955?page=all ]
Dimitris Andreadis closed JBAS-1955.
------------------------------------
Resolution: Done
I've used the patch as a starting point to create an interceptor with plugable
polices:
org.jboss.jmx.connector.invoker.SerializableInterceptor
org.jboss.jmx.connector.invoker.SerializablePolicy
The default policy converts ModelMBeanInfo returned by getMBeanInfo into plain MBeanInfo,
striping away the ModelMBeanAttribute infos that contain the non-serializable Descriptors
that cause the trouble:
org.jboss.jmx.connector.invoker.serializablepolicy.StripModelMBeanInfoPolicy
This essentially emulates the behaviour we have with jboss 4.0.x when used with jdk1.4.
I.e. you are able to read remotely over the jmx adapter MBeanInfo for all registered
mbeans. Howerver, if you try to read non-serializable fields you still get a
NonSerializableException.
A different policy could be created to deal with this scenario, if necessary.
The interceptor is enabled by default in deploy/jmx-invoker-service.xml:
<interceptor code="org.jboss.jmx.connector.invoker.SerializableInterceptor"
policyClass="StripModelMBeanInfoPolicy"/>
Kudos to Fabiano for the original patch.
XMBean Interceptor for InvokerAdaptorService to deal with
NonSerializableExceptions
-----------------------------------------------------------------------------------
Key: JBAS-1955
URL:
http://jira.jboss.com/jira/browse/JBAS-1955
Project: JBoss Application Server
Issue Type: Feature Request
Security Level: Public(Everyone can see)
Components: Management services
Affects Versions: JBossAS-4.0.2 Final
Environment: jmx, twiddle
Reporter: Fabiano C. de Oliveira
Assigned To: Dimitris Andreadis
Fix For: JBossAS-5.0.0.Beta2, JBossAS-4.2.0.CR1
Attachments: JBAS-1955a.zip
This patch add a Interceptor to org.jboss.jmx.connector.invoker.InvokerAdaptorService
besides AuthenticationInterceptor that is responsable for prevent remote clients to launch
NonSerializable exception.
The interception have 3 types of action: Invisible, Null and Wrapper.
In the Invisible mode all NonSerializable fields are ignored so if you call getMBeanInfo
all NonSerializable will be remove and returned to your remote client(twiddle, MC4J, etc).
This mode is more tested so it is recommended.
In the null mode NonSerializable fields are visible but always return Null.
The wraper mode is not implemented, but the idea is replace the NonSerializable Class for
another
The interceptor is only a class. The tests are in the patch too. Only test for invisible
mode. I´m still doing tests for the other modes.
Any idea is very appreciated. I dont have sufficient time to work more in this code. But
I hope to do soon.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira