Проблемы с производительностью при маршаллинге / демаршаллинге в Glassfish / Unix - PullRequest
2 голосов
/ 30 ноября 2010

Я недавно развернул свое приложение на установке 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;
    }

Может ли кто-нибудь помочь мне с этим вопросом?

С уважением,

Карлос Феррейра

1 Ответ

1 голос
/ 30 ноября 2010

JAXBContext является потокобезопасным и может использоваться совместно.Это не нужно постоянно создавать.Это улучшит производительность.

...