With Axis, you can bundle it's JAR files into a WAR file and deploy that to any server. This would be part of the build process for your web service. Of course this makes the file you're deploying larger, but it removes the need to require that Axis is already installed on the server.
Another option is to create an ear file, and bundle the Axis war inside of it.
This is how I'm deploying one of my current applications. This way, you can reference
Axis through any context that you like
(such as http://www.yourserver.org/yourproject-axis/services/YourService),
and your customer won't even notice that they're "installing" it.
Axis is really one of the least intrusive libraries that I've ever used. You don't have
to implement any special interfaces, or anything like that -- unless you're using
Handlers, but that can be easily separated from your actual service classes. You
just write your classes, and use Axis as a web service bridge to invoke them.
So, I think that we're speaking of "portability" in a slightly different sense than
it is typically used.
