Comment puis-je obtenir les informations de connexion transmis au client de service JAX-WS avec ses ensembles et fixations politiques associés à outils Rational / WebSphere

StackOverflow https://stackoverflow.com/questions/3782090

Question

Je suis spécifiquement en utilisant WebSphere Integration Developer V7, mais je pourrais aussi utiliserai Rational Software Architect V 7.5.1 (comme je l'ai à la fois).

Contexte: Je suis en train de créer un client JAX-WS pour appeler dans les services de Human Task Manager et Business Flow Manager dans WebSphere Process Server V7, qui sont exposées par JAX-WS. Par défaut, ils ont attaché des ensembles de règles, et les liaisons de fournisseur qui précisent certains paramètres WS-Security (car ceux-ci ne sont pas définis dans le WSDL).

J'ai compris comment le faire fonctionner à l'aide d'un projet Web dynamique. Je suis en mesure de générer le code client JAX-WS du WSDL. Je suis en mesure d'exporter les jeux politiques et les liaisons de fournisseur et client de Process Server et les importer dans mon espace de travail. Je suis en mesure de joindre l'ensemble des politiques et des liaisons clients au service client. Je suis en mesure de mettre en place une page et un servlet pour appeler mon service Web (pour tester le client). Et je suis en mesure de configurer les paramètres de sécurité dans les descripteurs de déploiement et websphere les fichiers de liaison / extension pour le faire fonctionner.

Tout cela est merveilleux, mais en réalité, nous ne voulons pas d'une oreille avec une guerre juste pour exposer le client de services Web pour nos autres applications que nous écrivons. Nous voulons générer un pot de client de service Web et l'emballage avec d'autres applications.

Compte tenu de cette ligne de pensée que je suis en mesure de comprendre comment utiliser un projet régulier Java dans mon IDE et de générer le client de service Web en elle. J'ai aussi été en mesure de fixer la politique de gestion et des liaisons client au client.

Mon problème est maintenant comment je Invoke cela? J'ai créé un projet web dynamique avec ma page et servlet comme avant de tester mon client. Je mis en place mon projet client en tant que dépendance de la bibliothèque Web de sorte qu'il a accès au code client. Je peux même mettre en place les descripteurs de déploiement comme avant de connexion de force et authenication. Le seul problème est maintenant que je ne peux pas comprendre comment transmettre les informations d'identification à mon service Web maintenant qu'il est dans son propre « pot ». Avant d'avoir accès à un menu pour configurer le TokenGenerator et CallbackHandler. Maintenant, je n'ai pas accès à ces menus que le client est pas dans le projet Web dynamique. Alors maintenant, j'ai une « déconnexion » et bien sûr échoue lorsque vous essayez de l'exécuter sur le serveur.

Il doit être une façon de le faire. Je devrais être en mesure de générer un pot de client et de le transmettre ce dont il a besoin. rencontre Toute personne avant?

Était-ce utile?

La solution

Ok. J'ai passé beaucoup de temps à la recherche de cette, la lecture des articles de Redbooks et developerWorks et à frapper ma tête contre mon clavier et je l'ai finalement obtenu quelque part. Pas tout le chemin, mais presque. (Souhait quelques trucs IBM était plus facile à trouver ... mais vous travaillez avec ce que vous donne. Et en toute équité, avec ce que je l'ai lu est logique et est assez puissant.)

Quoi qu'il en soit, voici l'astuce à la fois l'outil Rational et WebSphere: Vous devez créer un projet Java vide premier Ceci est l'une des clés pour faire un client de service Web portable

Alors là, il est à ce jour:

  1. Créer un vide Java dans votre projet IDE. Je préfère utiliser la perspective Java EE soit dans Rational Application Developer / Software Architect ou dans WebSphere Integration Developer.
  2. Importer WSDL (s) et le schéma (s) dans un autre projet générique vide dans votre IDE, pas dans le projet Java nouvellement créé.
  3. Faites un clic droit sur le WSDL principal et choisir de générer un client de service Web.
  4. Une autre clé ici : Assurez-vous que l'assistant qui apparaît que vous modifiez le projet client pour le projet Java que vous avez créé dans une étape. Par défaut, l'assistant tentera de cibler un projet Web dynamique nouvelle ou existante, ce qui est ce que vous voulez.
  5. Assurez-vous que vous sélectionnez JAX-WS en tant que votre mise en œuvre. Assurez-vous de choisir ce que vous voulez que le client soit « portable » et assurez-vous que vous dites l'assistant d'inclure le WSDL dans le client Java Project.
  6. En attendant vous avez tout pour (et l'exécution de votre serveur local), l'outillage rationnel / WebSphere doit maintenant générer le client de service Web JAX-WS dans le projet Java.

Magnifique! Génial! Maintenant, vous avez un projet Java (alias jar) que vous pouvez utiliser pour le rendre portable. Mais comment voulez-vous faire le plaisir d'outillage IBM et de joindre des politiques de sécurité au client?

Eh bien d'abord, je l'ai appris qu'il est vraiment préférable de fixer les règles de sécurité dans la console d'administration de WebSphere Application Server / Enterprise Service Bus / Process Server. Il y a trop de choses à essayer de compte pour la sécurité d'essayer manuellement le code tout, même si IBM vous donne de l'API pour le faire. Croyez-moi. Il est plus facile de définir la sécurité sur le serveur et puis juste attribuer au client.

En tout cas .... afin de permettre au client d'être visible à la console d'administration pour fixer des ensembles de règles et des liaisons clients pour la sécurité JAX-WS, il doit être au niveau « web » (faute d'un meilleur terme) pour qu'il voir le pot en tant que client Web. Cela signifie que la fixation du pot comme un pot utilitaire J2EE au projet EAR ne fonctionnera pas. L'oreille est pas « niveau web » mais « niveau App ». Donc, pour ce faire, vous devez associer le projet Java avec l'AER dans l'écran du module J2EE Dépendances, mais pas comme un pot utilitaire. chèque plutôt que la case qui dit « lib ». Cela signifie qu'il peut être visible / monté dans le répertoire lib d'un projet Web dynamique / guerre (que vous devez aussi faire). Chose étonnante, la console d'administration verra maintenant votre pot client comme un véritable client de service Web JAX-WS! Et maintenant, vous pouvez associer des ensembles de règles et les liaisons de client à lui afin de répondre à vos besoins de sécurité!

Cela peut paraître bizarre au début, mais il ne sorte de sens de faire. Après tout ce que vous faites affaire avec un Web Service et que vous utilisez protocoles web , donc à certains égards, il est logique de placer le client dans le « niveau web » de votre application.

  

EDIT: J'ai sali avec les politiques de sécurité et je l'ai constaté que    ce développeur fonctionne l'article m'a aidé le plus. spécial Pay   attention à la liste 2 ClientTest.java . Malheureusement, vous devez   Code toute la sécurité dans votre client pour l'obtenir pour travailler le plus propre.   Et puis voici une autre Gotcha. IBM vous permettra de créer Nom d'utilisateur   Tokens d'un client qui fonctionne en dehors de WebSphere, mais ils ne   vous permettent de créer de l'LTPA en dehors de WebSphere. Donc, pour tester les   types de jetons, vous devez emballer et déployer votre client localement   testez-le tout.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top