Lets' try this - it won't fit in a comment
From this URL: http://www.dba-oracle.com/t_ora_01843_not_a_valid_month.htm
Resolving ORA-01843 includes bad data issues. The reason a ORA-01843 occurs includes these reasons
•Using an incorrect NLS_DATE_FORMAT
This happens a lot when you see data coming from US
(where the Month is normally written before the day)
but the format in the application is still the "European" style.
(where the day is written before the month).
•Using a incorrect NLS_DATE_FORMAT:
Such as trying to insert a "written" month name but are using a "numeric" month in the mask.
NLS settings are part of locale ( as tomcat would see it ). Locale is part of the environment. This means the command
locale
if run in the tomcat process on the problem server the command will not give the exact same result as when it is run from the tomcat process on the server that works. I'm not all sure tomcat is the problem. However it is a locale setting. Installing new software will not help.
Login to server A (as the user that runs tomcat) then type: locale
Login to server B (as the user that runs tomcat) then type: locale
Is the output completely identical? Oracle is extremely sensitive to locale settings. Make them identical, use the working server's locale.