Ich habe einen UIPageViewController, der einen UIViewController lädt, der wiederum ein WKWebView enthält. Die App lässt mich wischen unbegrenzt. Nach etwa 30 oder so swipes, die App stirbt ohne Crash-Log. Der Speicher war konstant bei etwa 15 MB, so dass es nicht zu einem Speicher Problem zu sein scheinen. Ich habe jedoch, finden Sie diese im Geräte-Log: Dies war auf iOS 9.0.1 auf einem iPad mini 1. Das einzige, was ich darüber gefunden habe, ist: prod. lists. apple/archives/cocoa-dev/2015/Jul /msg00461.html (Im nicht mit einem internen Web-Server, wenn). Irgendwelche Gedanken, was dazu führen kann, dass dies oder wie zu beheben itCreate WS-Trust-Message Sie können das Enterprise Gateway konfigurieren, um verschiedene Arten von WS-Trust-Nachrichten zu erstellen. Das Enterprise Gateway kann beim Generieren von RequestSecurityToken (RSTR) und RequestSecurityTokenResponseCollection (RSTRC) - Nachrichten als WS-Trust-Client bei der Generierung einer RequestSecurityToken (RST) - Nachricht, aber auch als WS-Trust-Dienst oder Security Token Service (STS) fungieren . Ein Token-Requestor erzeugt eine RST-Nachricht und sendet sie an den STS, der das erforderliche Token erzeugt und in einer RSTR-Nachricht zurückgibt. Wenn mehrere Token erforderlich sind, kann der Anforderer mehrere RST-Meldungen in einer einzelnen RequestSecurityTokenCollection (RSTC) - Anforderung senden. Der STS erzeugt für jede RST eine RSTR in der RSTC-Meldung und gibt diese im Batchmodus in einer RSTRC-Nachricht zurück. Weitere Informationen zu den verschiedenen Typen von WS-Trust-Meldungen sowie deren Semantik und Format finden Sie in der WS-Trust-Spezifikation. Erstellen des WS-Trust-Nachrichtentyps Der WS-Trust-Message-Filter erstellen kann die folgenden Typen von WS-Trust-Nachrichten erstellen. Wählen Sie den entsprechenden Nachrichtentyp entsprechend Ihren Anforderungen aus: RST: RequestSecurityToken Die RST-Nachricht enthält eine Anforderung für ein einzelnes Token, das von der STS ausgestellt wird. RSTR: RequestSecurityTokenResponse Die RSTR-Nachricht wird als Antwort auf eine RST-Nachricht von einem Token-Requestor gesendet. Sie enthält das vom STS ausgestellte Token. RSTRC: RequestSecurityTokenResponseCollection Die RSTRC-Nachricht enthält für jedes RST, das in einer RSTC-Nachricht empfangen wurde, eine RSTR (die ein einziges ausgestellten Token enthält). Meldungserstellung Die Einstellungen auf dieser Registerkarte geben die Merkmale der WS-Trust-Meldung an. Folgende Felder stehen zur Verfügung: Token-Typ einfügen: Wählen Sie den gewünschten Token-Typ aus der Dropdown-Liste aus. Der hier gewählte Typ des Tokens wird in der Antwort vom STS zurückgegeben. Standardmäßig wird der Sicherheitstoken-Kontexttyp verwendet, der durch die URI schemas. xmlsoap. org/ws/2005/02/sc/sct identifiziert wird. Binärer Exchange: Sie können einen ltBinaryExchangegt verwenden, wenn Sie einen sicheren Kanal verhandeln, der die Übertragung von binären Blobs als Teil eines anderen Sicherheitsverhandlungsprotokolls (z. B. SPNEGO) beinhaltet. Der Inhalt des Blob ist immer Base64-codiert, um eine sichere Übertragung zu gewährleisten. Wählen Sie die Option Binäraustausch, wenn Sie ein Verhandlungs-Protokoll für den Austausch von Schlüsseln wie SPNEGO verwenden möchten. Der im Feld Werttyp ausgewählte URI identifiziert den Typ der Verhandlung, in der der Blob verwendet wird. Der URI wird im Attribut ValueType des Elements ltBinaryExchangegt platziert. Entropie: Der Client kann sein eigenes Schlüsselmaterial (Entropie) bereitstellen, das der Token-Emittent verwenden kann, wenn er das Token erzeugt. Der Emittent kann diese Entropie als Schlüssel selbst verwenden, er kann aus dieser Entropie einen weiteren Schlüssel ableiten, oder er kann die Entropie des Kunden insgesamt für die Erzeugung einer eigenen Entropie ignorieren. Wählen Sie diese Option, um eine Entropie zu erzeugen, die im ltwst: entropygt Element des ltwst: RequestSecurityTokengt Blocks enthalten ist. Schlüsselgröße eingeben: Der Client kann die in einer ltRequestSecurityTokengt-Anforderung erforderliche Schlüsselgröße (in Anzahl der Bits) anfordern. Der WS-Trust-Token-Emittent muss jedoch nicht die angeforderte Schlüsselgröße verwenden. Sie dient lediglich als Hinweis auf die erforderliche Sicherheit. Die Standardanforderungsschlüsselgröße beträgt 256 Bits. Lebensdauer einfügen: Wählen Sie diese Option, um ein ltLifetimegt-Element in die WS-Trust-Nachricht einzufügen. Verwenden Sie die entsprechenden Felder, um anzugeben, wann die Nachricht abläuft. Die Laufzeit der WS-Trust-Nachricht wird in Form von ltCreatedgt - und ltExpiresgt-Elementen ausgedrückt. Lifetime Format: Der angegebene Datums - / Zeitmusterstring bestimmt das Format der Elemente ltCreatedgt und ltExpiresgt. Das Standardformat ist yyyy-MM-ddTHH: mm: ss. SSSZ. Die bei Bedarf geändert werden können. Weitere Informationen zur Verwendung dieses Formats finden Sie im Javadoc für die Java-Klasse java. text. SimpleDateFormat in der Java-Plattform, Standard Edition 6-API-Spezifikation. RequestedTokenCancelled einfügen: Wählen Sie diese Option, um ein Element ltRequestedTokenCancelledgt in die generierte WS-Trust-Nachricht einzufügen. RST-Erstellung Die folgenden Konfigurationsfelder geben die Art der Erstellung einer WS-Trust RST-Meldung an: Anforderungstyp einfügen: Sie können zwei Arten von RST-Meldungen erstellen. Wählen Sie einen der folgenden Anforderungstypen aus der Dropdown-Liste aus: Problem: Diese Art von RST-Nachricht wird verwendet, um die STS anzufordern, ein Token für den Anforderer auszugeben. Abbrechen: Mit dieser RST-Meldung wird ein bestimmtes Token abgebrochen. Schlüsseltyp einfügen: Wählen Sie diese Option, um den Schlüsseltyp in die RST WS-Trust-Nachricht einzufügen. Rechenschlüssel-Algorithmus einfügen: Wählen Sie diese Option, um den Berechneten Schlüsselalgorithmus in die Nachricht einzufügen. Endpunktreferenz einfügen: Wählen Sie diese Option und geben Sie einen geeigneten Endpunkt ein, wenn Sie eine Endpunktreferenz in die RST-Nachricht aufnehmen möchten. RSTR-Erstellung Die folgenden Konfigurationsfelder legen fest, wie eine WS-Trust-RSTR-Nachricht erstellt wird: Insert RequestedProofToken: Aktivieren Sie dieses Kontrollkästchen, um ein ltRequestedProofTokengt-Element in die generierte WS-Trust-Nachricht einzufügen. Der Typ dieses Tokens kann entweder computedKey oder encryptedKey mit der zugehörigen Dropdown-Liste festgelegt werden. Insert Authenticator: Wählen Sie diese Option aus, um einen Authentifizierer in die RSTR-Nachricht einzufügen. Erweiterte Einstellungen In diesem Abschnitt können Sie bestimmte erweiterte Aspekte der SOAP-Nachricht konfigurieren, die an den WS-Trust Service gesendet wird. WS-Trust-Namespace: Geben Sie den WS-Trust-Namensraum ein, um alle WS-Trust-Elemente in diesem Feld zu binden. Der Standardnamespace ist schemas. xmlsoap. org/ws/2005/02/trust. WS-Adressierungs-Namespace: Wählen Sie die WS-Adressierungs-Namespace-Version, die in allen erstellten WS-Trust-Nachrichten verwendet werden soll. WS-Policy-Namespace: Wählen Sie aus der Dropdown-Liste den entsprechenden WS-Policy-Namespace aus. Die ausgewählte ausgewählte Version kann sich auf die Sortierung von Token auswirken, die in den WS-Security-Header der SOAP-Nachricht eingefügt werden. SOAP-Version: Wählen Sie die SOAP-Version aus, die beim Erstellen der WS-Trust-Nachricht verwendet werden soll. SOAP-Methode überschreiben: Wählen Sie diese Option, wenn das WS-Trust-Token die SOAP-Methode in der Anforderung überschreiben soll. In diesem Fall wird das Token als direktes Kind des SOAP-Body-Elements angezeigt. Sie sollten diese Option verwenden, wenn Sie den Inhalt des SOAP-Headers, falls vorhanden, beibehalten möchten. SOAP-Hüllkurve überschreiben: Wählen Sie diese Option, wenn die generierte WS-Trust-Nachricht den gesamten Inhalt der Nachricht bilden soll. Mit anderen Worten ersetzt die generierte WS-Trust-Nachricht die ursprüngliche SOAP-Anforderung. Content-Type: Geben Sie den HTTP-Content-Typ der WS-Trust-Nachricht an. Für Microsoft Windows Communication Foundation (WCF) sollten Sie beispielsweise application / soapxml verwenden. Generate Authenticator Using: Sie können den Authentifizierer mithilfe der Generated or Consumed-Nachricht überprüfen. In beiden Fällen sollten Sie aus den verfügbaren Optionen den entsprechenden Typ der WS-Trust-Nachricht auswählen. Implementierung eines Webdienstanbieters und - anforderers mithilfe von nativen CICS-APIs und IBM Rational Developer für System z Einführung IBM174 Rational174 Developer für System z8482 integriert das IBM174 CICS174-Web Services Assistant (DFHWS2LS), um Ihre Entwicklung von CICS-Anwendungen auf der Grundlage bestehender Web Service-Beschreibungen (WSDL) zu vereinfachen. Sie können zwei Arten von neuen Anwendungen entwickeln: entweder einen Webdienstanbieter oder einen Webdienstanforderer. Dieser Artikel zeigt Ihnen, wie Sie mit dem Rational Developer for System z-Tool sowohl einen CICS-Webdienstanbieter als auch einen Anfrager entwickeln können. Es ist keine spezielle Laufzeit erforderlich, da sowohl die Implementierungen von Provider als auch Requester im CICS selbst mit nativen Web-Service-APIs ausgeführt werden. Rational Developer for System z verbessert die Benutzerfreundlichkeit von DFHWS2LS, indem eine grafische Oberfläche und eine Vorlage für die Generierung von Provider - und Requester-Programmen bereitgestellt werden. Die Vorlagenprogramme helfen Ihnen, die in CICS TS Version 3.1 enthaltene Unterstützung für Kanäle und Container zu verwenden, die für die Interaktion mit der CICS-Webdienste-Pipeline erforderlich ist. Vorhandener Taschenrechner Webdienstbeschreibung Dieser Artikel enthält ein WSDL-Dokument, das einen Taschenrechner-Webdienst beschreibt. Der Dienst hat mehrere Operationen und stellt einfache Funktionen wie Addition, Multiplikation und Division zur Verfügung, wie in Abbildung 1 dargestellt. Die XML-Schemas im WSDL-Dokument, die die Request - und Response-Meldungen beschreiben, sind nicht ausführlich, beinhalten aber die unbounded Array-Konstrukt. Die Calculator. wsdl-Datei wird in Rational Developer for System z verwendet, um die Sprachstrukturen und Vorlagenprogramme zu generieren, die die Grundlage für die Implementierung bilden. CICS-Webdienstanwendungen, die mit dem Web Services Assistant implementiert werden, kommunizieren über Sprachstrukturen mit SOAP als dem zugrunde liegenden Transport. Abbildung 1. Calculator-Webdienstoperationen und - nachrichten Version von Rational Developer für System z in diesem Beispiel Rational Developer for System z Version 7.1 enthält die Perspektive Enterprise Service Tools, die eine projektbasierte Entwicklung für Webdienste bereitstellt. Es gibt viele Vorteile für diese ampquotsingle-serviceampquot-Projekte, von denen eines ist, dass die Web-Service-Assistenten zuvor bestimmte Erzeugungsoptionen erinnern. Dadurch können Sie Artefakte regenerieren oder iterativ entwickeln. Weitere Informationen zu dieser Funktion finden Sie in der Produkthilfe. An dieser Stelle sollten Sie in die Ansicht Enterprise Services Tools wechseln, wie in Abbildung 2 dargestellt. Abbildung 2. Switch-Perspektive Generieren von Artefakten für Webdienstanbieter mit Rational Developer for System z Dieser Artikel enthält eine ZIP-Datei mit dem Namen WebServicesforCICSTopDownSample Suchen Sie den Taschenrechner. Wsdl-Datei in dem extrahierten Satz von Dateien und aktualisieren Sie den Standort-URI, um mit dem Speicherort einer laufenden CICS TS-Region (V3.1 oder höher) übereinzustimmen. Aktualisieren Sie den Standort-URI in der CalculatorBinding gemäß diesem Muster: your. system. ip: cicstcpipserviceport / cics / services / calculator Es ist nun möglich, mit dem Generieren der Serviceproviderartefakte fortzufahren. Öffnen Sie im Rational Developer for System z die Ansicht Enterprise Service Tools. Klicken Sie mit der rechten Maustaste im EST Project Explorer, und wählen Sie New gt Web Services für CICS-Projekt aus, wie in Abbildung 3 dargestellt. Abbildung 3. Erstellen Sie ein neues Projekt Geben Sie dem Projekt einen geeigneten Namen (In diesem Beispiel Calculator), wie in Abbildung 4 gezeigt. Abbildung 4. Name des Projekts Geben Sie auf der nächsten Seite die Datei Calculator. wsdl an, die in der ZIP-Datei enthalten war, und klicken Sie auf Fertig stellen. Wie in Abbildung 5 gezeigt. Abbildung 5. Festlegung der zu importierenden Datei Ein neues Projekt sollte im EST-Projekt-Explorer mit der WSDL-Datei im Verzeichnis / Source angezeigt werden. Abbildung 6. Die Datei Calculator. wsdl Einmal dort Sind Quelldateien in einem EST Project Single-Service-Projekt, können Sie Web-Service-Artefakte generieren. Klicken Sie dazu mit der rechten Maustaste auf das Calculator-Projekt, und wählen Sie Web Services für CICS-Ressourcen erstellen. Wie in Abbildung 7 dargestellt. Abbildung 7. Artefakte generieren Legen Sie Optionen im Launchpad-Dialog fest: Akzeptieren Sie das Standardszenario für die Erstellung neuer Service-Implementierungen (top-down) und den Konvertierungstyp Interpretive XML Conversion, wie in Abbildung 8 dargestellt. Startoptionen festlegen Legen Sie auf der Registerkarte Anwendungseigenschaften des DFHWS2LS-Assistenten die folgenden Optionen fest, wie in Abbildung 9 gezeigt. Anwendungstyp. Dienstanbieter-Anwendungssprache. COBOL Programmname. CALCPROV Programmschnittstelle. CHANNEL Behältername. CALCPROV Die Optionen auf dieser Registerkarte geben die Details der Anwendung an, die die Web-Service-Beschreibung implementiert, entweder als Provider oder als Requester des Dienstes (in diesem Beispiel Service Provider hier). Abbildung 9. Eigenschaften der Anwendungseigenschaften Geben Sie auf der Registerkarte Diensteigenschaften des DFHWS2LS-Assistenten die folgenden Optionen an, wie in Abbildung 10: Bindungselement dargestellt. CalculatorBinding Lokaler URI. / Cics / services / calculator Die Optionen auf dieser Registerkarte beschäftigen sich mit der Bindung im WSDL-Dokument zu implementieren. Es gibt nur eine SOAP-Bindung in der Calculator. wsdl-Datei. Geben Sie einen URI an, unter dem Ihr Webdienst für Clients sichtbar ist, da Sie einen Anbieter implementieren. Bei der angegebenen URI befindet sich Ihr Dienst unter: your. system. ip: cicstcpipserviceport / cics / services / calculator Abbildung 10. Eigenschaften von Diensteigenschaften Geben Sie auf der Registerkarte Strukturen des DFHWS2LS-Assistenten die folgenden Optionen an (siehe Abbildung 11). Anfragedatei-Präfix. CALCI Response-Datei-Präfix. CALCO Diese Optionen bestimmen die Dateinamen der Sprachenstrukturen, die aus den XML-Schemata in der WSDL-Datei generiert wurden. Abbildung 11. Strukturoptionen Geben Sie auf der Registerkarte WSBind des DFHWS2LS-Assistenten die folgenden Optionen an, wie in Abbildung 12 gezeigt. WSBIND-Dateiname. CalculatorProvider Name der Protokolldatei. CalculatorProvider Diese Optionen bestimmen die Dateinamen der WSBind-Datei und der Log-Datei. Die WSBind-Datei muss im Pickup-Verzeichnis eines Provider-Modus PIPELINE (nach Abschluss des Assistenten) platziert werden. Die Protokolldatei enthält ausführliche Informationen über die interne Verarbeitung des Web Services Assistant. Abbildung 12. WSBind-Optionen Geben Sie auf der Registerkarte Vorlage des DFHWS2LS-Assistenten die folgende Option an, wie in Abbildung 13 gezeigt. Name der Vorlagendatei. CALCPROV Auf dieser Registerkarte können Sie den Dateinamen der generierten Anwendungsvorlage angeben. Die Vorlage dient als Ausgangspunkt für die Entwicklung der neuen CICS-Webdienstanbieteranwendung. Es enthält Beispiel-Logik, um ein Programmierungsmuster für die Implementierung eines Anbieters eines Multi-Operations-Webdienstes vorzuschlagen. Abbildung 13. Vorlagenoptionen Klicken Sie auf Fertig stellen, um den Assistenten abzuschließen. Das Calculator-Projekt wird mit mehreren Artefakten belegt, wie in Abbildung 14 dargestellt. Die Artefakte im Ordner "Targets" sind die generierten Web-Service-Artefakte, mit denen der Webdienstanbieter implementiert werden kann. In diesem Beispiel wurden sechs Kopien erstellt. Die mit ampquotIampquot versehenen Copybooks enthalten die Sprachstrukturen für die Anforderungsdaten der drei Operationen (AddOperation, MultiplyOperation und DivideOperation). Die mit ampquotOampquot ergänzten enthalten die jeweiligen Sprachstrukturen für die Antwortdaten. CALCPROV. cbl ist das generierte Web Service Provider Template Programm. Im nächsten Abschnitt geht es darum, wie man seine Logik im nächsten Abschnitt vervollständigt. Abbildung 14. Das belegte Berechnungsprojekt Implementieren eines Webdienstanbieters mithilfe der Vorlage Das Providervorlagenprogramm CALCPROV. cbl wird als vollständige COBOL-Anwendung mit Bereichen erstellt, in denen der Benutzer die Geschäftslogik ausfüllen soll. Wenn XML-Schemas für eine gegebene Operation (wie AddOperation) ein ungebundenes Array enthalten, ist eine zusätzliche Codierung erforderlich, um auf die Inhalte dieser Arrays zuzugreifen, da sie in sekundären Containern gespeichert sind. Der Prozess der Arbeit mit sekundären Container sollte klar werden, wie die Codierung entfaltet. Das Dienstanbieterprogramm beginnt mit einigen Informationen, die es als CICS-Webdienstanbieterimplementierung identifizieren, wie in Listing 1 gezeigt. Aufzählung 1. Identifikationsbereich Aus Gründen, die bald offensichtlich werden, deklarieren Sie einige Arbeitsvariablen im Bereich der lokalen Speicherung Programm, wie in Listing 2 gezeigt. Listing 2. Deklarieren von Arbeitsvariablen Die Kommentare in den generierten Copybooks für die AddOperation (CALCI01.cpy) und MultiplyOperation (CALCO02.cpy) zeigen an, dass das Datenelement, das die Operanden enthält, die Summe und das Produkt zu finden Befinden sich in einem Sekundärbehälter. Im Abschnitt Verknüpfung definieren Sie etwas, das für den Zugriff auf die einzelnen Vorkommen dieser Datenelemente im Container zulässig ist. Es gibt viele Möglichkeiten, dies zu erreichen, aber Sie werden die einfachste (nicht unbedingt effiziente) Technik verwenden. Dieses Overlay ermöglicht das Lesen von bis zu 512 Operanden aus der Anforderungsnachricht, wie in Listing 3. Listing 3. Deklarieren einer Overlay Im Template-Programm gibt es logische Divisionen für die Verarbeitung der eingehenden Daten (Requests) und das Senden der ausgehenden Daten ( Antworten), basierend auf der Operation, die vom Client aufgerufen wird. Für die AddOperation, deren logische Division beginnt auf Zeile 139, füllen Sie die Logik für die Berechnung der SUM. Listing 4. Logik zur Berechnung der Summe Als nächstes verwenden Sie eine CICS-API, um einen Zeiger auf den Speicher zu erhalten, der als Vorkommen des 01-Level-Datenelements CALCI01-additionXoperand für die AddOperation-Sprachstruktur in CALCI01.cpy organisiert ist, wie in Listing gezeigt 5. Listing 5. Holen Sie sich Container Verwenden Sie die Linkage-Section, die Sie zuvor deklariert haben, legen Sie die Adressierbarkeit für jedes Vorkommen des 01-Level-Datenelements CALCI01-additionXoperand fest, indem Sie den Linkage-Abschnitt auf die Adresse des Containerspeichers setzen (siehe Listing 6) Listing 6. Set-Adresse Sie können nun durch jedes Vorkommen im Container iterieren, wie in Listing 7 gezeigt. Sie binden die Schleife mit der additionXoperand-num-Variable, die die Anzahl der Vorkommnisse anzeigt, die im Container zu finden sind, dessen Name angegeben wird ZusätzlichXoperand-cont. Listing 7. Iterieren durch Array-Vorkommen Alle Operationen im Calculator-Webdienst sind bidirektional (Request-Response). Um die Bereitstellung der AddOperation-Operation abzuschließen, müssen Sie daher Antwortdaten senden. Der Abschnitt der Vorlage dazu beginnt mit dem Kommentar ampquotPopulate Response Language Structureampquot, wie in Listing 8 gezeigt. Listing 8. Antwortdaten senden Die Sprachstruktur in CALCO01.cpy repräsentiert die Antwortdaten für die AddOperation. Verschieben Sie nun einfach das Ergebnis des SUM, das während der Verarbeitung der Anforderungsdaten berechnet wurde, in das Feld additionXresult der Antwortsprachenstruktur. Das Senden der Antwort ist nicht abgeschlossen, bis Sie einen Container mit der Antwortsprachenstruktur in den Webdienst PIPELINE setzen, wie in Listing 9 gezeigt. Listing 9. Additionsresultat Angenommen, die Antwortsprachenstruktur ist in diesem Beispiel einfach Müssen keine zusätzlichen Container in der PIPELINE für Elemente mit variabler oder unbegrenzter Länge eingesetzt werden. Die automatisch generierte PUT der Antwortsprachenstruktur ist ausreichend, und sie muss nicht aktualisiert werden (Listing 10). Listing 10. Antwortsprachenstruktur Die Methode, mit der Sie den Code für die Operationen MultiplyOperation und DivideOperation abschließen, ähnelt der AddOperation, außer dass die DivideOperation nicht mit unbegrenzten Arrays umgehen muss. Der vervollständigte Code für den Webdienstanbieter ist in der Datei "WebServicesforCICSTopDownSample. zip" enthalten. Um die Projekterstellungs - und Generierungsschritte zu überspringen, können Sie die Projekttauschdatei CalculatorProj. zip importieren, die in der. zip-Datei enthalten ist. Testen des Webdienstanbieters Nachdem die folgenden Schritte durchgeführt wurden, können Sie den neuen Webdienst mithilfe des Rational Developer for System z-Webdienste-Explorers (oder anderer Mittel) testen: Kopieren Sie die Dateien CALCPROV. cbl, CALCI. cpy und CALCO. cpy Dateien an das MVS-System. Kompilieren und verknüpfen Sie die CALCPROV. cbl-Webdienstanbieteranwendung in einem Lastdatensatz innerhalb der DFHRPL-Verkettung von CICS Definieren Sie eine PROGRAM-Ressource in CICS, die als CALCPROV bezeichnet wird, und installieren Sie sie. Kopieren Sie die CalculatorProvider. wsbind-Datei in ein CICS-Provider-Modus-PIPELINE-Pickup-Verzeichnis. Wenn Sie ftp verwenden, stellen Sie sicher, dass die Datei im Binärmodus übertragen wird. Legen Sie einen Scan des Provider-Modus PIPELINE an, um den Webdienst zu installieren: CEMT PERFORM PIPELINE (PROVPIPE) SCAN Stellen Sie sicher, dass der Webservice ampquotinserviceampquot ist, indem Sie CEMT INQUIRE WEBSERVICE () aussuchen und CalculatorProvider suchen. Führen Sie die folgenden Schritte aus, um den Webdienst mithilfe des Webdienst-Explorers zu testen. Klicken Sie mit der rechten Maustaste auf die Calculator. wsdl-Datei im Verzeichnis / source des Calculator-Projekts in Rational Developer for System z und wählen Sie Web Services gt Test mit Web Services Explorer. Wie in Abbildung 15 gezeigt. Abbildung 15. Starten des Tests Wählen Sie eine zu testende Operation in der angezeigten Baumansicht links aus, und ein entsprechendes Eingabeformular wird auf der rechten Seite angezeigt (siehe Abbildung 16). Stellen Sie sicher, dass der vollständige URI in Repräsentiert die WSDL-Datei den physischen Speicherort des CICS-Systems, in dem der Webdienst ausgeführt wird. Abbildung 16. Auswählen einer Operation Wählen Sie eine zu testende Operation in der angezeigten Baumansicht links aus, und ein entsprechendes Eingabeformular wird auf der rechten Seite angezeigt (siehe Abbildung 16). Stellen Sie sicher, dass der vollständige URI in der WSDL-Datei den physikalischen Inhalt darstellt Standort des CICS-Systems, in dem der Webdienst ausgeführt wird. Generieren von Web-Service-Requester-Artefakten mit Rational Developer für System z Dieser Artikel enthält eine Datei mit dem Namen WebServicesforCICSTopDownSample. zip. Bitte entpacken Sie diese Datei auf das Laufwerk C:, bevor Sie die Schritte in diesem Abschnitt ausführen (falls noch nicht geschehen). Um das Beispiel in diesem Abschnitt ausführen zu können, müssen Sie die in den vorhergehenden Abschnitten beschriebene Implementierung des Calculator-Dienstanbieters abgeschlossen haben. Wenn die Calculator. wsdl-Datei in dem extrahierten Satz noch nicht aktualisiert wurde, ist es wichtig, dies jetzt zu tun. Aktualisieren Sie den Standort-URI in der CalculatorBinding gemäß diesem Muster: your. system. ip: cicstcpipserviceport / cics / services / calculator. Es ist nun möglich, die Service-Requester-Artefakte zu generieren, indem Sie diese Schritte ausführen. Dort, wo es keine Zahl gibt, liegt es daran, dass die Schritte die gleichen sind wie in den Artefakten zum Generieren von Webdienstanbietern unter Verwendung von Rational Developer for System z. Öffnen Sie in Rational Developer for System z die Ansicht Enterprise Service Tools. Klicken Sie mit der rechten Maustaste in den EST-Projekt-Explorer und wählen Sie New gt Web Services für CICS-Projekt. Geben Sie dem Projekt einen geeigneten Namen (in diesem Beispiel Calculatorrequester), wie in Abbildung 17 gezeigt. Abbildung 17. Wählen Sie einen Projektnamen Geben Sie auf der nächsten Seite die Calculator. wsdl-Datei an, die in der. zip-Datei enthalten war, und beenden Sie die neue Datei Projekt-Assistenten. Es ist sehr wichtig, dass der Standort-URI in der WSDL-Datei zu diesem Zeitpunkt korrekt ist, da Sie es nicht zulassen, ihn im Assistenten zu überschreiben. Ein neues Projekt sollte im EST-Projekt-Explorer mit der im Quellverzeichnis befindlichen WSDL-Datei (siehe Abbildung 18) angezeigt werden. Abbildung 18. Neues Projekt Klicken Sie mit der rechten Maustaste auf das Projekt Calculatorrequester und wählen Sie Web Services für CICS-Ressourcen erstellen. Geben Sie Optionen auf dem Launchpad an: Übernehmen Sie das Standardszenario für die Erstellung neuer Dienstimplementierungen (top-down) und den Conversion-Typ der Interpretive XML-Konvertierung. Geben Sie auf der Registerkarte Anwendungseigenschaften des DFHWS2LS-Assistenten die folgenden Optionen an (siehe Abbildung 19). Service Requester Bewerbungssprache. COBOL Programmname. CALCRQST Abbildung 19. Eigenschaften der Anwendungseigenschaften Geben Sie auf der Registerkarte Diensteigenschaften des DFHWS2LS-Assistenten die folgende Option an, wie in Abbildung 20 gezeigt. Bindungselement. CalculatorBinding Abbildung 20. Eigenschaften von Dienstmerkmalen Geben Sie auf der Registerkarte Strukturen des DFHWS2LS-Assistenten die folgenden Optionen an, wie in Abbildung 21 dargestellt. Anfragedatei-Präfix. RCALCI Response-Datei-Präfix. RCALCO Diese Optionen bestimmen die Dateinamen der generierten Sprachstruktur-Copybooks. Beachten Sie, dass die Copybooks unterschiedliche Dateinamen haben als die im Webdienstanbieter im vorherigen Abschnitt. Dies geschieht nicht automatisch, aber Sie sollten dies für Klarheit tun. Abbildung 21. Strukturoptionen Geben Sie auf der Registerkarte WSBind des DFHWS2LS-Assistenten die folgenden Optionen an, wie in Abbildung 22 gezeigt. WSBIND-Dateiname. Calculatorrequester Name der Protokolldatei. Calculatorrequester Diese Optionen bestimmen die Dateinamen der WSBind-Datei und der Log-Datei. Sie müssen die WSBind-Datei im Pickup-Verzeichnis eines Requester-Modus PIPELINE (nach Abschluss des Assistenten) platzieren. Die Protokolldatei enthält ausführliche Informationen über die interne Verarbeitung des Web Services Assistant. Abbildung 22. WSBind-Optionen Geben Sie auf der Registerkarte Vorlage des DFHWS2LS-Assistenten die folgende Option an, wie in Abbildung 23 gezeigt. Name der Vorlagendatei. CALCRQST Auf dieser Registerkarte können Sie den Dateinamen der generierten Anwendungsvorlage angeben. Die Vorlage dient als Ausgangspunkt für die Entwicklung der neuen CICS-Webdienstanforderungsanwendung. Es enthält Beispiel-Logik zum Aufrufen der ersten Operation auf dem Remote-Webdienst. Abbildung 23. Template-Optionen Das Projekt Calculatorrequester wird mit mehreren Artefakten bestückt. Die Artefakte im Ordner "Targets" sind die generierten Web-Service-Artefakte, die die Grundlage für die Implementierung des Web-Service-Anforderers bilden. In diesem Beispiel wurden sechs Kopien erstellt, wie in Abbildung 24 dargestellt. Die mit ampquotIampquot versehenen Kopierbücher enthalten die Sprachstrukturen für die Anforderungsdaten der drei Operationen (addOperation, multiplyOperation und divideOperation). Die mit ampquotOampquot ergänzten enthalten die jeweiligen Sprachstrukturen für die Antwortdaten. CALCRQST. cbl ist das generierte Template-Web Service Requester Template Programm. Im nächsten Abschnitt geht es darum, wie man seine Logik vervollständigt. Abbildung 24. Populiertes Projekt Implementieren eines Web-Service-Requests mithilfe der Vorlage Das Requester-Template-Programm CALCRQST. cbl wird als vollständige COBOL-Anwendung mit Bereichen erstellt, in denen der Benutzer die Geschäftslogik ausfüllen soll. In dem Fall, in dem die XML-Schemas für eine gegebene Operation (wie AddOperation) ein ungebundenes Array enthalten, ist eine zusätzliche Codierung erforderlich, um den Inhalt dieser Arrays auszufüllen, da sie in sekundären Containern gespeichert werden müssen. Sie werden mehr über die sekundären Container zu verstehen, wie die Codierung entfaltet. Die folgenden Code-Snippets werden aus der CALCRQST. cbl-Datei entnommen, die mit diesem Dokument bereitgestellt wird. Das Programm beginnt mit einigen Informationen, die es als eine CICS-Web-Service-Requester-Implementierung identifiziert. Auch hier zeigt die Logik dieses Programms den Aufruf der ersten Operation auf dem Remote-Webdienst. In diesem Beispiel werden Sie die AddOperation aufrufen, wie in Listing 11 gezeigt. Listing 11. Aufruf von AddOperation Der Dienstanforderer beginnt mit einem ausgehenden Aufruf, im Gegensatz zum Auffordern einer Anfrage (wie im Providerbeispiel). Für AddOperation, schauen Sie in RCALCI01.cpy, wo es wird erklärt, dass die zu summierenden Operanden in einem Container platziert werden müssen, dessen Name wiederum inXoperand-cont platziert werden soll. Ein Container wird mit dem CICS PUT API erstellt. Normalerweise ist ein Container PUT aus einem Speicherbereich im Programm. Daher deklarieren Sie einen Bereich (nicht im Verknüpfungsabschnitt), der als Vorkommen von RCALCI01-additionXoperand organisiert ist, so dass er verwendet werden kann, um ein Array von Operanden zu platzieren, wie in Listing 12 gezeigt. Listing 12. Deklarieren einer Datenstruktur Wenn ein Web Service-Requester oder Provider in CICS installiert ist, wird eine WEBSERVICE-Ressource erstellt. Geben Sie den Namen der WEBSERVICE-Ressource für den Anforderer (nicht den Provider) an, um dem CICS anzuzeigen, den der Webdienst aufrufen soll, wie in Listing 13 gezeigt. Wählen Sie außerdem den ersten Vorgang aus. Die beiden Empfangsfelder im folgenden Code-Snippet werden mit der API, EXEC CICS INVOKE WEBSERVICE, verwendet. Listing 13. Geben Sie den Webdienst an Die folgenden Codesegmente füllen die Anforderungssprachenstruktur und den sekundären Container. In Zeile 125 wird die Primärsprachenstruktur für die AddOperation-Anforderungsdaten initialisiert, wie in Listing 14 gezeigt. Listing 14. Füllen Sie die Anforderungssprachenstruktur zurück Früher haben Sie eine Variablenlängenstruktur namens CALCULATOR-OPERANDS definiert, die genau wie der Speicher organisiert ist Des sekundären Behälters, der die zu summierenden Operanden darstellt. Auf den Zeilen 129 bis 135 werden die zu summierenden Zahlen und deren Zähler in CALCULATOR-OPERANDS gespeichert, wie in Listing 15 gezeigt. Listing 15. Geben Sie die zu summierenden Zahlen ein Auf den Zeilen 137 bis 139 geben Sie dem sekundären Container einen Namen Enthält die zu summierenden Operanden, wie in Listing 16 gezeigt. Listing 16. Name des sekundären Containers Zeile 143 setzt den Zähler für die Anzahl der Vorkommen von RCALCI01-additionXoperand, die im sekundären Container existieren. Ein Behälter ist nicht selbstbeschreibend, so dass es notwendig ist, dem Verbraucher des Containers die Anzahl der Instanzen der Struktur (auf die der Container abgebildet wird) zu sagen, die darin enthalten sind. Die Zeilen 144 bis 148 erstellen den AddOperands-Container im aktuellen Kanal aus der CALCULATOR-OPERANDS-Struktur in Ihrem Arbeitsspeicher, wie in Listing 17 gezeigt. Sie haben nun das Befüllen der Anforderungsdaten für den AddOperation-Vorgang abgeschlossen. Listing 17. Erstellen Sie den AddOperands-Container Listing 18. Rufen Sie den Webservice auf Listing 19. Rufen Sie die Antwort ab Erreicht wird, nachdem der Aufruf von AddOperation auf dem Remote-Webdienst abgeschlossen ist und die Ergebnisse im AdditionalXreflect-Feld der Primärsprache platziert wurden Struktur im RCALCO01.cpy-Kopierbuch. Die in Listing 18 dargestellte Logik zeigt die Ergebnisse des AddOperation-Aufrufs zum CICS-Terminal an. Listing 20. Anzeige der Daten Der ausgefüllte Code für den Web-Service-Requester ist im CalculatorrequesterProj. zip enthalten, der im Download-Bereich verfügbar ist. Testen des Web-Service-Requesters Nachdem die folgenden Schritte durchgeführt wurden, können Sie den neuen Web Service-Requester über das CICS 3270-Terminal (oder andere Mittel) testen: Kopieren Sie die CALCRQST. cbl, RCALCI. cpy und RCALCO. cpy auf das MVS-System . Kompilieren und verknüpfen Sie die CALCRQST. cbl Web-Service-Requester-Anwendung in einem Last-Dataset innerhalb der DFHRPL-Verkettung von CICS. Definieren Sie eine PROGRAM-Ressource in CICS namens CALCRQST und installieren Sie sie. Definieren Sie eine Transaktion mit dem Namen RQST (oder alles, was you128153ll sich erinnern) und spezifizieren Sie CALCRQST als das Programm, das es aufruft. Kopieren Sie die Datei Calculatorrequester. wsbind in ein CICS-Requester-Modus-PIPELINE-Pickup-Verzeichnis. CEMT PERFORM PIPELINE (REQPIPE) SCAN Stellen Sie sicher, dass der Web Service-Anforderer und der Provider Dienst haben, indem Sie CEMT INQUIRE WEBSERVICE () ausgeben, und suchen Sie nach Calculatorrequester und CalculatorProvider. Die Ergebnisse sollten wie in Abbildung 25 dargestellt aussehen. Abbildung 25. Ergebnisse, die sowohl CalculatorProvider als auch Calculatorrequester anzeigen Um das Web-Service-Requester zu testen, melden Sie sich am CICS-Terminal an und rufen Sie die RQST-Transaktion auf (Abbildung 26), die die Anwendung CALCRQST. cbl ausführt . Erinnern Sie sich, dass die Webdienstanforderungsanwendung die AddOperation-Operation auf dem CalculatorProvider WEBSERVICE aufruft. Die zu summierenden Werte sind im Dienstanforderungsprogramm hartcodiert und sollten gleich 256 sein. Abbildung 26. Die RQST-Transaktion Abbildung 27 zeigt einen erfolgreichen Ende-zu-Ende-Test des Anforderers an den Provider. Figure 27. CALCRQST addResult is 256 What you have learned Using Rational Developer for System z, you have developed two types of new applications: a Web service provider and a Web service requester. This article also showed you the improved usability of DFHWS2LS: a graphical interface and a template to help you generate provider and requestor programs. Visit the Rational software area on developerWorks for technical resources and best practices for Rational Software Delivery Platform products. Subscribe to the IBM developerWorks newsletter. a weekly update on the best of developerWorks tutorials, articles, downloads, community activities, webcasts and events. Subscribe to the developerWorks Rational zone newsletter. Keep up with developerWorks Rational content. Every other week, youll receive updates on the latest technical resources and best practices for the Rational Software Delivery Platform. Subscribe to the Rational Edge newsletter for articles on the concepts behind effective software development. Browse the technology bookstore for books on these and other technical topics. Get products and technologies Download trial versions of IBM Rational software . Download these IBM product evaluation versions and get your hands on application development tools and middleware products from DB2174, Lotus174, Tivoli174, and WebSphere174. developerWorks: Sign in Required fields are indicated with an asterisk ( ). The first time you sign into developerWorks, a profile is created for you. Information in your profile (your name, country/region, and company name) is displayed to the public and will accompany any content you post, unless you opt to hide your company name . You may update your IBM account at any time. All information submitted is secure. Choose your display name The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks. Please choose a display name between 3-31 characters . Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons. Required fields are indicated with an asterisk ( ). All information submitted is secure. Dig deeper into Rational software on developerWorks Exclusive tools to build your next great app. Mehr erfahren. Ask a technical question Tutorials amp training to grow your development skills ZoneRational, WebSphere, DevOps ArticleTitleImplement a Web service provider and requester using native CICS APIs and IBM Rational Developer for System z
No comments:
Post a Comment