Хорошо.Я потратил много времени на изучение этого, читая справочники и статьи разработчиков, стуча головой по клавиатуре, и я наконец-то кое-что нашел.Не совсем так, но почти.(Хотелось бы, чтобы кое-что из IBM было легче найти ... но вы работаете с тем, что вам дают. И, честно говоря, с тем, что я прочитал, это имеет смысл и довольно мощно.)
В любом случае, здесьэто хитрость для инструментов Rational и WebSphere: Сначала нужно создать пустой Java-проект. Это один из ключей к созданию клиента портативного веб-сервиса.
Так что вот оноПока что:
- Создайте пустой проект Java в вашей IDE.Я предпочитаю использовать перспективу Java EE в Rational Application Developer / Software Architect или в WebSphere Integration Developer.
- Импортируйте WSDL и схемы в другой пустой общий проект в вашей IDE, а НЕ вНедавно созданный Java-проект.
- Щелкните правой кнопкой мыши основной WSDL и выберите создание клиента веб-службы.
- Еще один ключ здесь : убедитесь, что в мастереПохоже, что вы изменяете клиентский проект на Java-проект, созданный на первом этапе.По умолчанию мастер будет пытаться настроить таргетинг на новый или существующий динамический веб-проект, а это НЕ то, что вам нужно.
- Убедитесь, что вы выбрали JAX-WS в качестве своей реализации.Убедитесь, что вы хотите, чтобы клиент был «переносимым», и убедитесь, что вы указываете мастеру включить WSDL в клиент Java Project.
- В ожидании у вас все в порядке (и работает локальный сервер).), Инструмент Rational / WebSphere теперь должен сгенерировать клиент веб-службы JAX-WS в проекте Java.
Замечательно!Большой!Теперь у вас есть Java-проект (он же jar), который вы можете использовать, чтобы сделать его переносимым.Но как сделать инструмент IBM счастливым и присоединить политики безопасности к клиенту?
Во-первых, я узнал, что действительно лучше всего подключать политики безопасности в административной консоли WebSphere Application Server / Enterprise.Сервисная шина / Сервер процессов.Слишком много вещей, чтобы попытаться объяснить их безопасностью, пытаться вручную все это кодировать, хотя IBM предоставляет вам API для этого.Доверьтесь мне.Проще определить безопасность на сервере, а затем просто назначить ее клиенту.
В любом случае .... чтобы клиент был виден на консоли администратора для присоединения наборов политик и привязок клиентадля безопасности JAX-WS он должен быть на «веб-уровне» (из-за отсутствия лучшего термина), чтобы он мог видеть флягу как веб-клиента.Это означает, что присоединение jar-файла как J2EE Utility Jar к проекту EAR не будет работать.EAR - это не «веб-уровень», а «уровень приложения».Таким образом, чтобы сделать это, вам нужно связать Java-проект с EAR на экране Зависимости модуля J2EE, но НЕ как Utility Jar.Вместо этого установите флажок «lib».Это означает, что он может быть виден / смонтирован в каталоге lib динамического веб-проекта / войны (что вы также должны сделать).Удивительно, но консоль администратора теперь увидит ваш клиентский jar как настоящий клиент веб-службы JAX-WS!И теперь вы можете связать с ним наборы политик и привязки клиентов, чтобы удовлетворить ваши потребности в безопасности!
Поначалу это может показаться странным, но это имеет смысл.В конце концов, вы имеете дело с web сервисом и используете веб-протоколы , поэтому в некоторых случаях имеет смысл поместить клиента на " веб-уровень "вашего приложения.
РЕДАКТИРОВАТЬ: Я перепутал с политиками безопасности и обнаружил, что статья этого разработчика разработчик помог мне больше всего,Обратите особое внимание на Листинг 2 ClientTest.java .К сожалению, вы должны закодировать всю безопасность в вашем клиенте, чтобы заставить его работать максимально чисто.А потом вот еще одна ошибка.IBM позволит вам создавать токены имени пользователя на клиенте, который работает за пределами WebSphere, но они НЕ будутпозволяют создавать токены LTPA вне WebSphere.Таким образом, чтобы протестировать токены такого типа, вам нужно упаковать и развернуть клиент локально, чтобы протестировать его все.