Wie erhalte ich die Anmeldeinformationen übergeben an die JAX-WS-Service-Client mit den damit verbundenen Maßnahmengruppen und Bindungen in Rational / WebSphere Tooling

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

Frage

Ich bin WebSphere Integration Developer V7 speziell, aber ich könnte auch Rational Software Architect V 7.5.1 (wie ich beides) werden.

Kontext: Ich versuche, ein JAX-WS-Client zu erstellen, in den Human Task Manager und Business Flow Manager-Service in WebSphere Process Server V7 zu nennen, die über JAX-WS ausgesetzt sind. Standardmäßig haben sie Richtliniensätze angebracht und Anbieter Bindungen, die einige WS-Security-Einstellungen angeben (da diese nicht in der WSDL definiert sind).

Ich habe herausgefunden, wie es funktioniert mit einem Dynamic Web Project. Ich konnte den JAX-WS-Client-Code aus der WSDL-generieren. Ich in der Lage gewesen, die Politik setzt und Provider und Client-Bindungen von Process Server zu exportieren und in meinen Arbeitsbereich importieren. Ich konnte die Richtlinie festgelegt und Kundenbindung an den Client Service befestigen. Ich in der Lage gewesen, eine Seite und ein Servlet einrichten, um meine Web-Service (zum Testen der Client) aufzurufen. Und ich in der Lage gewesen, die Sicherheitseinstellungen in den Deployment-Deskriptoren einzurichten und WebSphere Bindung / Erweiterungsdateien es funktioniert zu bekommen.

Das ist alles wunderbar, aber in Wirklichkeit, die wir nur das Web-Service-Client zu anderen Anwendungen belichten nicht ein Ohr mit einem Krieg wollen wir schreiben. Wir wollen einen Web-Service-Client jar erzeugen und es mit anderen Anwendungen zu verpacken.

In Anbetracht dieser Gedanken ich in der Lage gewesen, um herauszufinden, wie in meinen IDE ein reguläres Java-Projekt verwenden und das Web-Service-Client hinein erzeugen. Ich habe auch in der Lage gewesen, die Richtlinien festgelegt und Kundenbindung an den Client zu befestigen.

Mein Problem ist nun, wie rufe ich das? Ich habe ein dynamisches Web-Projekt mit meiner Seite und Servlet wie erstellt vor meinem Klienten zu testen. Ich setze mein Client-Projekt als Web-Bibliothek Abhängigkeit auf, so dass es Zugriff auf den Client-Code hat. Ich kann sogar die Deployment-Deskriptoren wie vor Kraft Login und authenication einrichten. Die einzige Problem ist jetzt, dass ich nicht herausfinden kann, wie die Anmeldeinformationen auf meinen Web-Service jetzt passiert, dass es in seiner eigenen „jar“ ist. Zuvor hatte ich Zugang zu einem Menü, um den TokenGenerator und Callbackhandler einzurichten. Nun, ich habe keinen Zugriff auf diese Menüs wie der Client nicht in dem dynamischen Web-Projekt ist. So, jetzt habe ich eine „disconnect“ und es natürlich nicht, wenn man versucht es auf dem Server ausgeführt werden.

Es muss ein Weg, dies zu tun. Ich sollte ein Client jar generieren können und weitergeben, was er braucht. Jede Begegnung dieses vor?

War es hilfreich?

Lösung

Ok. Ich habe eine lange Zeit mit der Erforschung dieses verbracht, redbooks und developer Artikel und hämmert meinen Kopf gegen meine Tastatur zu lesen und ich habe schließlich irgendwo bekommen. Nicht alle der Weg dorthin, aber fast. (Ich wünschte einige IBM Sachen einfacher zu finden war ... aber Sie arbeiten mit dem, was Sie gegeben sind. Und in aller Fairness, mit dem, was ich gelesen habe, macht es Sinn, und ist ziemlich mächtig.)

Wie auch immer, hier ist der Trick, sowohl auf dem Rational und WebSphere Tooling: Sie haben zuerst ein leeres Java-Projekt erstellen Dies ist einer des Schlüssels ist ein portables Web-Service-Client zu machen.

