I used Microsoft's JDBC Driver succesfully. The only problem i had was that when you call a prepared statement that updates a table that has a trigger on it, it sends back two results.One for the trigger and one for the actual update. that causes serious problems to CMP Beans that map to that table. The only workaround i found is to remove the triggers.

NOTE: the application-policy name attribute must matchSecurityDomainJndiName, and the module-option name = "managedConnectionFactoryName" must match the object name of the ConnectionManager you areconfiguring here. --> <!--uncomment out this line if you are using the MSSQLXaDbRealmabove MSSQLXaDbRealm -->