Я недавно развернул свое приложение на установке Glassfish, работающей на Unix, и у меня возникли серьезные проблемы с производительностью в части кода.Мое приложение должно обмениваться данными с другой системой через XML, и я использую Jaxb, чтобы выполнить маршалинг / демаршаллинг обмениваемых сообщений.Каждое сообщение требует одного маршала и одной немаршальной операции.Когда я запускаю приложение на моем компьютере (Windows XP), общий объем обеих операций составляет менее 2 секунд, но когда я запускаю одно и то же приложение с одинаковыми данными, в Unix общий объем составляет около 20 секунд, почтиВ 10 раз большеЯ тщательно искал журналы сервера, пытаясь найти какую-то подсказку, но не смог найти ничего полезного.
Вот код для обоих звонков:
public static <T> String marshal(T transaction) throws JAXBException, IOException {
JAXBContext jc = JAXBContext.newInstance(transaction.getClass().getPackage().getName());
Marshaller u = jc.createMarshaller();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
u.setProperty("jaxb.encoding", "ISO-8859-1");
u.marshal(transaction, baos);
String xml = new String(baos.toByteArray());
baos.close();
return xml;
}
public static <T> T unmarshal(Class<T> docClass, String xml) throws JAXBException, IOException {
String packageName = docClass.getPackage().getName();
InputStream is = new ByteArrayInputStream(xml.getBytes());
JAXBContext jc = JAXBContext.newInstance(packageName);
Unmarshaller u = jc.createUnmarshaller();
Object o = u.unmarshal(is);
is.close();
return (T) o;
}
Может ли кто-нибудь помочь мне с этим вопросом?
С уважением,
Карлос Феррейра