Is the Java app calling a stored procedure to load the table - or is it all embedded code in the application?
Why is this process failing and why is that failure not notifying someone of the error? Solve that problem and you eliminate the requirement for synonyms.
Another approach - which I use quite often is a staging table for the load and a stored procedure to process the staged data into the final table. The procedure uses try/catch and explicit transaction - we try to insert and if that fails we rollback (leaving the original table untouched) - and throw the error back to the caller (you could send notification at this point).
You could also look at RCSI - which would allow the table to be available during the load process.
Problems are opportunities brilliantly disguised as insurmountable obstacles.
How to post questions to get better answers faster[/url]
Managing Transaction Logs[/url]