Version 4
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE server>
    
    <!-- ======================================================== -->
    <!-- Example JBoss Remoting Service Configuration file        -->
    <!-- ======================================================== -->
    <server>
    
       <!-- NOTE: set this up to the path where your libraries are -->
       <classpath codebase="lib"
          archives="*"></classpath>
    
       <!-- For detailed description of all these configuration attributes, please see the -->
       <!-- JBoss Remoting User's Guide or wiki (http://www.jboss.org/wiki/Wiki.jsp?page=Remoting_configuration) -->
    
    
       <!-- The NetworkRegistry contains all the local and remote -->
       <!-- servers that it recognizes.  The remote ones registered -->
       <!-- are dependant on the detectors running and which domains -->
       <!-- they are configured to identify.                         -->
       <mbean code="org.jboss.remoting.network.NetworkRegistry"
          name="jboss.remoting:service=NetworkRegistry"></mbean>
    
    
       <!-- ******************************************************************** -->
       <!-- CONNECTORS/INVOKERS                                                  -->
       <!-- The following section covers all the different transport types       -->
       <!-- that can be configured for the Connector (socket, sslsocket, rmi     -->
       <!-- http, and https).                                                    -->
       <!-- ******************************************************************** -->
    
       <!-- The Connector is the core component of the remoting server service. -->
       <!-- It binds the remoting invoker (transport protocol, callback configuration, -->
       <!-- data marshalling, etc.) with the invocation handlers.  -->
       <!-- This particular Connector is for the standard socket protocol. -->
       <mbean code="org.jboss.remoting.transport.Connector"
          xmbean-dd="org/jboss/remoting/transport/Connector.xml"
          name="jboss.remoting:service=Connector,transport=Socket"
          display-name="Socket transport Connector">
    
          <!-- Can either just specify the InvokerLocator attribute and not the invoker element in the -->
          <!-- Configuration attribute, or do the full invoker configuration in the in invoker element -->
          <!-- of the Configuration attribute. -->
    
          <!-- Remember that if you do use more than one param on the uri, will have to include as a CDATA, -->
          <!-- otherwise, parser will complain. -->
          <!-- <attribute name="InvokerLocator"><![CDATA[socket://${jboss.bind.address}:8084/?enableTcpNoDelay=false&clientMaxPoolSize=30\]\]\></attribute> -->
    
          <attribute name="Configuration">
             <config>
                <!-- Other than transport type and handler, none of these configurations are required (will just use defaults). -->
                <invoker transport="socket">
                   <!-- The following are specific to socket invoker -->
                   <attribute name="numAcceptThreads">1</attribute>
                   <attribute name="maxPoolSize">303</attribute>
                   <attribute name="clientMaxPoolSize" isParam="true">304</attribute>
                   <attribute name="socketTimeout">60000</attribute>
                   <!-- To set socketTimeout on client as well, add "isParam" -->
                   <!--<attribute name="socketTimeout" isParam="true">60000</attribute>-->
                   <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
                   <attribute name="serverBindPort">6666</attribute>
                   <!-- <attribute name="clientConnectAddress" isParam="true">216.23.33.2</attribute> -->
                   <!-- <attribute name="clientConnectPort" isParam="true">7777</attribute> -->
                   <attribute name="enableTcpNoDelay" isParam="true">false</attribute>
                   <attribute name="backlog">200</attribute>
                   <!-- The following is for callback configuration and is independent of invoker type -->
                   <attribute name="callbackMemCeiling">30</attribute>
                   <!-- indicates callback store by fully qualified class name -->
                   <attribute name="callbackStore">org.jboss.remoting.callback.CallbackStore</attribute>
                   <!-- indicates callback store by object name -->
                   <!-- <attribute name="callbackStore">jboss.remoting:service=CallbackStore,type=Serializable</attribute> -->
                   <!-- config params for callback store.  if were declaring callback store via object name, -->
                   <!-- could have specified these config params there. -->
                   <!-- StoreFilePath indicates to which directory to write the callback objects. -->
                   <!-- The default value is the property value of 'jboss.server.data.dir' and if this is not set, -->
                   <!-- then will be 'data'. Will then append 'remoting' and the callback client's session id. -->
                   <!-- An example would be 'data\remoting\5c4o05l-9jijyx-e5b6xyph-1-e5b6xyph-2'. -->
                   <attribute name="StoreFilePath">callback</attribute>
                   <!-- StoreFileSuffix indicates the file suffix to use for the callback objects written to disk. -->
                   <!-- The default value is ser. -->
                   <attribute name="StoreFileSuffix">cst</attribute>
                   <!-- Sets the callback error handler to use when determining how to manage failed push callbacks -->
                   <!-- When not specified, the default is org.jboss.remoting.callback.DefaultCallbackErrorHandler -->
                   <!-- <attribute name="callbackErrorHandler">org.jboss.remoting.callback.DefaultCallbackErrorHandler</attribute> -->
                </invoker>
                <!-- At least one handler is required by the connector.  If have more than one, must declare -->
                <!-- different subsystem values.  Otherwise, all invocations will be routed to the only one -->
                <!-- that is declared. -->
                <handlers>
                   <!-- specify handler by fully qualified classname -->
                   <handler subsystem="mock">org.jboss.test.remoting.transport.mock.MockServerInvocationHandler</handler>
                   <!-- can also specify handler by object name -->
                   <!-- <handler subsystem="mock">test:type=handler</handler> -->
                </handlers>
             </config>
          </attribute>
       </mbean>
    
       <!-- This Connector is for the SSL based socket transport.  -->
       <!-- It is basically the same as the regular socket configuration -->
       <!-- with the exception of the protocol name (sslsocket) and -->
       <!-- the serverSocketFactory attribute.  Due to this, will   -->
       <!-- shorten the extra attributes to highlight the specific -->
       <!-- differences between sslsocket and socket transports. -->
       <mbean code="org.jboss.remoting.transport.Connector"
          xmbean-dd="org/jboss/remoting/transport/Connector.xml"
          name="jboss.remoting:service=Connector,transport=SSLSocket"
          display-name="SSL Socket transport Connector">
    
          <attribute name="Configuration">
             <config>
                <!-- Other than transport type and handler, none of these configurations are required (will just use defaults). -->
                <!-- This includes the serverSocketFactory, but are including it here to show how to reference the -->
                <!-- SSL server socket factory implementation provided with JBossRemoting.  -->
                <invoker transport="sslsocket">
                   <!-- The following is for setting the server socket factory.  If want ssl support -->
                   <!-- use a server socket factory that supports ssl.  The only requirement is that -->
                   <!-- the server socket factory value must be an ObjectName, meaning the -->
                   <!-- server socket factory implementation must be a MBean and also -->
                   <!-- MUST implement the org.jboss.remoting.security.ServerSocketFactoryMBean interface. -->
                   <attribute name="serverSocketFactory">jboss.remoting:service=ServerSocketFactory,type=SSL</attribute>
                   <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
                   <attribute name="serverBindPort">6667</attribute>
                </invoker>
                <handlers>
                   <handler subsystem="mock">org.jboss.test.remoting.transport.mock.MockServerInvocationHandler</handler>
                </handlers>
             </config>
          </attribute>
          <!-- This depends is included because need to make sure this mbean is running before configure invoker. -->
          <depends>jboss.remoting:service=ServerSocketFactory,type=SSL</depends>
       </mbean>
    
       <!-- This Connector is for the http based transport.  -->
       <!-- This invoker will basically run as a standalone http server -->
       <mbean code="org.jboss.remoting.transport.Connector"
          xmbean-dd="org/jboss/remoting/transport/Connector.xml"
          name="jboss.remoting:service=Connector,transport=HTTP"
          display-name="HTTP transport Connector">
    
          <!-- Since there are no special configuration properties for this invoker, will just use the following -->
          <!-- to declare the invoker and not within the 'invoker' element within the 'Configuration' attribute below. -->
          <!-- IMPORTANT to note can only be either 'InvokerLocator' attribute OR 'invoker' element, not both. -->
          <attribute name="InvokerLocator">http://${jboss.bind.address}:6668</attribute>
    
          <attribute name="Configuration">
             <config>
                <handlers>
                   <handler subsystem="mock">org.jboss.test.remoting.transport.mock.MockServerInvocationHandler</handler>
                </handlers>
             </config>
          </attribute>
       </mbean>
    
       <!-- This Connector is for the https based transport.  -->
       <!-- This invoker will basically run as a standalone https server -->
       <mbean code="org.jboss.remoting.transport.Connector"
          xmbean-dd="org/jboss/remoting/transport/Connector.xml"
          name="jboss.remoting:service=Connector,transport=HTTPS"
          display-name="HTTPS transport Connector">
    
          <attribute name="Configuration">
             <config>
                <invoker transport="https">
                   <!-- When doing https, this attribute MUST be set and MUST always be the same value. -->
                   <attribute name="SSLImplementation">org.jboss.remoting.transport.coyote.ssl.RemotingSSLImplementation</attribute>
                   <!-- The following is for setting the server socket factory.  If want ssl support -->
                   <!-- use a server socket factory that supports ssl.  The only requirement is that -->
                   <!-- the server socket factory value must be an ObjectName, meaning the -->
                   <!-- server socket factory implementation must be a MBean and also -->
                   <!-- MUST implement the org.jboss.remoting.security.ServerSocketFactoryMBean interface. -->
                   <attribute name="serverSocketFactory">jboss.remoting:service=ServerSocketFactory,type=SSL</attribute>
                   <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
                   <attribute name="serverBindPort">6669</attribute>
                </invoker>
                <handlers>
                   <handler subsystem="mock">org.jboss.test.remoting.transport.mock.MockServerInvocationHandler</handler>
                </handlers>
             </config>
          </attribute>
          <!-- This depends is included because need to make sure this mbean is running before configure invoker. -->
          <depends>jboss.remoting:service=ServerSocketFactory,type=SSL</depends>
       </mbean>
    
       <!-- This Connector is for the rmi based transport.  -->
       <mbean code="org.jboss.remoting.transport.Connector"
          xmbean-dd="org/jboss/remoting/transport/Connector.xml"
          name="jboss.remoting:service=Connector,transport=RMI"
          display-name="RMI transport Connector">
    
          <attribute name="Configuration">
             <config>
                <invoker transport="rmi">
                   <!-- The port on which to create the RMI registry. -->
                   <!-- The default is 3455. -->
                   <attribute name="registryPort" isParam="true">7000</attribute>
                   <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
                   <attribute name="serverBindPort">6670</attribute>
                </invoker>
                <handlers>
                   <handler subsystem="mock">org.jboss.test.remoting.transport.mock.MockServerInvocationHandler</handler>
                </handlers>
             </config>
          </attribute>
       </mbean>
    
       <!-- This Connector is for the multiplex based transport.  The multiplex client and server invokers     -->
       <!-- inherit much of their functionality from the socket invokers and use a subset of their parameters. -->       
       <mbean code="org.jboss.remoting.transport.Connector"
          xmbean-dd="org/jboss/remoting/transport/Connector.xml"
          name="jboss.remoting:service=Connector,transport=Multiplex"
          display-name="Multiplex transport Connector">
    
          <attribute name="Configuration">
             <config>
                <!-- Other than transport type and handler, none of these configurations are required (will just use defaults). -->
                <invoker transport="multiplex">
                   <!-- The following are specific to socket/multiplex invoker -->
                   <attribute name="numAcceptThreads">1</attribute>
                   <attribute name="maxPoolSize">303</attribute>
                   <attribute name="clientMaxPoolSize" isParam="true">304</attribute>
                   
                   <attribute name="socketTimeout">60000</attribute>
                   <!-- To set socketTimeout on client as well, add "isParam" -->
                   <!--<attribute name="socketTimeout" isParam="true">60000</attribute>-->
                      
                   <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
                   <attribute name="serverBindPort">6666</attribute>
                   <!-- <attribute name="clientConnectAddress" isParam="true">216.23.33.2</attribute> -->
                   <!-- <attribute name="clientConnectPort" isParam="true">7777</attribute> -->
                   
                   <!-- The following two parameters, enableTcpNoDelay and backlog, are not currently used. -->
                   <!-- <attribute name="enableTcpNoDelay" isParam="true">false</attribute>-->
                   <!-- <attribute name="backlog">200</attribute>-->
                   
                   <!-- The following is for callback configuration and is independent of invoker type -->
                   <attribute name="callbackMemCeiling">30</attribute>
                   <!-- indicates callback store by fully qualified class name -->
                   <attribute name="callbackStore">org.jboss.remoting.callback.CallbackStore</attribute>
                   <!-- indicates callback store by object name -->
                   <!-- <attribute name="callbackStore">jboss.remoting:service=CallbackStore,type=Serializable</attribute> -->
                   <!-- config params for callback store.  if were declaring callback store via object name, -->
                   <!-- could have specified these config params there. -->
                   <!-- StoreFilePath indicates to which directory to write the callback objects. -->
                   <!-- The default value is the property value of 'jboss.server.data.dir' and if this is not set, -->
                   <!-- then will be 'data'. Will then append 'remoting' and the callback client's session id. -->
                   <!-- An example would be 'data\remoting\5c4o05l-9jijyx-e5b6xyph-1-e5b6xyph-2'. -->
                   <attribute name="StoreFilePath">callback</attribute>
                   <!-- StoreFileSuffix indicates the file suffix to use for the callback objects written to disk. -->
                   <!-- The default value is ser. -->
                   <attribute name="StoreFileSuffix">cst</attribute>
                   <!-- Sets the callback error handler to use when determining how to manage failed push callbacks -->
                   <!-- When not specified, the default is org.jboss.remoting.callback.DefaultCallbackErrorHandler -->
                   <!-- <attribute name="callbackErrorHandler">org.jboss.remoting.callback.DefaultCallbackErrorHandler</attribute> -->
                </invoker>
                <!-- At least one handler is required by the connector.  If have more than one, must declare -->
                <!-- different subsystem values.  Otherwise, all invocations will be routed to the only one -->
                <!-- that is declared. -->
                <handlers>
                   <!-- specify handler by fully qualified classname -->
                   <handler subsystem="mock">org.jboss.test.remoting.transport.mock.MockServerInvocationHandler</handler>
                   <!-- can also specify handler by object name -->
                   <!-- <handler subsystem="mock">test:type=handler</handler> -->
                </handlers>
             </config>
          </attribute>
       </mbean>
       
       <!-- ******************************************************************** -->
       <!-- DETECTORS                                                            -->
       <!-- Zero or more detectors are allowed.                                  -->
       <!-- Currently only have implementation for multicast and jndi            -->
       <!-- ******************************************************************** -->
    
       <!-- The multicast detector uses multicase to broadcast detection messages -->
       <mbean code="org.jboss.remoting.detection.multicast.MulticastDetector"
          name="jboss.remoting:service=Detector,transport=multicast">
          <!-- The address to bind to for the network interface. -->
          <!-- <attribute name="BindAddress">${jboss.bind.address}</attribute> -->
          <!-- The IP that is used to broadcast detection messages on via multicast. -->
          <!-- To be more specific, will be the ip of the multicast group the detector will join. -->
          <!-- This attribute is ignored if the Address has already been set when started. -->
          <!-- Default is 224.1.9.1. -->
          <attribute name="DefaultIP">224.1.9.2</attribute>
          <!-- Multicast group port that the detector will join on.  Default is 2410 -->
          <attribute name="Port">2411</attribute>
          <!-- The IP of the multicast group that the detector will join. -->
          <!-- The default will be that of the DefaultIP if not explicitly set. -->
          <attribute name="Address">224.1.9.3</attribute>
          <attribute name="DefaultTimeDelay">10000</attribute>
          <attribute name="HeartbeatTimeDelay">5000</attribute>
       </mbean>
    
       <mbean code="org.jboss.remoting.detection.jndi.JNDIDetector"
          name="jboss.remoting:service=Detector,transport=jndi">
          <!-- host to which the detector will connect to for the JNDI server. -->
          <attribute name="Host">localhost</attribute>
          <!-- port to which detector will connect to for the JNDI server. -->
          <attribute name="Port">5555</attribute>
          <!-- context factory string used when connecting to the JNDI server. -->
          <!-- The default is org.jnp.interfaces.NamingContextFactory. -->
          <!-- <attribute name="ContextFactory">org.acme.NamingContextFactory</attribute> -->
          <!-- url package string to use when connecting to the JNDI server. -->
          <!-- The default is org.jboss.naming:org.jnp.interfaces. -->
          <!-- <attribute name="URLPackage">org.acme.naming</attribute> -->
          <!-- Sets the number of detection iterations before manually pinging -->
          <!-- remote server to make sure still alive. This is needed since remote server -->
          <!-- could crash and yet still have an entry in the JNDI server, -->
          <!-- thus making it appear that it is still there. The default value is 5. -->
          <attribute name="CleanDetectionNumber">20</attribute>
    
          <!-- Specifies the domains in which the detector will recognize -->
          <!-- detections.  If servers are not configured to be in these -->
          <!-- domains, they will not be added to NetworkRegistry. -->
          <attribute name="Configuration">
             <domains>
                <domain>roxanne</domain>
                <domain>sparky</domain>
             </domains>
          </attribute>
       </mbean>
    
    
       <!-- Persitent store for remoting callbacks (pull model).  -->
       <mbean code="org.jboss.remoting.callback.CallbackStore"
          name="jboss.remoting:service=CallbackStore,type=Serializable"
          display-name="Persisted Callback Store">
    
          <!-- the directory to store the persisted callbacks into -->
          <attribute name="StoreFilePath">callback_store</attribute>
          <!-- the file suffix to use for each callback persisted to disk -->
          <attribute name="StoreFileSuffix">cbk</attribute>
       </mbean>
    
    
       <!-- This section is for custom (SSL) server socket factory  -->
    
       <!-- This service is used to build the SSL Server socket factory -->
       <!-- This will be where all the store/trust information will be set. -->
       <!-- If do not need to make any custom configurations, no extra attributes -->
       <!-- need to be set for the SSLSocketBuilder and just need to set the -->
       <!-- javax.net.ssl.keyStore and javax.net.ssl.keyStorePassword system properties. -->
       <!-- This can be done by just adding something like the following to the run script for JBoss -->
       <!-- (this one is for run.bat): -->
       <!-- set JAVA_OPTS=-Djavax.net.ssl.keyStore=.keystore -Djavax.net.ssl.keyStorePassword=opensource %JAVA_OPTS% -->
       <!-- Otherwise, if want to customize the attributes for SSLSocketBuilder, will need to uncomment them below. -->
       <mbean code="org.jboss.remoting.security.SSLSocketBuilder"
          name="jboss.remoting:service=SocketBuilder,type=SSL"
          display-name="SSL Server Socket Factory Builder">
          <!-- IMPORTANT - If making ANY customizations, this MUST be set to false. -->
          <!-- Otherwise, will used default settings and the following attributes will be ignored. -->
          <attribute name="UseSSLServerSocketFactory">false</attribute>
          <!-- This is the url string to the key store to use -->
          <attribute name="KeyStoreURL">.keystore</attribute>
          <!-- The password for the key store -->
          <attribute name="KeyStorePassword">opensource</attribute>
          <!-- The password for the keys (will use KeystorePassword if this is not set explicitly. -->
          <attribute name="KeyPassword">opensource</attribute>
          <!-- The protocol for the SSLContext.  Default is TLS. -->
          <attribute name="SecureSocketProtocol">TLS</attribute>
          <!-- The algorithm for the key manager factory.  Default is SunX509. -->
          <attribute name="KeyManagementAlgorithm">SunX509</attribute>
          <!-- The type to be used for the key store. -->
          <!-- Defaults to JKS.  Some acceptable values are JKS (Java Keystore - Sun's keystore format), -->
          <!-- JCEKS (Java Cryptography Extension keystore - More secure version of JKS), and -->
          <!-- PKCS12 (Public-Key Cryptography Standards #12 keystore - RSA's Personal Information Exchange Syntax Standard). -->
          <!-- These are not case sensitive. -->
          <attribute name="KeyStoreType">JKS</attribute>
       </mbean>
    
       <!-- The server socket factory mbean to be used as attribute to socket invoker -->
       <!-- See serverSocketFactory attribute above for where it is used -->
       <!-- This service provides the exact same API as the ServerSocketFactory, so -->
       <!-- can be set as an attribute of that type on any MBean requiring an ServerSocketFactory. -->
       <mbean code="org.jboss.remoting.security.SSLServerSocketFactoryService"
          name="jboss.remoting:service=ServerSocketFactory,type=SSL"
          display-name="SSL Server Socket Factory">
          <depends optional-attribute-name="SSLSocketBuilder"
             proxy-type="attribute">jboss.remoting:service=SocketBuilder,type=SSL</depends>
       </mbean>
    
    
    </server>