Integrating PropertyMetaData into another model
starksm64 Mar 31, 2009 9:54 PMI tried reusing the mc beans PropertyMetaData/AbstractPropertyMetaData in a custom bean factory model I'm working on
@JBossXmlSchema(namespace="urn:jboss:proxied-mbean:1.0", elementFormDefault=XmlNsForm.QUALIFIED, replacePropertyRefs=true) @XmlRootElement(name="proxied-mbeans") @XmlType(name="proxiedMBeanType") public class ProxiedMBeanMetaData implements Serializable, BeanMetaDataFactory { private static final long serialVersionUID = 1; private static Logger log = Logger.getLogger(ProxiedMBeanMetaData.class); private List<MBeanProxyMetaData> proxies; private List<String> depends = new ArrayList<String>(); private MBeanServer server; ... @XmlType(name="proxy") public class MBeanProxyMetaData { ... @XmlElement(name="property", type=AbstractPropertyMetaData.class) public List<PropertyMetaData> getProperties() { return properties; } public void setProperties(List<PropertyMetaData> properties) { this.properties = properties; }
but when I parse a fragment in a jboss-beans.xml like:
<proxied-mbeans xmlns="urn:jboss:proxied-mbean:1.0"> <depend>WebServer</depend> <proxy> <delegate-class>org.jboss.web.tomcat.service.management.ConnectorBean</delegate-class> <target-name>jboss.web:type=GlobalRequestProcessor,*</target-name> <target-interface>org.jboss.web.tomcat.service.management.IConnector</target-interface> <annotation>@org.jboss.managed.api.annotation.ManagementObject(componentType=@org.jboss.managed.api.annotation.ManagementComponent(type = "MBean", subtype = "Web:GlobalRequestProcessor"),isRuntime=true)</annotation> </proxy> <proxy> <delegate-class>org.jboss.web.tomcat.service.management.Host</delegate-class> <target-name>jboss.web:host=localhost,type=Host</target-name> <target-interface>org.jboss.web.tomcat.service.management.IHost</target-interface> <annotation>@org.jboss.managed.api.annotation.ManagementObject(name="jboss.web:host=localhost,type=Host", componentType=@org.jboss.managed.api.annotation.ManagementComponent(type = "MBean", subtype = "Web:Host"),isRuntime=true)</annotation> <property name="mbeanNameAsString">jboss.web:host=localhost,type=Host</property> </proxy> </proxied-mbeans>
the following exception occurs that I don't understand:
Caused by: org.jboss.xb.binding.JBossXBException: Failed to parse source: The type of the attribute search must be simple or complex with a value adapter: org.jboss.xb.binding.sunday.unmarshalling.TypeBinding@809011[null] at org.jboss.beans.metadata.plugins.AbstractDependencyValueMetaData.search at org.jboss.beans.metadata.plugins.AbstractClassLoaderMetaData.classLoader at org.jboss.beans.metadata.plugins.AbstractBeanMetaData.classLoader at org.jboss.beans.metadata.plugins.AbstractPropertyMetaData.value at org.jboss.system.metadata.MBeanProxyMetaData.properties at org.jboss.system.metadata.ProxiedMBeanMetaData.proxies at org.jboss.system.metadata.ProxiedMBeanMetaData at org.jboss.xb.binding.parser.sax.SaxJBossXBParser.parse(SaxJBossXBParser.java:203) at org.jboss.xb.binding.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:168) at org.jboss.deployers.vfs.spi.deployer.JBossXBDeployerHelper.parse(JBossXBDeployerHelper.java:199) at org.jboss.deployers.vfs.spi.deployer.JBossXBDeployerHelper.parse(JBossXBDeployerHelper.java:170) at org.jboss.deployers.vfs.spi.deployer.SchemaResolverDeployer.parse(SchemaResolverDeployer.java:132) at org.jboss.deployers.vfs.spi.deployer.SchemaResolverDeployer.parse(SchemaResolverDeployer.java:118) at org.jboss.deployers.vfs.spi.deployer.AbstractVFSParsingDeployer.parseAndInit(AbstractVFSParsingDeployer.java:256) at org.jboss.deployers.vfs.spi.deployer.AbstractVFSParsingDeployer.parse(AbstractVFSParsingDeployer.java:239)
I don't see how the AbstractPropertyMetaData.value property relates to AbstractBeanMetaData.classLoader?