If your application requires different authentication mechanisms for different services, then the login modules that are shipped with most Java EE implementations (servers) don't really suffice.
You probably have to take matters into your own hand by writing a custom login/auth module. Java EE 6 has an API for that: JASPIC. Alternatively you can use the proprietary login module API of your specific server.
In that login/auth module you can inspect the request, determine to which service that request belongs, and then delegate to the appropriate "real" module.
I wrote an article about JASPIC some time ago that might get you started.
Servers often have an option to stack login modules. This is a proprietary feature so there's a very remote chance that one of them allows stacking auth mechanisms.