Что лучший путь Java состоит в том, чтобы создать веб-сервисы REST JSON/XML, который подобен WCF?

Согласно Qt doc ( https://doc.qt.io/qt-5/qthread.html#exec ), exec() означает вход в цикл обработки событий и ожидание выхода называется. Вероятно, поэтому коды, следующие за exec(), реализуются после выхода из приложения.

6
задан IgorM 19 April 2009 в 02:31
поделиться

4 ответа

Джерси, RESTEasy и Restlet утверждают, что выполняют то, что вы просите. Я только попробовал Рестлет, и я подумал, что это довольно неприятно.

Spring 3 еще не вышел в финальную версию, но сборка M2 кажется довольно солидной, и там есть REST. Если бы я создавал новое веб-приложение REST, я бы, вероятно, рискнул с M2.

3
ответ дан 17 December 2019 в 04:52
поделиться

Yes, Jersey is rather good and based on your description would do exactly what you want.

I wouldn't wait for Spring-WS-thing -- Jersey is good, and I don't know what benefits there are to Spring alternative, beyond "Spring brand". To me JAX-RS (that jersey implements) is a very good example of choosing and using best components that implement open APIs; Jersey runs on (amongst other things) any servlet container, can use best XML/JSON/etc parsers, use pluggable validation (bean validation api) and so forth. Same should be true for other JAX-RS implementations too (like Resteasy).

0
ответ дан 17 December 2019 в 04:52
поделиться

Я использовал и зафиксировал некоторые исправления для CXF. Он поддерживает JAX-RS и полностью настраивается с помощью spring. Здесь есть хороший учебник:

http://cwiki.apache.org/CXF20DOC/jax-rs.html

CXF - это проект apache, и поскольку JAX-RS является стандартом, у вас не должно возникнуть проблем с отходом от это, если у вас возникнут трудности.

Надеюсь, это поможет.

0
ответ дан 17 December 2019 в 04:52
поделиться

Все объясняется в UIViewController Class Reference . Особенно ознакомьтесь с разделом Поворот вида вверху.

Из справки:

Обработка поворотов вида

По умолчанию класс UIViewController отображает только виды в портретном режиме. Для поддержки дополнительных ориентаций, необходимо переопределить shuldAutorotateToInterityOrientation: метод и возврат YES для любого ориентации, поддерживаемые подклассом. Если свойства autoresizing вашего представления сконфигурированы правильно, что возможно, это все, что вам нужно сделать. Однако класс UIViewController обеспечивает дополнительные крючки для реализации дополнительные варианты поведения по мере необходимости.

Временное отключение функций, которые не нужны или могут иначе вызвать проблемы во время ориентации change, можно переопределить willRotateToInterityOrientation: длительность: метод и выполнение необходимых действий там. Затем можно переопределить DidRotate, интерфейс Ориентация: метод и использовать его для повторного включения этих элементы после изменения ориентации завершено.

Если требуется выполнить пользовательские действия анимации во время ориентации change, вы можете сделать это в одном из двух способы. Изменения ориентации, используемые для выполняются в два этапа, с уведомлениями происходящее в начале, середине, и конечные точки вращения. Однако в iPhone OS 3.0 поддержка была добавлено для делать ориентации изменения в один шаг. Использование одношагового изменение ориентации имеет тенденцию быть быстрее по сравнению со старым двухэтапным процессом и обычно рекомендуется для любых новых код.

Добавление анимации для одного шага изменить ориентацию, переопределить willAnimateRotationToInterityOrientation: длительность: метод и выполнение анимации там. Использование более старых двухшаговых , переопределить один или оба из willAnimateFirstInstancedOfRotationToInterityOrientation: продолжительность: и willAnimateSecondExondOfrotationStartInterityOrientation: длительность: методы настройки анимации перед каждым шагом. Необходимо выбрать только один метод и переопределить только методы, связанные с техника. Если переопределить либо способ, связанный с двухэтапным техника, контроллер вида использует этот метод по умолчанию.

-121--2580054-

Команда corelist из модуля Module:: CoreList определяет, является ли модуль основным.

> corelist Carp

Carp was first release with perl 5

> corelist XML::Twig

XML::Twig was not in CORE (or so I think)

Вот один из способов использовать его в сценарии. Модуль :: CoreList POD слишком тернистый - вы должны пройти поиск исходного кода, чтобы найти, какие методы назвать:

use strict;
use warnings;
use Module::CoreList;

my $mod = 'Carp';
#my $mod = 'XML::Twig';
my @ms = Module::CoreList->find_modules(qr/^$mod$/);
if (@ms) {
    print "$mod in core\n";
}
else {
    print "$mod not in core\n";
}

__END__

Carp in core
-121--1042491-

Я пытался с Restlet, RestEasy, Jersey, CXF, Spring. Вот мои отзывы:

  1. Restlet: Kind of nasty с собственным набором аннотаций. И немного сбивает с толку. Тем не менее, нельзя винить, поскольку они смотрели на реализацию этого еще до того, как там был JAX-RS.

  2. RestEasy/Джерси/CXF:Так же легко, как и его название. Просто и прямо вперед, чтобы начать работать над этим. Хорошая часть для этих 3 рамок заключается в том, что, поскольку они совместимы с JAX-RS, любое время в будущем может быстро вернуться к таким другим рамкам, совместимым с JAX-RS, если их делать лучше или еще лучше соответствует вашим потребностям

  3. Весна: Весна 3 начали поддерживать API REST. Но сделайте не то, чтобы он НЕ совместим с JAX-RS, по той же причине, что и для Restlet.

    Поэтому я бы выбрал только из RestEasy/Jersey/CXF.

2
ответ дан 17 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

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