2014-09-10 6 views
0

Я очень смущен концепцией QName.Цель использования QName

позволяет взять к примеру (я взял эти примеры из http://www.mkyong.com/):

 ServerInfoService sis = new ServerInfoService(); 
     ServerInfo si = sis.getServerInfoPort(); 
     System.out.println(si.getServerName()); 

И QName:

 URL url = new URL("http://localhost:8888/ws/image?wsdl"); 
     QName qname = new QName("http://ws.mkyong.com/", "ImageServerImplService"); 
     Service service = Service.create(url, qname); 
     ImageServer imageServer = service.getPort(ImageServer.class); 

Теперь мой вопрос:

1) Есть ли концепции, на основе которых мы должны решить, какой тип клиента мы можем написать

2) Какова цель или дополнительные преимущества при использовании QName, потому что все, что я вижу здесь, это то, что она увеличивает сложность по сравнению с простым клиентом.

ответ

2

Вот что я знаю: -

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

ServerInfoService sis = new ServerInfoService(); ServerInfo si = sis.getServerInfoPort();

является простым простой подход прокси поколения; где вы используете такой инструмент, как wsimport, для создания прокси/заглушек на интерфейсах SEI (интерфейс конечной точки обслуживания)/веб-сервиса и вызывать методы на нем, как и любой другой вызов метода java. В основном используется на клиентах, где вам просто нужно вызывать методы на веб-сервисе, не вдаваясь в детализированные детали.

QName или, скорее, подход Service предлагают более тонкие средства контроля за взаимодействием клиента и веб-службы. В JAXWS 2.0 появилось нечто, называемое интерфейсом Provider, который был альтернативой вашему SEI, который в основном позволяет клиенту общаться на уровне XML-сообщений и предоставлять клиенту динамическое представление/представление вашего веб-сервиса. Подробнее here. Основное использование API Service в основном заключается в создании экземпляров Dispatch, которые в основном позволяют клиенту отправлять специализированный порт (метод, квалифицированный с использованием QName api) с использованием сообщений JAXB в качестве полезных данных XML.

Другие виды использования Service api позволяют асинхронно вызывать методы вызова клиентов на веб-сервисе; обеспечить доступ к обработчикам; и т. д. Хороший пример использования подхода Service и QName, который поможет вам понять дальше и связать то, что я сказал, это ссылка здесь: - Dispatching Web Service Calls.

Это, как говорится, есть намного больше, чтобы знать и понимать; но надеюсь, что это даст вам начало.