Have you checked if enabling antiJARLocking or antiResourceLocking in your context.xml has any effect? Apache Tomcat 7 Configuration Reference (7.0.92) - The Context Container
If that doesn't help, you could put (for development only, not recommended for production) the ZSDK_API and all other .jar files inside a location loaded by the common class loader so that the classes in ZSDK_API are not reloaded and therefore they don't attempt to load the DLL more than once. Note that this is considered a hack and it may cause problems if different webapps use different versions of some dependency.
If initial tests work with that configuration, I would suggest creating a new directory and adding that to common.loader in tomcat/conf/catalina.properties. By default it will look similar to this:
If you create tomcat/lib/zsdk and put all the jars there, you would update common.loader as such:
By doing that, you make it easier for yourself to update the ZSDK-specific files because you know they are confined to that specific directory, instead of having to check which files belong to tomcat and which ones belong to ZSDK.
Technical Architect, Kutir Mobility
Posted on behalf of Zebra Technologies