Seam application using tomcat and postgresql 9.0.3
App allows users to download word documents that are saved in the DB as BLOB and defined in the bean as a byte array.
These word documents have been uploaded by users in xml format.
When I use this code with Tomcat(5) in Windows, it works just fine. When used with Tomcat (v. 6.0.24) on a Linux server, I get the behavior that the contents are displayed as HEX code in the Downloaded file???
At first I thought that the server was missing some fonts, files with Fonts that are definitely on the server show the same behavior. Even TXT files do the same thing.
The code for doing the download is as follows:
byte[] wordDoc = createApptLetter();
HttpServletResponse response = (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();
response.setContentType("application/msword");
fileName = letter.getFileName();
response.addHeader("Content-disposition", "attachment; filename=\"" + fileName + "\"");
response.setContentLength(wordDoc.length);
OutputStream os = response.getOutputStream();
//log.error(response.getContentType());
os.write(wordDoc);
os.flush();
os.close();
facesContext.renderResponse();
facesContext.responseComplete();
edit: here is createApptLetter method:
private byte[] createApptLetter() {
LetterTemplate template = appointmentHome.getInstance().getLetterTemplate();
Client client = appointmentHome.getInstance().getClientRegistration().getEligibilityCycle().getClient();
String sageClinic = appointmentHome.getInstance().getFacility().getName();
String apptDate = appointmentHome.getInstance().getAppointmentDateString();
String apptTime = appointmentHome.getInstance().getAppointmentTimeString();
String notes = appointmentHome.getInstance().getAppointmentNotes();
String longDateFormat = SageConstantsEnum.DateFormats.LONGDATEFORMAT.getDescription();
SimpleDateFormat df = new SimpleDateFormat(longDateFormat);
String today = df.format(new Date());
//StringBuilder sbTemplate = new StringBuilder(new String(template.getLetterTemplateText()));
String xmlTemplate = new String (template.getLetterTemplateText());
xmlTemplate = xmlTemplate.replace("letterDate", today);
xmlTemplate = xmlTemplate.replace("apptDate", apptDate);
xmlTemplate = xmlTemplate.replace("apptTime", apptTime);
xmlTemplate = xmlTemplate.replace("apptNotes", notes);
xmlTemplate = xmlTemplate.replace("sageClinic", sageClinic);
xmlTemplate = xmlTemplate.replace("clientName", client.getFullname());
xmlTemplate = xmlTemplate.replace("clientCity",client.getMailingAddress().getAddress().getCity());
xmlTemplate = xmlTemplate.replace("clientAddress", client.getMailingAddress().getAddress().getStreetaddress());
xmlTemplate = xmlTemplate.replace("clientState",client.getMailingAddress().getAddress().getState());
xmlTemplate = xmlTemplate.replace("clientZip", client.getMailingAddress().getAddress().getZipcode());
return xmlTemplate.getBytes();
}