Also hier ist es so weit:

  1. Erstellen Sie ein leeres Java-Projekt in Ihrem IDE. Ich ziehe die Java EE-Perspektive in beide Rational Application Developer / Software Architect oder in WebSphere Integration Developer zu verwenden.
  2. Importieren der WSDL (en) und Schema (s) in einer anderes leeres generisches Projekt in Ihrem IDE, nicht in das neu Java-Projekt erstellt.
  3. Rechtsklick auf der Haupt WSDL und wählen Sie ein Web-Service-Client zu generieren.
  4. Ein weiterer Schlüssel hier : Stellen Sie sicher, dass im Assistenten, die angezeigt wird, dass Sie das Client-Projekt ändern das Java-Projekt sein, das Sie im ersten Schritt erstellt. Standardmäßig versucht der Assistent ein neues oder bestehendes dynamisches Web-Projektes zum Ziel, das nicht das, was Sie wollen.
  5. Stellen Sie sicher, dass Sie JAX-WS als Ihre Implementierung wählen. Stellen Sie sicher, holen Sie, dass Sie der Client als „portable“ wollen und stellen Sie sicher, dass Sie den Assistenten sagen die WSDL im Java-Projekt-Client enthalten.
  6. Bis Sie alles in Ordnung (und die lokale Server ausgeführt wird), Rational / WebSphere Tooling jetzt das JAX-WS Web-Service-Client in das Java-Projekt generieren soll.

Wonderful! Toll! Jetzt haben Sie eine Java-Projekt (aka jar), dass Sie es tragbar machen verwenden können. Aber wie wollen Sie das IBM Tooling glücklich machen und befestigen Sicherheitsrichtlinien für die Kunden?

Nun zuerst, ich habe gelernt, dass es wirklich am besten ist es, die Sicherheitsrichtlinien in der Administrationskonsole von WebSphere Application Server / Enterprise Service Bus / Process Server zu befestigen. Es gibt zu viele Dinge zu Konto, um zu versuchen, um mit Sicherheit Code manuell zu versuchen, alles, auch wenn IBM gibt Ihnen die API, es zu tun. Vertrauen Sie mir. Es ist einfacher, die Sicherheit auf dem Server zu definieren und dann weisen Sie nur an den Client.

Wie auch immer ...., um den Kunden zu sein, sichtbar für die Admin-Konsole zur Befestigung Maßnahmengruppen und Client-Anbindungen für JAX-WS Sicherheit zu ermöglichen, hat es auf der „Web-Ebene“ sein (in Ermangelung eines besseren Begriff), um für sie das Glas als Web-Client zu sehen. Dies bedeutet, dass das Glas als J2EE-Utility-Jar an das EAR-Projekt Befestigung wird nicht funktionieren. Die EAR ist NICHT „Web-Ebene“, sondern „App-Ebene“. Also, dies zu tun, müssen Sie das Java-Projekt mit der EAR in dem J2EE-Modulabhängigkeiten Bildschirm verknüpfen, aber nicht als Utility-Jar. Stattdessen markieren Sie das Kästchen, das „lib“, sagt. Dies bedeutet, es sichtbar sein kann / Eingebaut im lib eines dynamischen Web-Projekt / Krieg (was man auch tun müssen). Erstaunlicherweise wird die Admin-Konsole jetzt Ihre Client jar als echtes JAX-WS Web-Service-Client sehen! Und jetzt können Sie Maßnahmengruppen und Client-Bindungen, um es in Ordnung assoziieren Ihre Sicherheitsanforderungen gerecht zu werden!

Dies könnte scheinen auf den ersten seltsam, aber es tut Art von Sinn. Nachdem alles, was Sie mit einem Web beschäftigen Service und Sie sind mit Web-Protokolle , so in gewisser Weise macht es Sinn, den Client in der „ Web-Ebene zu platzieren “Ihre Anwendung.

EDIT: Ich habe mit den Sicherheitsrichtlinien durcheinander und ich habe festgestellt, dass dieser Entwickler arbeitet Artikel mir am meisten geholfen. Pay Sonder die Aufmerksamkeit auf die Listing 2 ClientTest.java . Leider haben Sie Code alle die Sicherheit in Ihrem Client zu bekommen es die sauberste zu arbeiten. Und dann ist hier eine andere gotcha. IBM ermöglicht es Ihnen, Benutzername zu erstellen Tokens von einem Client, der außerhalb von WebSphere ausgeführt wird, aber sie werden nicht erlauben Sie LTPA Token außerhalb von WebSphere zu erstellen. So testen diejenigen Arten von Token, müssen Sie Ihre Kunden vor Ort verpacken und bereitstellen zu testen sie alle.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top