For starters, you can share sessions between tomcat instances. A tomcat server receiving the request basically sends a duplication of it's session to all the other tomcat services.
I can't help but think that you have some unexpressed need driving this request, but wish to only ask how to implement this without actually asking how to satisfy the need. In such circumstances, needs are not met but the request often is.
For example, instead of worrying about 1000 requests to one server, and then a rotation, a simple multiple ip address to DNS hostname configuration could distribute the requests in a round-robin fashion.
You could also coordinate your sessions against a database. Databases provide decent storage capabilities, with read consistency. With the right configuration the "next number" could simply be read by the processing node.
Finally, there are other means, leveraging distributed computing. For example, the request could be handled by an internal request relay which initiates a Paxos like protocol to guarantee that all processing nodes have the new "next" number.
All of these techniques are straightforward. However, you are quickly dismissing them because they don't seem too simple to you. Well, perhaps you are seeking an even simpler alternative, and there's no harm in that; however, getting two or more computers to agree on some item consistently, reliably, and at the same time is a bit trickier than we would all like it to be. Feel free to initiate a new effort in this field, but perhaps you will only discover that there are real reasons for the extra overhead and complexity. It is not a trivial problem.
--- An update ---
You know, if you can handle the requests round-robin style, and relax the need to have them ordered between servers, and know that you will only have N servers, you could implement N different request counters.
- Server 1 increments by N assuring that
count % N == 0
- Server 2 increments by N assuring that
count % N == 1
- ...
- Server N-1 increments by N assuring that
count % N = N-2
- Server N increments by N assuring that
count % N = N-1
Of course, cross-server counts would probably be out of global order in short session, but you might get a bit of what you want quickly:
- A unique count per request
- An ordering of requests on a per-server basis
- A count guaranteed to be unique across all servers
- A quick way to determine which server handled the request
What you would lack
- A true ordering of the requests across servers