The UPnP library is a great piece of work, but most routers now come with it disabled for security reasons. So rather than open a port, the user has to enable UPnP before the game (as a server at least) will work. So it’s questionable whether this is an improvement.
I had a go at this (networking, not UPnP) last year and found that there’s a number of other things worth thinking about…
The client-server model with the server not behind a router generally works well. If the server is hosted on the same machine as a webpage hosting the applet or webstart app, then you may not even need to sign the applet/app (unless you want full screen, or native libraries, and for the second you might get away solely with a set of signed libraries). The client server model also allows you to keep all the major game logic on the server, which is easier to program & allows easy storage of player game state.
However client-server routes all the data through the server. Thus if you have 4 clients, each using 25kbps of bandwidth, then the server has to handle 100kbps. If you had 10 players, this increases to 250kbps. Overall, if the game is turn based, then the bandwidth per client is low, and you can use a client server model with no problem. However, for a real time game, the data transmitted can quickly get out of hand, requiring a huge bandwidth at the server. If this was paid for hosting, it would get expensive. If it was a several megabit home broadband connection & the server was only up for a limited time, it’ll probably be Ok. Just estimate the bandwidth per player & calculate how many players can share the server.
Alternatively you could consider peer-peer networking. Each client has to talk to every other client, so the client bandwidth increases significantly. There is now a limit on the number of simultaneous players based on the player with the slowest connection. It is also more difficult to program & you need to sign the app/applet so it can communicate to any address on the internet. To make it work through routers, you need to use a technique called UDP Punch through. (Use google to find articles). This needs a small server to make it work - The server tracks current players & allows new players to join. Worth considering if you want to leave you server up all the time, but don’t want to max out your bandwidth.