How can I set "2004-10-31 03:00:00 EEST" calendar time?

The following codesnippet does not understand EEST id. It will fall to GMT setting.
cal = Calendar.getInstance(TimeZone.getTimeZone("EEST"));
cal.set(2004, 10-1, 31, 3, 0, 0);

I could use "Europe/Helsinki" but then cannot say whether I mean 03:00 summertime or 03:00 wintertime.

It will understand "EET" id, but then I sort of skip one hour if want to use 03:00 EEST and then 03:00 EET (+1h to previous one). I've added here a testprogram to see how it goes.

EU daylighttimesaving in StandardTime (UTC) rule:
  2004-03-28 01:00:00 - 2004-10-31 01:00:00

Europe/Helsinki: EEST = "summer time" +1h forward
                 EET  = "winter time" -1h backward
2004-10-31 02:00:00 EEST 
2004-10-31 03:00:00 EEST !! summertime 03:00 
2004-10-31 03:00:00 EET  !! wintertime 03:00 
2004-10-31 04:00:00 EET 
2004-10-31 05:00:00 EET 

caltest.zip
CalendarTest.java.txt