Services with missing/unavailable dependencies

If you are specifying the data source as a resource reference in web.xml, then match the name exactly with that in standalone.xml (or domain.xml):

web.xml:

 <resource-ref>
  <res-ref-name>java:jboss/datasources/OracleDS</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
 </resource-ref>

standalone.xml:

<datasource jndi-name="java:jboss/datasources/OracleDS" pool-name="OracleDS" enabled="true" use-java-context="false">

the reason for the error is you are missing the dependence java:jboss/datasources/UserDS. With Jboss 7.x+ these datasource can be added directly to the app servers configuration as you discovered.

the difference between Standalone and Domain configuration is the standalone configuration is designed for only one app server w/ said configuration. If you look closely at the domain.xml you will see several app server configurations (aka profiles). These will be much like standalone, standalone-full, standalone-ha, standalone-full-ha config files found under the standalone/conf* directory. Operating in domain mode allows you to control many different server instances running on that domain from a central location (ie the domain controller). ( this includes nodes of a cluster if you have ha configured)

This is closely related to your original question in that the domain controller has the ability to gracefully share this datasource configuration to all of its nodes.