MBeans can be programmatically (in Java code) created on the JBoss MBeanServer using of course the standard MBeanServer.registerMBean interface. Once registered, this service is available via JMX, but JBoss will not call the lifecycle methods, for example ServiceMBeanSupport.start() to start the service. Use the ServiceController to register, start, stop, etc. the service itself.
Additionally, a service.xml can be dynamically deployed by calling the MainDeployer directly with the URL of the file.