I'd like to set things up so that the user can do something like this:
| <io:deployment xmlns:io="urn:jboss:io:1.0"
xmlns:bean="urn:jboss:bean-deployer:2.0">
| <io:server>
| <io:handler-factory-bean>
| <bean:inject bean="MyHandlerFactory"/>
| </io:handler-factory-bean>
| <io:bind-address>0.0.0.0:12345</io:bind-address>
| <io:bind-address>0.0.0.0:12346</io:bind-address>
| <io:bind-address>0.0.0.0:12347</io:bind-address>
| </io:server>
| <io:connection name="TheConnection">
| <io:handler-bean>
| <bean:inject bean="MyHandler"/>
| </io:handler-bean>
| <io:client>
| <io:connector/>
|
<io:connect-address>irc.freenode.net:6667</io:connect-address>
|
<io:connect-address>irc.us.freenode.net:6667</io:connect-address>
|
<io:connect-address>irc.au.freenode.net:6667</io:connect-address>
| </io:client>
| </io:connection>
| </io:deployment>
|
The "io" tags are my custom schema; the "bean" tags are the regular
bean-deployer tags. Is there any way this is possible to do? I've been looking over
various docs and code and I'm not seeing any obvious ways to do this.
Specifically I'm trying to make it so that I can let the user use any tag that
they'd normally use within a <bean:property> or similar tag, in order to inject
beans into those properties.
Am I overthinking this? Maybe I should just accept a bean name instead...
The schema for the "io" tags is:
| <xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
| xmlns="urn:jboss:io:1.0"
| targetNamespace="urn:jboss:io:1.0"
| xmlns:bean="urn:jboss:bean-deployer:2.0"
| elementFormDefault="qualified"
| attributeFormDefault="unqualified"
| >
|
| <xs:complexType name="deployment">
| <xs:sequence minOccurs="0" maxOccurs="unbounded">
| <xs:choice minOccurs="0" maxOccurs="unbounded">
| <xs:element name="server" type="server"/>
| <xs:element name="connector"
type="connector"/>
| <xs:element name="client" type="client"/>
| <xs:element name="connection"
type="connection"/>
| </xs:choice>
| </xs:sequence>
| </xs:complexType>
|
| <xs:complexType name="server">
| <xs:sequence minOccurs="1" maxOccurs="1">
| <xs:element name="handler-factory-bean" type="bean"
minOccurs="1" maxOccurs="1"/>
| <xs:sequence minOccurs="1"
maxOccurs="unbounded">
| <xs:element name="bind-address"
type="xs:string"/>
| </xs:sequence>
| </xs:sequence>
| <xs:attribute name="reuse-address" use="optional"
type="xs:boolean"/>
| <xs:attribute name="receive-buffer-size" use="optional"
type="xs:int"/>
| <xs:attribute name="backlog" use="optional"
type="xs:int"/>
| <xs:attribute name="socket-timeout" use="optional"
type="xs:int"/>
| <xs:attribute name="name" type="xs:string"/>
| </xs:complexType>
|
| <xs:complexType name="connector">
| <xs:sequence minOccurs="1" maxOccurs="1">
| <xs:element name="executor-bean" type="bean"
minOccurs="0" maxOccurs="1"/>
| </xs:sequence>
| <xs:attribute name="keep-alive" use="optional"
type="xs:boolean"/>
| <xs:attribute name="oob-inline" use="optional"
type="xs:boolean"/>
| <xs:attribute name="receive-buffer-size" use="optional"
type="xs:int"/>
| <xs:attribute name="reuse-address" use="optional"
type="xs:boolean"/>
| <xs:attribute name="send-buffer-size" use="optional"
type="xs:int"/>
| <xs:attribute name="linger" use="optional"
type="xs:boolean"/>
| <xs:attribute name="linger-time" use="optional"
type="xs:int"/>
| <xs:attribute name="timeout" use="optional"
type="xs:int"/>
| <xs:attribute name="tcp-no-delay" use="optional"
type="xs:boolean"/>
| <xs:attribute name="connect-timeout" use="optional"
type="xs:int"/>
| <xs:attribute name="name" type="xs:string"/>
| </xs:complexType>
|
| <xs:complexType name="client">
| <xs:sequence minOccurs="1" maxOccurs="1">
| <xs:choice minOccurs="1" maxOccurs="1">
| <xs:element name="connector" minOccurs="1"
maxOccurs="1" type="connector"/>
| <xs:element name="connector-bean" minOccurs="1"
maxOccurs="1" type="bean"/>
| </xs:choice>
| <xs:sequence minOccurs="1"
maxOccurs="unbounded">
| <xs:element name="connect-address"
type="xs:string"/>
| </xs:sequence>
| </xs:sequence>
| <xs:attribute name="name" type="xs:string"/>
| </xs:complexType>
|
| <xs:complexType name="connection">
| <xs:sequence minOccurs="1" maxOccurs="1">
| <xs:element name="handler-bean" minOccurs="1"
maxOccurs="1" type="bean"/>
| <xs:choice minOccurs="1" maxOccurs="1">
| <xs:element name="client" minOccurs="1"
maxOccurs="1" type="client"/>
| <xs:element name="client-bean" minOccurs="1"
maxOccurs="1" type="bean"/>
| </xs:choice>
| <xs:element name="scheduled-executor-bean"
minOccurs="0" maxOccurs="1" type="bean"/>
| </xs:sequence>
| <xs:attribute name="name" type="xs:string"/>
| </xs:complexType>
|
| <xs:complexType name="bean">
| ???? what goes here ????
| </xs:complexType>
|
| <xs:element name="deployment" type="deployment"/>
| </xs:schema>
|
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4149234#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...