Java [закрытая] привязка XML

Самый простой способ проверить функцию, назначенную для retry_strategy, - это переместить ее за пределы вызова redis.createClient и экспортировать ее:

export const retryStrategy = function (options) {
  if (options.error) {
    if (options.error.code === 'ECONNREFUSED') {
      return new Error('The server refused the connection');
    }
    if (options.error.code === 'ECONNRESET') {
      return new Error('The server reset the connection');
    }
    if (options.error.code === 'ETIMEDOUT') {
      return new Error('The server timeouted the connection');
    }
  }
  if (options.total_retry_time > 1000 * 60 * 60) {
    return new Error('Retry time exhausted');
  }
  if (options.attempt > 10) {
    return undefined;
  }
  return Math.min(options.attempt * 100, 3000);
}

const client = redis.createClient({
  retry_strategy: retryStrategy
  ...

Затем вы можете импортировать ее и проверить напрямую: [ 115]

import { retryStrategy } from './your-module';

test('retryStrategy', () => {
  expect(retryStrategy({ attempt: 5 })).toBe(500);  // SUCCESS
  ...
})
19
задан Paul Croarkin 15 October 2008 в 18:28
поделиться

11 ответов

JiBX. Ранее я использовал солонка XML , но JiBX оказался значительно лучше, особенно с точки зрения производительности (прямой порт некоторого кода приложения от Castor XML к JiBX сделал его 9x быстрее). Я также нашел, что отображающийся формат для JiBX был более изящным, чем Castor.

JiBX достигает своей производительности при помощи управления байт-кодом посткомпиляции, а не отражательного подхода, принятого Castor. Это имеет преимущество, что оно помещает меньше требований к способу, которым Вы пишете свои отображенные классы. Нет никакой потребности в методах считывания, методах set и конструкторах без аргументов только для удовлетворения инструментов. Большую часть времени можно записать класс, не рассматривая отображающиеся проблемы и затем отобразить его без модификаций.

8
ответ дан 30 November 2019 в 03:48
поделиться

XmlBeans является хорошим выбором особенно, если Вы 'повредили' файлы XSD/WSDL.

Don упомянул

EmployeesDocument empDoc = EmployeesDocument. Factory.parse(xmlFile);

.. но это может также взять Узел, или Файл или примерно любой источник.

Никакая борьба с пространствами имен, пересеките к объекту, который Вы хотите в неМаршалл и Factory.parse это.

Желание я нашел его 2 недели назад.

1
ответ дан 30 November 2019 в 03:48
поделиться

Мы используем Castor. Это удовлетворяет нашим потребностям довольно хорошо.

0
ответ дан 30 November 2019 в 03:48
поделиться

Я задавался вопросом точно тот же вопрос, и наконец я нашел это тестами производительности сделанный IBM. http://www.ibm.com/developerworks/library/x-databdopt2/ . JiBX является моим выбором, который я предполагаю, hehe.

0
ответ дан 30 November 2019 в 03:48
поделиться

Если Вы хотите сделать обоснованное решение, необходимо быть ясными, почему Вы переводите между объектами Java и XML. Причем причина состоит в том, что различные технологии в этом пространстве пытаются решить различные проблемы. Различные инструменты попадают в две категории:

  1. привязка данных XML - относится к процессу представления информации в XML-документе как объект в памяти компьютера. Как правило, это означает определять XSD и генерировать эквивалентный исходный код Java. Interop между различными языками является высшим приоритетом (следовательно использование XSD) - как правило, для реализации основанных на SOAP веб-сервисов.
  2. сериализация XML - относится к выписыванию графика в объектах памяти к потоку, так, чтобы это могло быть воссоздано где-нибудь или когда-то еще. Вы пишете классы Java вручную; xml представление имеет вторичное значение. Кроме того, потребность в производительности часто больше, и потребность во взаимодействии с другими языками, такими как .NET часто ниже.

Для xml сериализации, Xstream трудно победить. JAXB является стандартом для привязки XML.

В любом случае при использовании J2EE, необходимо будет обратить особое внимание на классы, полученные от JPA начиная с прокси класса и персистентности, определенные типы набора могут перепутать привязку / инструменты сериализации.

12
ответ дан 30 November 2019 в 03:48
поделиться

Если у Вас есть XSD для XML, и Вы не должны связывать данные с существующим набором классов, то мне действительно нравится XMLBeans. В основном это работает как это:

  • сгенерированные классы Java Использования XSD
  • Компиляции к документам чтения-записи, соответствующим этой схеме

, Связывающей XML-документ со сгенерированными классами, так же просто как:

EmployeesDocument empDoc = EmployeesDocument.Factory.parse(xmlFile); 
4
ответ дан 30 November 2019 в 03:48
поделиться

Мы используем xstream. Маршалинг / немаршалинг тривиален. Посмотрите их учебное руководство для примеров.

3
ответ дан 30 November 2019 в 03:48
поделиться
1
ответ дан 30 November 2019 в 03:48
поделиться

Я использовал солонку 7 лет назад - она работала довольно хорошо. используемые ДАТЫ. Не много вариантов в то время.

В текущих проектах, я использовал
1) JAXB - стандарты базирующаяся, Ссылочная реализация доступная, командная строка и доступные инструменты муравья. последняя версия - 2.1.8 java 5 потребностей +.
2) XStream - для немаршалинга Мыла - нужен Java 5 +. Не так быстро и стандарты, совместимые как последний JAXB.

BR,
~A

1
ответ дан 30 November 2019 в 03:48
поделиться

Я использовал Jaxb с переменным успехом. В то время (несколько лет назад) полная документация была тускла и основная документация использования (включая то, где загрузить реализации), было трудным найти или варьировался.

синтаксический анализатор, который записал классы Java, был довольно хорош с небольшим несоответствием против исходного XSD (хотя я думаю, что это имело проблемы при поддержке абстрактных элементов XML).

я не использовал его с тех пор, но у меня есть предстоящий проект, который потребует просто такой платформы, и мне будет интересно знать как кто-либо еще ярмарки с вышеупомянутым.

2
ответ дан 30 November 2019 в 03:48
поделиться

Jibx - то, что используется здесь. Это очень быстро, но привязка может быть немного хитрой. Однако особенно полезно, если у Вас есть XML-схемы, описывающие Ваши объекты области, поскольку это действительно отображается хорошо на XSD (существует даже бета инструмент XSD2Jibx, который может взять XSDs и создать классы тупикового домена и отображения, которые можно затем взять и подключить коаксиальным кабелем для установки существующей модели предметной области).

Это управляет байт-кодом, таким образом, это должно быть выполнено после начальной компиляции Java .class файлы. Можно использовать плагин Знатока для него или просто использовать его непосредственно (плагин Eclipse, казалось, не работал на меня).

2
ответ дан 30 November 2019 в 03:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: