[go: up one dir, main page]

DE19936118A1 - Computer software based errors search method for distributed applications, involves transferring protocols in generic format and then separating the information into essential and administrative data - Google Patents

Computer software based errors search method for distributed applications, involves transferring protocols in generic format and then separating the information into essential and administrative data

Info

Publication number
DE19936118A1
DE19936118A1 DE19936118A DE19936118A DE19936118A1 DE 19936118 A1 DE19936118 A1 DE 19936118A1 DE 19936118 A DE19936118 A DE 19936118A DE 19936118 A DE19936118 A DE 19936118A DE 19936118 A1 DE19936118 A1 DE 19936118A1
Authority
DE
Germany
Prior art keywords
information
giop
data
message
user interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE19936118A
Other languages
German (de)
Inventor
Peter Fischer
Tony Gargya
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to DE19936118A priority Critical patent/DE19936118A1/en
Publication of DE19936118A1 publication Critical patent/DE19936118A1/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3698Environments for analysis, debugging or testing of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

Search for errors, particularly in distributed applications based on common object request broker architecture (COBRA) and so-called middle-ware i.e. software enabling communication between two different programs, requires initially transferring the protocol information in a generic format prior to breaking down the information into administrative- and useful- data and then filing the results in a data store, ready for presentation in a user interface.

Description

Die vorliegende Erfindung beschreibt ein Verfahren zur Fehlersuche in verteilten Anwendungen, insbesondere für CORBA basierte Anwendungen.The present invention describes a method for Troubleshoot distributed applications, especially for CORBA based applications.

CORBA (Common Object Request Broker Architecture) wurde 1992 von der OMG (Open Management Group) vorgestellt und erlaubt die Erzeugung von Komponenten (Objekten), die unabhängig von ihrer Implementierungssprache und Plattform miteinander kommunizieren. Zusätzlich werden eine Reihe von Services zur Verfügung gestellt, die den Einsatz in der Praxis erst interessant machen. Dazu gehören vor allem die Punkte Security, Transactions und Persistence.CORBA (Common Object Request Broker Architecture) became 1992 presented and allowed by the OMG (Open Management Group) the creation of components (objects) that are independent of your implementation language and platform communicate. In addition, a number of services are available Provided the use in practice only make interesting. Above all, this includes the points Security, transactions and persistence.

Object Management Architecture (OMA)Object Management Architecture (OMA)

Die Basis bilden das OMG Objektmodell und das OMG Referenzmodell des Object Management Architecture Guide (siehe [1]). Das OMG Objektmodell beschreibt die gemeinsame Semantik von Objekten, die in einem OMG- konformen System miteinander umgehen. Dies geschieht auf abstrakte Weise, also unabhängig von einer speziellen Technologie und Implementierung (z. B. einer speziellen Programmiersprache). Das OMG Referenzmodell beschreibt die Object Management Architecture (OMA). Die Absicht ist, eine technologieunabhängige Identifizierung und Charakterisierung von Komponenten, Schnittstellen und Protokollen zu definieren. The OMG object model and the OMG form the basis Reference model of the Object Management Architecture Guide (see [1]). The OMG object model describes the common one Semantics of objects in an OMG-compliant system deal with each other. This happens in an abstract way independent of a special technology and Implementation (e.g. a special programming language). The OMG reference model describes the object management Architecture (OMA). The intention is one technology-independent identification and characterization of components, interfaces and protocols define.  

Die im Objekt- und im Referenzmodell beschriebenen abstrakten Grundlagen und Architekturelemente sollen durch die Industrie technologisch konkretisiert werden. Die OMG implementiert also keinen ihrer Vorschläge (die in Form von Spezifikationen ausgegeben werden) selbst, sondern stellt nur Spezifikationen auf. Jede Spezifikation, die nicht innerhalb eines Jahres von einer Softwarefirma implementiert wird, wird gestrichen und muß eventuell neu überdacht werden.Those described in the object and reference models abstract foundations and architectural elements are supposed to be through the industry is technologically concretized. The OMG so don't implement any of their suggestions (which are in the form of Specifications are issued) itself, but provides only specifications on. Any specification that is not implemented by a software company within one year is deleted and may need to be reconsidered become.

CORBA als Teil der OMACORBA as part of the OMA

Die Common Object Request Broker Architecture (CORBA) und ihr zugehöriges Objektmodell stellen technologische Konkretisierungen der OMA und ihres zugehörigen Objektmodells dar, und bietet damit eine direkte Vorlage für eine Implementierung durch die Industrie.The Common Object Request Broker Architecture (CORBA) and their associated object model is technological Specification of the OMA and its associated Object model, and thus provides a direct template for an implementation by the industry.

Stand bei Objektorientierter MiddlewareStatus with object-oriented middleware MiddlewareMiddleware

Um die Kompatibilitätsprobleme und die Komplexität bei der Netzwerk-Programmierung zu verringern, wurde das Konzept der Middleware eingeführt. Bei Middleware handelt es sich eine Software, die es zwei verschiedenen Programmen, Client und Server, auf zwei verschiedenen Rechnern ermöglicht, miteinander zu kommunizieren, ohne sich um die Details der (Netzwerk-)Kommunikation kümmern zu müssen. Fig. 1 zeigt die grobe Architektur für einen solchen Aufruf.The concept of middleware was introduced to reduce the compatibility problems and the complexity of network programming. Middleware is software that enables two different programs, client and server, on two different computers to communicate with each other without having to worry about the details of (network) communication. Fig. 1 shows the rough architecture for such a call.

Der Object Request Broker ist eine umfangreiche Erweiterung des klassischen Middleware Konzepts. Er ermöglicht zum einem die Nutzung von verteilten Objekten (in der Regel auch Objekte verschiedener Sprachen) und verbindet damit die Vorteile der objektorientierten Softwareentwicklung und der einfachen Programmierung von Netzanwendungen über Middleware. Darüber hinaus wird eine mehr oder weniger umfangreiche Ansammlung von Diensten angeboten, die den Umgang mit verteilter Software weiter vereinfachen. Zum Beispiel ist es beim Einsatz eines ORBs nicht mehr nötig die Adresse des Rechners auf dem das Serverobjekt abgelegt ist zu kennen. Vielmehr genügt es die Adresse eines ORBs zu kennen, der dann die Aufrufe an die entsprechenden ORBs weiterleitet.The Object Request Broker is an extensive extension of the classic middleware concept. On the one hand, it enables the use of distributed objects (usually also  Objects of different languages) and connects the Advantages of object oriented software development and simple programming of network applications Middleware. It also becomes a more or less extensive collection of services offered to the Simplify handling of distributed software. To the For example, it is no longer necessary to use an ORB Address of the computer on which the server object is stored to know. Rather, the address of an ORB is sufficient know who then calls to the appropriate ORBs forwards.

Somit kann sich der Entwickler viel besser auf die eigentliche Logik seiner Anwendung konzentrieren, da er von den immer wieder auftretenden Problemen der Netzprogrammierung weitgehend befreit wird.Thus, the developer can focus on the much better focus actual logic of its application since it is from the recurring problems of Network programming is largely exempt.

Aktuelle Probleme der Objekt-Middleware-TechnologieCurrent problems with object middleware technology

Über ORBs ist es möglich, sehr schnell komplexe, wiederverwendbare und leicht erweiterbare Anwendungen zu erstellen, jedoch löst die objektorientierte Middleware selbstverständlich nicht alle Probleme der Softwareentwicklung.With ORBs it is possible to quickly create complex, reusable and easily expandable Build applications, however, solves the object-oriented Middleware, of course, does not solve all of the problems Software development.

Abstrakte ProgrammierschnittstelleAbstract programming interface

Befreit von den Grundproblemen der Entwicklung verteilter Anwendungen, sieht sich der Entwickler schnell mit neuen Schwierigkeiten konfrontiert. Da die neue API (Application Programmers Interface) so einfach und abstrakt gehalten ist, verliert der Programmierer auch die direkte Kontrolle über das eigentliche Geschehen. Es kann nicht mehr nachvollzogen werden kann, was bei einer einigen Zeile Quellcode alles generiert wird bzw. welche komplexen Netzwerkoperationen durchgeführt werden. So ist es dem Implementierer nicht mehr möglich zwischen Netzwerk-, Middleware- oder Anwendungs­ fehlern zu unterscheiden, selbst wenn er die Zeile im Quellcode kennt, bei der ein Fehler auftritt. Das gesamte Spektrum wird bei einem einzigen Methodenaufruf oft mehrfach und verteilt genutzt, ohne daß der Programmierer davon wissen muß. Dabei können natürlich weiterhin zusätzlich die bekannten Probleme, wie Hardware- oder Betriebssystemfehler auftreten.Free from the basic problems of distributed development Applications, the developer sees himself quickly with new ones Faced difficulties. Since the new API (Application Programmers interface) is so simple and abstract, the programmer also loses direct control over the real thing. It can no longer be traced can be what with a few lines of source code  is generated or which complex network operations be performed. It is no longer the case with the implementer possible between network, middleware or application to distinguish errors even if he has the line in the Knows source code with which an error occurs. The entire Spectrum often becomes multiple with a single method call and used distributed without the programmer must know. Of course, you can still use the known problems, such as hardware or operating system errors occur.

FehlersucheTroubleshooting

Stürzt eine verteilte Anwendung ab, kann nicht einfach nachvollzogen werden, wann und wo der eigentliche Fehler aufgetreten ist, es sei denn das Problem ist gerade zufällig auf der lokalen Maschine aufgetreten. Ansonsten könnte der Fehler bei der Anfrage an den Server, bei der Abarbeitung auf dem Server, oder bei der Antwort des Servers liegen, ohne daß dies einfach zu überprüfen wäre. Dies wird noch verkompliziert durch die Tatsache, daß sich eine verteilte Anwendung in der Regel nicht nur auf zwei Systeme beschränkt, sondern der ursprüngliche Server weitere Anfragen an andere Server stellt, um seine Aufträge erfüllen zu können. Wie gesagt, ist es jetzt zwar möglich, sehr schnell komplexe und leicht erweiterbare Anwendungen zu erstellen, jedoch wurde die Fehlersuche deutlich erschwert, was entsprechend mächtige Tools fordert.If a distributed application crashes, it cannot be easy understand when and where the real mistake unless the problem is just accidental occurred on the local machine. Otherwise, the Error in the request to the server during processing on the server, or when the server responds, without this being easy to check. This will still be complicated by the fact that a distributed Usually not only applied to two systems limited, but the original server further Makes requests to other servers to fulfill its orders to be able to. As I said, it is now possible, very much quickly complex and easily expandable applications create, but troubleshooting was significantly more difficult which requires correspondingly powerful tools.

Problem der fehlenden BasisLack of base problem

Sehr schwierig gestaltet sich die Fehlersuche für Entwickler der Middleware selbst. Dies bezieht sich auf die Tatsache, daß sich die verschiedenen Implementierungen des CORBA- Standards auf Grund des offenen Konzeptes teilweise unterscheiden. Dies ist darauf zurückzuführen, daß die verschiedenen Hersteller nur die Teile implementiert haben, die ihnen sinnvoll, oder schnell realisierbar erschienen, oder es wurden neue, eigene Ideen mit eingebracht. Somit kommt es immer wieder zu Inkompatibilitäten, wenn nicht nur die einfachsten ORB-Funktionen genutzt werden. Da auf der anderen Seite die Nachfrage nach CORBA auf fast allen Plattformen von allen Seiten aber sehr groß ist, besteht auch ein sehr großer Konkurrenzkampf. Dies hat zur Folge, daß kaum entsprechende Tools auf dem Markt verfügbar sind, die allgemein eingesetzt werden können. Es gibt statt dessen fast nur eigene Versionen, die jeweils für den einen herstellerspezifischen ORB genutzt werden können. Dies schließt leider auch vernünftige Debugger mit ein.Troubleshooting is very difficult for developers the middleware itself. This refers to the fact that the different implementations of the CORBA- Standards partly due to the open concept  differentiate. This is due to the fact that the different manufacturers have only implemented the parts that seemed sensible to them, or quickly realizable, or new, own ideas were brought in. Consequently incompatibilities always occur, if not only the simplest ORB functions can be used. Since on the on the other hand, the demand for CORBA on almost everyone Platforms from all sides but is very large also a very big competition. As a consequence, that there are hardly any corresponding tools available on the market, that can be used in general. There is instead almost only own versions, each for one manufacturer-specific ORB can be used. This unfortunately also includes reasonable debuggers.

Stand der TechnikState of the art Debugging Alternativen bei verteilten AnwendungenDebugging alternatives for distributed applications

Es bieten sich vor allem zwei Möglichkeiten, verteilte Anwendungen zu debuggen:
Die für den Anwender angenehmere, aber auch wesentlich aufwendigere Version ist dabei das klassische "Echtzeit" Debugging Tool. Die einfachere, aber relativ eingeschränkte Möglichkeit ist es, Informationen während des Abarbeitens der Anwendung aufzuzeichnen und später (offline) auszuwerten.
There are two main ways to debug distributed applications:
The version that is more comfortable for the user, but also much more complex, is the classic "real-time" debugging tool. The simpler, but relatively limited option is to record information while the application is running and to evaluate it later (offline).

Echtzeit Debugging Tools (Remote Debugger)Real-time debugging tools (remote debugger)

Die Variante des Echtzeit Debbugings bietet in der Regel die Möglichkeit, den Code Zeile für Zeile abzuarbeiten und dabei die Zustände der verschiedensten Variablen zu überwachen. Häufig können zusätzlich Haltepunkte festgelegt und weitere Optionen genutzt werden, welche die Arbeit mit dem Code wesentlich vereinfachen. Die Schwierigkeit dabei ist nun, daß der Code nicht wie gewohnt einfach nur auf dem eigenen Rechner ausgeführt wird, sondern auf verschiedensten Plattformen und an verschiedensten Stellen in verschiedensten Sprachen. So muß ein entsprechendes Tool entferntes Debugging unterstützen und Debugging- Informationen von dem jeweils aktiven Server anfordern. Jeder Server muß dabei über den, mit Debugging- Informationen kompilierten Code verfügen und diese Informationen auch ausliefern können. Somit ist ein solches Tool selbst eine sehr aufwendige verteilte Anwendung, die eine Infrastruktur nutzen muß, die ja gerade entwickelt werden soll. So wird auch eine entsprechende Anwendung von der Firma IBM, ein Remote Debugger, implementiert, der sich aber auf Grund einer fehlenden Basis noch in einem sehr frühen Stadium befindet und den Entwicklern der Middleware noch nicht vollständig zur Verfügung steht. Dieses Tool ist vielmehr als fester Bestandteil des späteren Middleware Produkts vorgesehen, um dem Anwender die Entwicklungsarbeit der verteilten Applikationen so angenehm wie möglich zu gestalten.The variant of real-time debugging usually offers that Possibility to process the code line by line while doing so monitor the states of various variables. Often additional breakpoints can be set and more Options are used that work with the code  simplify considerably. The difficulty now is that the code is not just on your own as usual Computer is running, but on various Platforms and in various places in different languages. So a corresponding tool support remote debugging and debugging Request information from the currently active server. Each server must have the debugging Information compiled code and this Can also deliver information. So this is one Tool itself a very elaborate distributed application that must use an infrastructure that is currently being developed shall be. A corresponding application of from IBM, a remote debugger, implemented but due to a lack of a base still in a very early stage and the developers of the middleware is not yet fully available. This tool is rather as an integral part of the later middleware Product provided to the user development work the distributed applications as pleasant as possible shape.

Offline DebuggingOffline debugging

Die zweite Variante des Debuggings bezieht sich, wie gesagt, auf die Auswertung aufgezeichneter Informationen. Diese Informationen werden in der Regel mit Hilfe von Monitoren gewonnen bzw. von den Anwendungen selbst generiert.The second variant of debugging relates, as I said, on the evaluation of recorded information. This Information is usually collected with the help of Monitors gained or from the applications themselves generated.

MonitoringMonitoring

Von Monitoring wird gesprochen, wenn von "außen" Informationen abgefragt oder gewonnen werden und für die spätere Auswertung abgelegt werden. Dabei sind Hardware- und Softwaremonitore zu unterscheiden.We speak of monitoring when "from outside" Information is queried or obtained and for which later evaluation can be filed. Hardware and  Distinguish between software monitors.

HardwaremonitoreHardware monitors

Hardwaremonitore sind zusätzliche Geräte, die nur die Aufgabe haben, Informationen aufzuzeichnen. Dabei kann es sich um Registerwerte oder Signalzustände einer Leitung handeln. Der Vorteil dabei ist, daß diese Geräte nur einen sehr geringen Einfluß auf das System ausüben und die gewonnenen Daten dadurch sehr realistisch sind.Hardware monitors are additional devices that only the To record information. It can are register values or signal states of a line act. The advantage is that these devices only one exert very little influence on the system and the data obtained are therefore very realistic.

Der Nachteil sind die oft sehr hohen Kosten dieser Geräte, die geringe Flexibilität und der mitunter hohe Aufwand der Installation in das System.The disadvantage is the often very high cost of these devices, the low flexibility and the sometimes high effort of Installation in the system.

SoftwaremonitoreSoftware monitors

Softwaremonitore sind ein Stück Software, die Daten oder Zustände des Systems aufzeichnen. Da keine zusätzliche Ausrüstung notwendig ist, ist der Vorteil die hohe Flexibilität, die sehr geringen Kosten und der relativ geringe Aufwand dieser Lösung. Das Problem ist jedoch der hohe Einfluß eines zusätzlichen Tasks auf das System, da durch diesen das gesamte Laufzeitverhalten verfälscht wird. Ist dieses wichtig oder gar entscheidend für das Verhalten des Systems, sind die Ergebnisse in der Regel nicht brauchbar. Darüberhinaus können auch nicht beliebige Werte über Softwaremonitore gewonnen werden, z. B. ist es nicht möglich Signalzustände einer Leitung aufzuzeichnen.Software monitors are a piece of software that data or Record system states. Since no additional Equipment is necessary, the advantage is the high Flexibility, the very low cost and the relative little effort of this solution. The problem is, however high influence of an additional task on the system, because this falsifies the entire runtime behavior. Is this important or even crucial for behavior of the system, the results are usually not useful. In addition, you cannot use arbitrary values can be obtained via software monitors, e.g. B. it is not possible to record signal states of a line.

Von "echten" Softwaremonitoren wird gesprochen, wenn ein Programm zusätzlich zur "normalen" Software abläuft, nur um die gewünschten Daten aufzuzeichnen.We speak of "real" software monitors when a Program runs in addition to "normal" software, just to record the desired data.

Debugging über anwendungsgenerierte Informationen Eine weitere Variante der Fehlersuche über eine Software ist die Erweiterung der eigentlichen Anwendung um die Funktionalität der Informationsgewinnung. Die Idee ist, den Code der Anwendung um Anweisungen erweitert, die beliebige, gewünschte Daten ausgeben (auf Platte oder Konsole), zum Beispiel über cout (C++) oder printen (Java). Somit gibt das Programm während der Abarbeitung die entsprechenden Werte z. B. in eine Datei (Job Log). Dä es sich im Prinzip auch um eine Art Software Monitor handelt, gelten auch hier die oben genannten Eigenschaften. Allerdings endet bei dieser Version der Informationsgewinnung die Ausgabe von Information mit dem Absturz des Programms. Somit kann relativ einfach festgestellt werden, bis zu welchem Punkt das Programm überhaupt noch lief (ob wirklich fehlerfrei, kann wiederum nicht so einfach gesagt werden). Nun können in diesem Bereich weitere Ausgaben eingefügt werden, bis die eigentliche Zeile des Absturzes gefunden ist. Dies kann allerdings unter Umständen einen relativ hohen Aufwand bedeuten.Debugging about application-generated information  Another variant of troubleshooting via software is the extension of the actual application with the Functionality of information acquisition. The idea is that Code of the application extended by instructions that any output desired data (on disk or console) to Example using cout (C ++) or printing (Java). So there is Program during execution the corresponding values e.g. B. in a file (Job Log). In principle, it is also is a kind of software monitor, the above applies here too mentioned properties. However, this version ends the acquisition of information the output of information with the crash of the program. So it can be relatively easy to what point the program is determined was still running at all (whether really error-free, can in turn not so easily said). Now in this Further editions to be inserted until the actual line of the crash is found. This can however, under certain circumstances a relatively high effort mean.

Existierende SoftwareExisting software

Umfangreiche Recherchen im Internet haben lediglich ein einziges Ergebnis gebracht, das grob in diese Richtung geht. Es handelt sich dabei um eine Linux Anwendung, die auf einen TCP-Analyser aufsetzt. Dieses Tool überwacht die Daten, die über das Netz ausgetauscht werden und kann dabei IIOP- Pakete erkennen. Wird ein Paket entdeckt, wird die Art der Nachricht und die Request ID auf die Konsole ausgegeben. Diese nur oberflächlichen Informationen reichen jedoch bei weitem nicht aus, um den wirklichen Programmablauf nachvollziehen zu können.Extensive research on the Internet has only one brought only result that goes roughly in this direction. It is a Linux application that is based on a TCP analyzer is set up. This tool monitors the data that can be exchanged via the network and can IIOP Recognize packages. If a package is discovered, the type of Output message and the request ID on the console. However, this only superficial information is sufficient far from the actual program flow to be able to understand.

Aufgabe der ErfindungObject of the invention

Es ist daher Aufgabe der vorliegenden Erfindung, ein automatisiertes Werkzeug bzw. automatisiertes Verfahren zur benutzerfreundlichen Fehleridentifizierung und Fehlerdarstellung für verteilte Anwendungen bereitzustellen, das auch nach Beendigung der Anwendung anwendbar ist.It is therefore an object of the present invention automated tool or automated process for user friendly error identification and Provide error representation for distributed applications, which is also applicable after the application has ended.

Diese Aufgabe wird durch die Merkmale in Anspruch 1, 24 und 28 gelöst. Weitere vorteilhafte Ausführungsformen sind in den Unteransprüchen niedergelegt.This object is achieved by the features in claims 1, 24 and 28 solved. Further advantageous embodiments are in the subordinate claims.

Bei dem erfinderischen Werkzeug (Tool) handelt es sich um ein Programm zur Visualisierung der Kommunikation von verteilten Anwendungen, insbesondere CORBA-Anwendungen. Das Tool nutzt dazu Traces oder Dumps, insbesondere des standardisierten Internet Inter ORB Protocols (IIOP), über das CORBA Anwendungen ihre Informationen austauschen.The inventive tool is a program to visualize the communication of distributed applications, especially CORBA applications. The Tool uses traces or dumps, especially the standardized Internet Inter ORB Protocols (IIOP), via that CORBA applications exchange their information.

Bei dieser Kommunikation werden auch alle wichtigen Daten übertragen, die zur Fehlersuche genutzt werden können. Dies bezieht sich unter anderem auch auf Fehlermeldungen oder fehlende oder falsche Nachrichten.This communication also includes all important data transmitted, which can be used for troubleshooting. This also refers to error messages or missing or wrong messages.

Durch den konfigurierbaren Vorfilter ist das Tool unabhängig von der Formatierung der Nachrichten-Pakete in den Trace Files bzw. Dumps. Außerdem werden Bestandteile, deren Aufbau nicht bekannt ist, einfach als formatierter Hex Code mit ASCII und EBCDIC Interpretation ausgegeben.The tool is independent thanks to the configurable pre-filter from formatting the message packets to the trace Files or dumps. In addition, components whose Structure is not known, simply as formatted hex code output with ASCII and EBCDIC interpretation.

Dadurch können z. B. die Traces beliebiger ORBs, beliebiger Hersteller eingelesen und formatiert werden. Dies gilt selbst, wenn ORBs über eine andere GIOP Implementierung als das IIOP kommunizieren sollten, wobei dann natürlich die protokoll-spezifischen Bestandteile des IORs nicht interpretiert werden können. Somit wurde ein universell einsetzbares Tool geschaffen, das z. B. auch für verteilte Java Anwendungen eingesetzt werden kann, da seit Version 2.0 des JDK die Kommunikation bei der Remote Method Invocation (RMI) über IIOP erfolgen kann.This allows z. B. the traces of any ORBs, any Manufacturer read and formatted. this applies even if ORBs have a GIOP implementation other than the IIOP should communicate, of course then the not protocol-specific components of the IOR can be interpreted. Thus became a universal usable tool created that z. B. also for distributed Java applications can be used since version 2.0  of the JDK the communication in the remote method invocation (RMI) via IIOP.

Die gesamte Kommunikation wird unabhängig von der Gewinnung der Traces wieder rekonstruiert und die meisten Bestandteile können dann auch lesbar visualisiert werden. Zur Nutzung des Tools muß dabei kein großer Aufwand betrieben werden, da nur die Traces irgendwie in einer Datei abgelegt werden müssen. Ansonsten könnte das Tool auch ohne spezielle Installation, z. B. von CD gestartet werden.All communication becomes independent of the extraction the traces reconstructed and most of the components can then be visualized legibly. To use the Tools do not have to be put into great effort, since only the traces must somehow be stored in a file. Otherwise the tool could also be used without special installation, e.g. B. be started from CD.

Da durch diesen Ansatz völlig unabhängig vom System gearbeitet wird, müssen auch hier keinerlei große Änderungen vorgenommen werden. Während beim klassischen Debuggen neues Kompilieren des Codes oder gar Änderungen im Code selbst notwendig waren, muß einzig die Konfiguration zur Ausgabe der Traces angepaßt werden, z. B. durch ein Ändern des Trace Levels oder Setzen entsprechender Umgebungsvariablen. Dadurch kann das FFIT ideal als einfache Debug-Hilfe für die ORB- und Anwendungsentwicklung eingesetzt werden, da fast alle interessanten Informationen vom Verbindungsaufbau bis zum physischen Ort einer Objekt- Implementierung über dieses Protokoll übertragen werden und sehr einfach eingesehen werden können.Because this approach makes it completely independent of the system no major changes are necessary be made. While classic debugging recompile the code or even change the code configuration was necessary Output of the traces can be adjusted, e.g. B. by changing of the trace level or setting the corresponding one Environment variables. This makes the FFIT ideal as a simple one Debug help for ORB and application development can be used as almost all interesting information from establishing a connection to the physical location of an object Implementation can be transferred via this protocol and can be viewed very easily.

Aber durch die hohe Unabhängigkeit sind die Einsatzmöglichkeiten des Tools nicht nur auf diesen Bereich beschränkt. Vor allem bei der Administration von verteilten Systemen kann es von sehr großem Nutzen sein. Wird eine verteilte Anwendung in einer neuen Umgebung installiert, erfordert dies oft sehr großen Konfigurationsaufwand bezüglich der genutzten Infrastruktur (wie System­ zugriffsrechte, Datenbankzugriff, Transaktionsmanagement, etc). Dadurch treten in der Regel auch bei stabilen, ausführlich getesteten Anwendungen Anlaufschwierigkeiten auf, weil die Umgebung noch nicht richtig konfiguriert wurde (z. B. wenn ein Objekt nicht auf die Datenbank zugreifen darf). Um herauszufinden, an welcher Stelle das Problem nun sitzt, kann auch hier wieder auf die IIOP Traces zurückgegriffen werden, da z. B. auch Security-Daten übertragen werden. So kann der Administrator über das Tool relativ einfach die Problemstelle erkennen, ohne lange im System herumsuchen, oder gar die Anwendung ändern zu müssen. Es ist noch nicht einmal notwendig, den detaillierten Aufbau der Anwendung zu kennen, da das IIOP im Notfall alle notwendigen Informationen liefert (z. B. welches Objekt benötigt welche Zugriffsrechte).But due to the high degree of independence they are Possible uses of the tool not only in this area limited. Especially in the administration of distributed Systems, it can be very useful. Will one distributed application installed in a new environment, this often requires a lot of configuration regarding the infrastructure used (such as system access rights, database access, transaction management, Etc). As a rule, this means that even with stable, extensively tested applications starting difficulties  because the environment has not yet been configured correctly (e.g. if an object does not have access to the database may). To find out where the problem is now can also use the IIOP Traces again be used because e.g. B. also security data be transmitted. So the administrator can use the tool relatively easy to identify the problem area without long in System looking around, or even having to change the application. It is not even necessary to have the detailed structure know the application, because the IIOP in an emergency everyone provides the necessary information (e.g. which object needs which access rights).

In einer bevorzugten Ausführungsform unterstützt das erfinderische Tool die Job Logs und damit die Traces aller ORBs aller Plattformen oder zumindest die Java und C++ Traces der Component Broker ORBs (IBM) der Plattformen Microsoft Windows NT und IBM OS/390. Das bedeutet, daß sowohl die Art der Formatierung der verschiedenen Varianten berücksichtigt wird als auch die unterschiedlichen Zeichen- Kodierungen der Plattformen. Zum Beispiel wird unter NT in der Regel der ASCII (American National Standard Code for Information Interchange) Standard verwendet, hingegen unter OS/390 auch noch die EBCDIC (Extended Binary Coded Decimal Interchange Code)-Kodierung.In a preferred embodiment, this supports inventive tool the job logs and thus the traces of all ORBs of all platforms or at least the Java and C ++ Traces of the Component Broker ORBs (IBM) of the platforms Microsoft Windows NT and IBM OS / 390. It means that both the type of formatting of the different variants is taken into account as well as the different characters Coding of the platforms. For example, under NT in usually the ASCII (American National Standard Code for Information Interchange) standard used, however under OS / 390 also the EBCDIC (Extended Binary Coded Decimal Interchange Code) encoding.

Das Verfahren ist in einer bevorzugten Ausführungsform für den Einsatz unter NT vorgesehen, da die OS/390 Job Logs ohne weiteres auf diese Plattform heruntergeladen werden können.In a preferred embodiment, the method is for intended to be used under NT since the OS / 390 job logs without more can be downloaded on this platform.

Da das Verfahren aber in Java implementiert werden kann, ist auch der Einsatz direkt unter OS/390 denkbar.But since the procedure can be implemented in Java, use directly under OS / 390 is also conceivable.

Da die Geschwindigkeit beim Offline Debuggen bei der Ausführung der vorliegenden Erfindung nicht entscheidend ist, kann die langsamere Java Performance ohne weiteres in Kauf genommen werden. Dafür kann die Anwendung dann direkt auf der S/390 eingesetzt werden, oder auch an andere Abteilungen oder Entwickler weitergegeben werden, die zum Beispiel im AIX Umfeld (UNIX Derivat der Firma IBM) arbeiten.Because the speed of offline debugging at Implementation of the present invention is not critical is, the slower Java performance can easily in Purchase. The application can then do this directly to be used on the S / 390, or to others  Departments or developers who are responsible for Example in the AIX environment (UNIX derivative from IBM) work.

Die vorliegende Erfindung wird anhand eines bevorzugten Ausführungsbeispiels in Verbindung mit Figuren näher erläutert, wobeiThe present invention is based on a preferred one Exemplary embodiment in connection with figures explained where

Fig. 1 die Struktur einer Middleware zeigt Fig. 1 shows the structure of a middleware

Fig. 2 die erfinderische Architektur des IIOP Trace Formatter Tools Fig. 2 shows the inventive architecture of the IIOP trace formatter tool

Fig. 3 die IIOP Trace Formatierungen verschiedener ORBs Fig. 3, the IIOP Trace formatting different ORBs

Fig. 4 ein einfaches GIOP Paket zeigt Figure 4 shows a simple GIOP package

Fig. 5 der Hex Code des GIOP Pakets nach Fig. 4 Fig. 5 of the Hex code of the GIOP package of FIG. 4

Fig. 6 eine Tabelle: geparste GIOP Nachricht Fig. 6 is a table: GIOP message parsed

Fig. 7 die Java Packages des Tools zeigt Fig. 7 shows the Java package of tools

Fig. 8 verschiedene Paket-Formatierungen zeigt Fig. 8 shows different packet formatting

Fig. 9 die TracePreFilter Klasse zeigt Figure 9 shows the TracePreFilter class

Fig. 10 das hierarchische Parsen des Hex Codes zeigt Fig. 10 shows the hierarchical parsing of Codes Hex

Fig. 11 die hierarchische Datenablage des Parsers zeigt Fig. 11 shows the hierarchical data storage of the parser

Fig. 12 das Hauptfenster des erfinderischen Tools zeigt Figure 12 shows the main window of the inventive tool

Fig. 13 der Dialog zur Typenbestimmung zeigt Fig. 13 shows the dialog box for determining type

Fig. 14 einfache Datentypen im Textfeld zeigt Fig. 14 shows simple data types in the text field

Fig. 15 die Klasse Trace Formatter zeigt Figure 15 shows the Trace Formatter class

Fig. 16 ein Code Beispiel-Nutzung des Dialogs zeigt FIG. 16 is a code sample usage of the dialog shows

Fig. 2 zeigt die High-Level-Architektur des Tools. Das erfinderische Tool besteht also aus drei größeren Komponenten:
FIG. 2, the high-level architecture shows the tool. The inventive tool therefore consists of three major components:

  • 1. einem Vorfilter für den Job Log1. a pre-filter for the job log
  • 2. dem Parser2. the parser
  • 3. einer Benutzeroberfläche mit weiterer Filter- bzw. Selektionsfunktion.3. a user interface with additional filter or Selection function.
VorfilterPrefilter

Die erste Filterstufe wird benötigt, da in den Job Logs verschiedener ORBs die IIOP Traces unterschiedlich formatiert sind (siehe Fig. 3) und jeweils noch viele weitere Informationen im Textformat enthalten (siehe Fig. 4). Das entsprechende Job Log muß dabei als eigene Datei vorliegen. Dieser Filter entfernt dann "alle überflüssigen Daten" und legt den gewonnenen, "sauberen" Hex-Code für den eigentlichen Parser ab, so daß dieser ohne unnötige Schwierigkeiten arbeiten kann (siehe Fig. 5). Bei diesem Hex- Code handelt es sich dann genau genommen um GIOP (General Inter ORB Protocol) Traces, da das IIOP die praktische Umsetzung des GIOP darstellt und die GIOP Daten eigentlich nur in TCP/IP-Pakete einpackt. Somit wäre es vorstellbar, auch Traces anderer Implementierungen des GIOP (die aber noch nicht existieren) mit diesem Tool aufzubereiten und auszuwerten.The first filter level is required because the IIOP traces are formatted differently in the job logs of different ORBs (see Fig. 3) and each contain a lot of additional information in text format (see Fig. 4). The corresponding job log must be available as a separate file. This filter then removes "all superfluous data" and stores the "clean" hex code obtained for the actual parser so that it can work without unnecessary difficulties (see FIG. 5). This hex code is then strictly GIOP (General Inter ORB Protocol) traces, since the IIOP represents the practical implementation of the GIOP and the GIOP data is actually only packed in TCP / IP packets. It would therefore be conceivable to prepare and evaluate traces of other implementations of the GIOP (which do not yet exist) with this tool.

Trace ParserTrace parser

Die zweite Stufe, der eigentliche Parser, versucht den Hex- Code in die einzelnen Bestandteile zu zerlegen und so weit wie möglich zu interpretieren. Hierzu verwendet er die in Fig. 6 dargestellte Tabelle. Da nicht alle notwendigen Informationen aus dem reinen Hex-Code gewonnen werden können, muß ein möglichst zufriedenstellenden Kompromiß durch die vorliegende Erfindung hergestellt werden.The second stage, the actual parser, tries to break down the hex code into the individual components and interpret it as much as possible. For this he uses the table shown in FIG. 6. Since not all the necessary information can be obtained from the pure hex code, a compromise which is as satisfactory as possible must be made by the present invention.

Nutzerschnittstelle (Benutzeroberfläche)User interface (user interface)

Da sowohl die Job Logs, als auch die IIOP-Pakete mitunter sehr umfangreich sein können, sollen nur die gewünschten Informationen ausgegeben werden (zum Beispiel Sicherheits-, oder Transaktionsdaten), um eine gewisse Übersichtlichkeit zu gewährleisten. Dabei ist es freigestellt, wie diese Daten genau dargestellt werden. Es wäre zum einen denkbar, das Ergebnis in einer Datei abzulegen, oder aber ein GUI (Graphical User Interface) zu implementieren, was die Nutzerfreundlichkeit stark erhöhen würde.Because both the job logs and the IIOP packages sometimes can be very extensive, only the ones you want  Information is output (e.g. security, or transaction data) to provide some clarity to ensure. It is optional how this data be represented exactly. On the one hand, it would be conceivable that Store the result in a file, or a GUI (Graphical User Interface) to implement what the Would greatly increase usability.

Der Vorfilter liest den Hex-Code aus der Tabelle und übergibt ihn an den Parser. Dieser erkennt die Paketbestandteile und ihre Bedeutung, wie in Fig. 6 dargestellt ist. Diese Ergebnisse werden entsprechend dem Nutzerwunsch gefiltert und mit Hilfe einer grafischen Benutzeroberfläche angezeigt.The pre-filter reads the hex code from the table and transfers it to the parser. This recognizes the package components and their meaning, as shown in Fig. 6. These results are filtered according to the user request and displayed using a graphical user interface.

Im nachfolgenden wird eine konkrete Implementierung des erfinderischen Tools (FITT Tool) zur Interpretation und Aufbereitung von GIOP/IIOP Nachrichten dargestellt.In the following a concrete implementation of the inventive tools (FITT tool) for interpretation and Preparation of GIOP / IIOP messages shown.

Das FITT Tool ist ein grafisches Werkzeug zur Interpretation und Aufbereitung von GIOP/IIOP Nachrichten. Diese müssen dem FITT in einer Datei in beliebiger Formatierung vorliegen.The FITT Tool is a graphic tool for interpretation and preparation of GIOP / IIOP messages. These must the FITT in a file in any format available.

Die FITT StrukturThe FITT structure

Die Struktur des FFIT Tools ist in Fig. 2 dargestellt. Das Tool filtert dabei in der ersten Stufe den reinen Hex Code der Nachrichtenpakete aus dem Trace File (Datei, die die Protokolldaten von Nachrichten enthält). Die nächste Stufe besteht aus dem schrittweisen Zerlegen der Nachrichten in ihre Bestandteile und Ablage der gewonnenen Informationen. Gewisse Bestandteile der GIOP/IIOP Pakete können aus dem reinen Hex Code heraus nicht geparst werden, da die zugehörigen Strukturen bzw. Typen (Verwaltungsdaten) nicht bekannt sind. Somit läßt sich nicht sagen, wie viele Parameter übergeben wurden. In der letzten Stufe werden die Pakete unter einer grafischen Oberfläche aufgelistet und können dann, je nach Nutzerwunsch, detailliert eingesehen werden.The structure of the FFIT tool is shown in Fig. 2. In the first stage, the tool filters the pure hex code of the message packets from the trace file (file that contains the log data of messages). The next stage consists of gradually breaking down the messages into their components and storing the information obtained. Certain components of the GIOP / IIOP packages cannot be parsed from the pure hex code, since the associated structures or types (administrative data) are not known. It is therefore not possible to say how many parameters were passed. In the last stage, the packages are listed under a graphical user interface and can then be viewed in detail, depending on the user request.

Ablauf des ToolsTool flow

Nach dem Start des FFIT Tools wird zuerst die grafische Oberfläche angezeigt, mit der Aufforderung eine Datei (mit GIOP/IIOP Traces) zu öffnen. Wurde eine Datei über den entsprechenden Dialog ausgewählt, versucht das Tool, die Filter für die bekannten Component Broker Formatierungen für Trace Files zu verwenden. Konnte dadurch kein gültiges GIOP- Paket erkannt werden, wird der Nutzer dazu aufgefordert, einen entsprechenden Filter für das Trace File anzugeben. Nun wird die Datei einmal bezüglich der enthaltenen Pakete geprüft und der jeweilige Nachrichtentyp mit seiner ID angezeigt. Möchte der Benutzer nun die einzelnen Bestandteile eines Pakets einsehen, kann er sich über die grafische Oberfläche in die "Tiefe" der Nachricht vorarbeiten.After starting the FFIT tool, the graphical Interface, with the prompt for a file (with GIOP / IIOP Traces) to open. Was a file on the selected the appropriate dialog, the tool tries the Filters for the well known Component Broker formatting for Use trace files. Could not result in a valid GIOP Package are recognized, the user is prompted to specify an appropriate filter for the trace file. Now the file is once regarding the contained packages checked and the respective message type with its ID displayed. Now the user wants the individual He can see the components of a package via the graphical interface in the "depth" of the message prepare.

Aufbau der FITT BestandteileStructure of the FITT components Die PackagesThe packages

Die Bestandteile des FFIT Tools werden in dem Java Package traceFormater abgelegt. Entsprechend der Hauptstruktur des Konzepts wurden für die einzelnen Bestandteile noch jeweils in ein eigenes Java Package vorgesehen, wie in Fig. 7 zu ersehen, um den Quellcode und die Java-Klassen zu organisieren. Die gesamten Dateien der Packages werden in der Datei "ffti.jar" abgelegt. Das Package traceFormater.util enthält dabei allgemeine Klassen, die keiner der Komponenten sinnvoll zugeordnet werden konnten. The components of the FFIT tool are stored in the Java package traceFormater. In accordance with the main structure of the concept, a separate Java package was provided for the individual components, as can be seen in FIG. 7, in order to organize the source code and the Java classes. The entire files of the packages are stored in the "ffti.jar" file. The package traceFormater.util contains general classes that could not be meaningfully assigned to any of the components.

Der Pre-FilterThe pre-filter

Der Pre-Filter hat die Aufgabe aus einer Datei beliebig formatierte GIOP/IIOP Traces herauszufiltern.The pre-filter can do anything from a file Filter out formatted GIOP / IIOP traces.

Funktion und KonzeptFunction and concept

Dazu wird dem Pre-Filter die Form der Formatierung der Nachrichtenpakete übergeben. Dies geschieht mit Hilfe einer Zeichenkette, die aus den Zeichen '.' (Punkt) für beliebige unwichtige Zeichen, 'l' (kleines L) für den Zeichenindex (l für lines) und 'x' für den eigentlichen Hex Code, wie auch in Fig. 8 dargestellt, besteht. Dieses Konzept des Filter- Strings hat den Vorteil, daß später auch andere oder neue Formatierungen in den Job Logs berücksichtigt werden können, die einfach durch den Nutzer eingegeben werden können.For this purpose, the form of the message packets is passed to the pre-filter. This is done with the help of a string consisting of the characters '.' (Dot) for any unimportant characters, 'l' (small L) for the character index (l for lines) and 'x' for the actual hex code, as also shown in FIG. 8. This concept of the filter string has the advantage that other or new formatting can later be taken into account in the job logs, which can simply be entered by the user.

Wurde eine Zeile entsprechend des Filters eingelesen, also nur die Zeichen für die ein 'l' oder 'x' steht, wird überprüft, ob es sich auch wirklich um eine Zeile mit Hex Code handelt oder um sonstige Informationen des Job Logs.If a line was read in according to the filter, that is only the characters for which an 'l' or 'x' stands checked if it really is a line with hex Code or other information in the job log.

Dies kann einfach durch die Überprüfung der vorkommenden Zeichen geschehen. Wenn es sich um Hex Code mit Zeichenindex handelt, können nur die Zeichen '0' bis '9' und 'a' bis 'f' vorkommen; ist dies nicht der Fall, ist diese Zeile unbrauchbar.This can be done simply by checking the occurring characters happen. If it is using hex code Character index, only the characters '0' to '9' and 'a' to 'f' occur; if not, it is Row unusable.

DatenablageData storage

Nach dieser Filter-Zeichenkette werden die entsprechenden Zeichen aus dem Job Log gelesen und der reine Hex Code in einer neuen Datei ("GIOP.TMP" als Standard) abgelegt. Wird für den Index der Wert 0 (Null) erkannt, beginnt ein neues Paket und es wird als Trennzeichen ein Leerzeichen (' ') in den Hex Strom eingefügt. Somit kann auch bei fehlerhaften Paketen ohne Längenangabe (oder mit fehlerhafter Längenangabe) immer wieder problemlos der Anfangspunkt des nächsten Pakets aufgefunden werden, und somit auch die Pakete nach einer fehlerhaften Nachricht noch geparst werden.After this filter string, the corresponding ones Read characters from the job log and the pure hex code in a new file ("GIOP.TMP" as standard). Becomes If the value 0 (zero) is recognized for the index, a new one begins Package and there will be a space ('') in as separator  inserted the hex stream. This means that even with faulty ones Parcels without length information (or with incorrect ones Length specification) again and again the starting point of the next package can be found, and thus also the Packets still parsed after a bad message become.

Aufbau und SchnittstellenStructure and interfaces

Der Pre-Filter besteht dabei aus nur einer Java Klasse (TracePreFilter) mit einer statischen Methode (cleanFile()), die eine allgemeine Exception werfen kann:
Der statischen Methode cleanFile
public static String cleanFile(String theFilter, File srcFile, File destFile) throws Exception
werden als Parameter die Zeichenkette für die Formatierung, das File mit den Traces und ein Ziel-File übergeben.
The pre-filter consists of only one Java class (TracePreFilter) with a static method (cleanFile ()) that can throw a general exception:
The static method cleanFile
public static String cleanFile (String theFilter, File srcFile, File destFile) throws Exception
the string for formatting, the file with the traces and a target file are transferred as parameters.

Dazu muß keine Instanz dieser Klasse angelegt werden, sondern es kann direkt die Funktionalität der Methode über den Aufruf TracePreFilter.cleanFile(...) genutzt werden.No instance of this class has to be created for this, but it can directly use the functionality of the method the call TracePreFilter.cleanFile (...) can be used.

Besonderheiten sind dabei einmal die Formatierungen für die Component Broker ORBs. Anstelle der gesamten Formatzeichenkette genügen kurze Stellvertreter, um nicht jedesmal den langen String übergeben zu müssen:
Special features are the formatting for the component broker ORBs. Instead of the entire format string, short substitutes are enough to avoid having to pass the long string each time:

"390" für alle Sprachen des S/390 ORBs,
"NTJ" für den NT ORB für Java und
"NTC" für den NT ORB für C++.
"390" for all languages of the S / 390 ORB,
"NTJ" for the NT ORB for Java and
"NTC" for the NT ORB for C ++.

Außerdem wird bei einem Null-Wert für das Ziel File die Datei "GIOP.TMP" im aktuellen Verzeichnis als Standard-Wert gesetzt.In addition, with a zero value for the target file the "GIOP.TMP" file in the current directory as the default value set.

Das bedeutet, dass die nächst höhere Schicht (hier: der Parser) nur wissen muß, in welcher Datei der Hex Code abgelegt wird, um das Ergebnis des Vorfilterns nutzen zu können. Dies sollte in der Regel kein Problem darstellen, da dieser den Prefilter selbst aufruft.This means that the next higher layer (here: the Parser) only needs to know in which file the hex code is filed to use the result of pre-filtering can. This shouldn't be a problem as a rule this calls the pre-filter itself.

Der Parser-Problem der unbekannten ParameterThe parser problem of the unknown parameters

Der Parser liest den abgelegten Hex Code aus der entsprechenden Datei ("GIOP.TMP") und interpretiert diesen schrittweise. Der Parser selbst erhält als Start-Parameter den Namen der Job Log Datei und ruft dann den Pre-Filter mit einem Null-Wert für die Ziel-Datei auf, so daß es hier zu keinen Problemen mit der Zieldatei kommen kann, da immer der Default-Wert genutzt wird.The parser reads the stored hex code from the corresponding file ("GIOP.TMP") and interprets it gradually. The parser itself receives the start parameter the name of the job log file and then calls the pre-filter a null value for the target file, so here it is too no problems with the target file because the Default value is used.

Funktionfunction

Der Ablauf des eigentlichen Parsens gestaltet sich dann folgendermaßen: Es wird für den jeweils erkannten Bestandteil ein Objekt angelegt, welches den zugeteilten Bereich selbständig parst. So muß sich der Programmierer nicht mehr darum kümmern. Das heißt aber, es muß für jeden Nachrichtentyp und jeden komplexeren Nachrichtenbestandteil eine eigene Klasse existieren.The actual parsing process then takes place as follows: It is for the recognized Part of an object created that the assigned Parsing area independently. So the programmer has to don't worry about it anymore. But that means it has to be for everyone Message type and any more complex message component own class exist.

Den Einstieg bietet dabei ein Objekt der Klasse GiopFile, welches dann Instanzen der Klasse GiopHeader angelegt, da zumindest ein GIOP Nachrichten Kopf vorkommen sollte. Je nach der Information des GiopHeaders werden dann spezifische GIOP Nachrichten Objekte (z. B. vom Typ RequestHeader) angelegt und gespeichert. Diese schaffen wieder weitere Objekte für deren eigene Bestandteile usw. Dabei wird jedem Objekt die Position des Hex Codes in der Datei übergeben, für den es zuständig ist und vom Objekt gespeichert. Dies ist wichtig, falls das Objekt später noch weitere Operationen über diesen Code vornehmen muß.An object of the GiopFile class offers entry which then creates instances of the GiopHeader class, because at least one GIOP news head should appear. Each after the information of the GiopHeader then specific GIOP message objects (e.g. of the type RequestHeader) created and saved. These create more again Objects for their own components etc.  The position of the hex code in the Pass the file for which it is responsible and from the object saved. This is important if the object is later must perform further operations using this code.

Daraufhin werden die Informationen der Klasse entsprechend eingelesen, eventuell übersetzt und in den Attributen der Klasse abgelegt. Zusätzlich zu diesen Informationen enthalten die Klassen die Möglichkeit, neue Objekte für komplexe "Unterbestandteile" (falls vorhanden) anzulegen. Dies führt zu einer hierarchischen Struktur, wie in Fig. 9 dargestellt ist.The information of the class is then read in accordingly, possibly translated and stored in the attributes of the class. In addition to this information, the classes contain the option of creating new objects for complex "sub-components" (if available). This leads to a hierarchical structure, as shown in FIG. 9.

Das Problem der unbekannten BestandteileThe problem of the unknown components

Wie oben schon erläutert wurde, können verschiedene Bestandteile einer GIOP/IIOP Nachricht nur auf Basis des reinen Hex Codes nicht geparst werden. Dies ist auf die offene Architektur dieses Protokolls bzw. des gesamten CORBA Modells zurückzuführen, welche dem Nutzer erlaubt, neue Datentypen bzw. Klassen zu definieren und über das Netz zu übertragen. Informationen bezüglich des Aufbaus dieser Teile liegen aber nicht im Protokoll, sondern nur einer CORBA Anwendung vor, was dieses Tool ja nicht werden sollte.As already explained above, different ones can be used Components of a GIOP / IIOP message only on the basis of the pure hex codes are not parsed. This is due to the open architecture of this protocol or the entire CORBA Model, which allows the user to create new ones Define data types or classes and over the network too transfer. Information regarding the structure of these parts but are not in the protocol, but only one CORBA Application before what this tool should not be.

Die eingesetzte LösungThe solution used

Da dieses Problem allein auf Ebene des Parsers also nicht gelöst werden kann, wird hier für unbekannte Bestandteile einfach ein Objekt des Typs GiopBody, oder ParmsBody, je nach Auftreten des unbekannten Bestandteils angelegt. Dieses enthält dann die Anfangsposition des unbekannten Bestandteils, sowie dessen Länge in Bytes (Octets). Diese Längeninformation kann dabei, je nach Art des unbekannten Teils folgendermaßen gewonnen werden:
Handelt es sich um eine Encapsulation (bei Profiles oder Contexts) wurde die Länge in den ersten vier Octets als long-Wert abgelegt und muß nur ausgelesen werden.
Since this problem cannot be solved at the parser level alone, an object of the GiopBody or ParmsBody type is simply created for unknown components, depending on the occurrence of the unknown component. This then contains the starting position of the unknown component and its length in bytes (octets). Depending on the type of unknown part, this length information can be obtained as follows:
If it is an encapsulation (for profiles or contexts), the length was stored as a long value in the first four octets and only needs to be read out.

Geht es aber um Parameter ist die Länge eigentlich unbekannt. Allerdings befinden sich die Parameter immer am Ende einer Nachricht. Da die Gesamtlänge der Nachricht bekannt ist und nach dem Parsen aller anderen Bestandteile auch die Anfangsposition der Parameter, läßt sich die Zahl der Bytes, die von Parametern belegt werden, sehr einfach über die Differenz der Werte berechnen. Der so registrierte, noch unbekannte Hex Code kann dadurch schnell aufgefunden werden, um später weiter bearbeitet zu werden. Die Verantwortung der weiteren Bearbeitung wird also einfach zu einem Teil an die Nutzerschnittstelle weitergereicht, die dann den Hex Code irgendwie darstellen muß.But when it comes to parameters, the length is actually unknown. However, the parameters are always on End of a message. Because the total length of the message is known and after parsing all other components also the starting position of the parameters, the number can be of the bytes occupied by parameters are very simple calculate over the difference of the values. The so registered As a result, unknown hex codes can be found quickly to be processed later. The So responsibility for further processing becomes simply in part to the user interface passed on, which then somehow represent the hex code got to.

Erste LösungsstufeFirst solution level

Als Standard-Darstellung wird dabei eine Tabelle eingesetzt, die aus dem Hex Code und den entsprechenden ASCII und EBCDIC Zeichen und einer entsprechenden Überschrift ("Context 4", oder "Profile 2", oder "Parm") besteht. Somit kann der Entwickler, der dieses Tools nutzt, die entsprechenden Bestandteile sehr schnell und sauber getrennt einsehen und eventuell selbst interpretieren. Dies stellt zumindest bezüglich der Übersichtlichkeit des Hex Codes eine Verbesserung gegenüber dem ursprünglichen Job Log dar, kann aber noch verbessert werden.A table is used as the standard representation, which consists of the hex code and the corresponding ASCII and EBCDIC characters and a corresponding heading ("Context 4 ", or "Profile 2 ", or "Parm"). This means that the developer who uses this tool can see the relevant components very quickly and neatly and possibly interpret them himself. At least in terms of clarity of the hex code, this represents an improvement over the original job log, but can still be improved.

Erweiterte LösungExtended solution

Deshalb wurde zumindest für die unbekannten Parameter (noch nicht für Profiles und Contexts) bei Requests und Replys in der entsprechenden Elternklasse dieser beiden Nachrichtentypen eine Methode parseParms () vorgesehen, die das Parsen einiger Basistypen für die Parameter unterstützt. Therefore, at least for the unknown parameters (still not for profiles and contexts) for requests and replies in the corresponding parent class of these two A parseParms () method is provided for message types supports parsing of some base types for the parameters.  

Um nun den Bereich unbekannten Hex Codes zu parsen, muß der Klasse mitgeteilt werden, welche Datentypen darin kodiert vorliegen. Dies geschieht über eine Liste, welche numerische (Integer) Werte für die Datentypen enthält. Unterstützt werden dabei vorerst die Typen, wie in Fig. 10 dargestellt ist.In order to parse the area of unknown hex codes, the class must be informed which data types are encoded in it. This is done via a list that contains numerical (integer) values for the data types. The types are initially supported, as shown in FIG. 10.

Die Liste mit den Integer Werten wird dann einem Objekt der Klasse ContextParser, oder einer abgeleiteten Klasse über die Methode setParmTypes () mitgeteilt. Um dies sinnvoll nutzen zu können bietet die Nutzerschnittstelle die Möglichkeit für die unbekannten Parameter aus einer Liste der vorgegebenen Datentypen die gewünschten anzugeben. Nach diesen wird der Hex Code dann geparst. Der Hex Code wird dann nach diesen Vorgaben geparst und die erhaltenen Informationen wieder in einer neuen Liste abgelegt. Diese kann über die Methode getParms () gewonnen werden. Da die Liste keine Typ-Informationen über die gespeicherten Daten enthält, muß wieder die erste Liste mit den Datentypen genutzt werden, da das erste Objekt der Ergebnisliste ja vom ersten Typ der Typenliste sein muß und das zweite Objekt vom zweiten Typ und so weiter.The list with the integer values then becomes an object of the Class ContextParser, or a derived class above the setParmTypes () method. To make this useful To be able to use the user interface offers the Possibility for the unknown parameters from a list to specify the desired data types. To the hex code is then parsed. The hex code will then parsed according to these specifications and the received ones Information stored again in a new list. This can be obtained using the getParms () method. Since the Do not list any type information about the stored data contains, the first list with the data types must again can be used because the first object in the results list is from first type of the type list and the second object from second type and so on.

Angenehmer zu handhaben bzw. lesbarer als die Integerwerte sind jedoch Strings mit den Namen des Datentyps. Deshalb kann auch eine Liste mit den Namen, für die unterstützten Typen von der Klasse ContextParser über getTypeList() erfragt werden, wobei das Element mit Index '5' den Namen für den Typ '5' enthält.Easier to use or more readable than the integer values however, are strings with the names of the data type. Therefore can also provide a list of names for those supported Types from the ContextParser class via getTypeList () be asked, the element with index '5' the name for type '5' contains.

Vermeidung von FehlinterpretationenAvoid misinterpretation

Da nun über die Typenliste für einen begrenzten Bereich des Hex Codes praktisch beliebige Datentypen vorgegeben werden können, sind Fehlinterpretationen fast schon garantiert. Besteht zum Beispiel die echte Parameterliste aus einem Long-Wert und einem String, wird aber nur ein String als Typ vom Benutzer angegeben, wird der Long-Wert als Länge des Strings interpretiert. Ist dieser Wert nun viel größer als die eigentliche Länge kommt es unweigerlich zu einer Überschreitung der Grenzen dieses Paketbestandteils.Since the type list for a limited area of the Hex codes practically any data types can be specified misinterpretations are almost guaranteed. For example, the real parameter list consists of one Long value and a string, but will only be a string as a type specified by the user, the long value is the length of the Interpreted strings. If this value is now much larger than the actual length inevitably comes to a The limits of this package component have been exceeded.

Um dies zu vermeiden oder zumindest zu erkennen, muß also ständig die Position innerhalb des Hex Codes kontrolliert und auf eine Überschreitung der Grenzen geprüft werden.To avoid or at least recognize this, it must constantly controls the position within the hex code and be checked for exceeding the limits.

Deshalb muß innerhalb der Methode parsParms() genau diese Überprüfung nach jeder Änderung der Position im Hex Code eingefügt werden. Tritt eine Verletzung der Grenzen auf, muß eine Exception geworfen werden, am besten mit dem Hinweis, daß wahrscheinlich falsche Parameter angegeben wurden.That is why the parsParms () method must do exactly this Check after every change of the position in the hex code be inserted. If there is a violation of the limits, must throwing an exception, preferably with the hint that wrong parameters were probably given.

Dieses ständige Prüfen verlangsamt zwar den Parsing-Prozeß, allerdings spielt diese kleine und relativ selten auftretende (eben nur bei nutzerdefinierten Parametern) Performance-Einbuße eine sehr geringe Rolle.This constant checking slows down the parsing process, however, this one plays small and relatively rare occurring (just only with user-defined parameters) Performance loss plays a very minor role.

DatenablageData storage

Die Datenablage läuft parallel zum Parsen und damit genauso hierarchisch wie dieses. Das heißt ein Objekt einer Nachrichten-Klasse parst seine typischen Bestandteile und legt das Ergebnis in seinen Attributen ab, so daß auch hier kein zusätzlicher Aufwand anfällt. Handelt es sich um komplexe Bestandteile, wird eine Instanz der Klasse angelegt, die für diesen Bestandteil zuständig ist, und ebenfalls als Attribut gespeichert. Handelt es sich um eine Folge gleichartiger, komplexer Bestandteile (z. B. um eine sequence <IOR<), werden die entsprechenden Objekte in einem, von der Java API angebotenen Container (hier: java.util.Vector) abgelegt. Der Container ist dabei wiederum ein Attribut der entsprechenden Klasse.The data storage runs parallel to the parsing and therefore exactly the same hierarchical like this. That is an object of one News class parses its typical components and stores the result in its attributes, so here too there is no additional effort. It is about complex components, becomes an instance of the class who is responsible for this component, and also saved as an attribute. Is it a Sequence of similar, complex components (e.g. by one sequence <IOR <), the corresponding objects in one, Containers offered by the Java API (here:  java.util.Vector). The container is there again an attribute of the corresponding class.

Damit ergibt sich die in Fig. 11 gezeigte Datenstruktur (die weiteren - tieferen - Ebenen können dem Anhang entnommen werden).This results in the data structure shown in FIG. 11 (the further - lower - levels can be found in the appendix).

Aufbau und SchnittstellenStructure and interfaces

Den Klassen des Parsers, ist fast durchgängig gemeinsam, daß es genügt, eine zugehörige Instanz anzulegen, um die Klasse zum parsen zu bewegen. Das heißt die Methode zum Parsen des entsprechenden Codes wird schon im Konstruktor aufgerufen. Somit sind für die weitere Arbeit mit den Objekten vor allem noch die Getter- und Setter-Methoden interessant, um die gewonnenen Attributwerte auslesen bzw. manipulieren zu können. Dies gilt allerdings nur für die Konstruktoren mit Parametern, da ohne die entsprechenden Werte (z. B. welche Datei an welcher Stelle) ein Parsen nicht möglich ist. Es ist also über den Default-Konstruktor (keine Parameter) auch möglich ein entsprechendes Objekt anzulegen, ohne dieses sofort nutzen zu müssen. Wird jedoch der Konstruktor mit den Parametern verwendet, genügt es eine Instanz der Klasse GiopFile mit den entsprechenden Parameter-Werten anzulegen, um den Parsing-Vorgang zu starten und damit den gesamten Parser zu nutzen. Auf Grund der Hierarchischen Datenablage, kann nach dem Parsen auf die nächsten Schichten über den Einstiegspunkt des GiopFile-Objekts zugegriffen werden. Über die Getter-Methoden dieser und der erhaltenen Klassen können alle beliebigen Daten erreicht, ausgelesen und eventuell über die Setter-Methoden verändert werden.The classes of the Parser have almost in common that it is sufficient to create an associated instance to the class to move to parse. That is the method for parsing the corresponding codes are already called in the constructor. So above all for further work with the objects still the getter and setter methods interesting to the Read out or manipulate the attribute values obtained can. However, this only applies to the constructors Parameters, since without the corresponding values (e.g. which ones File where) parsing is not possible. It is also about the default constructor (no parameters) possible to create a corresponding object without this to use immediately. However, if the constructor with the Using parameters, an instance of the class is sufficient Create GiopFile with the corresponding parameter values, to start the parsing process and thus the entire To use parser. Due to the hierarchical data storage, can pars to the next layers after parsing accessed via the entry point of the GiopFile object become. About the getter methods of this and the one obtained Classes can be reached, read out any data and possibly be changed using the setter methods.

Nutzerschnittstelle als Post FilterUser interface as a post filter

Die Nutzerschnittstelle dient zum einen zur Anzeige der Pakete eines Job Logs und zum anderen als weiterer Filter. D. h. es kann ausgewählt werden, welche Informationen, wie detailliert ausgegeben werden sollen, so daß der Nutzer interaktiv auf Basis der schon eingesehenen Nachrichten noch weitere Bereiche auswählen kann. Somit ist der Anwender nicht wie bei einem "echten" Post-Filter auf seine einmalige Auswahl festgelegt.The user interface is used on the one hand to display the Packages of a job log and another as another filter. That is, it can be selected which information, how should be output in detail so that the user interactive based on the news already viewed can select other areas. So the user is not like a "real" post filter on its unique Selection set.

Das HauptfensterThe main window

Das Hauptfenster besteht hauptsächlich aus einer Baumansicht, in der die einzelnen Pakete und ihre Bestandteile dargestellt werden, sowie einem Textfeld in der zusätzliche Informationen zu den Nachrichten und deren Inhalte angezeigt werden, je nach selektiertem Knoten der Baumstruktur. Darüber hinaus dient ein einfaches Menü zum Aufruf des Standard-Dialogs zum Auswählen einer Datei und zum Beenden der Anwendung.The main window mainly consists of one Tree view in which the individual packages and its components are shown, as well as a text field in the additional information about the news and the contents of which are displayed, depending on the selected node the tree structure. There is also a simple menu to call the standard dialog for selecting a file and to exit the application.

Im Grundzustand ist das Textfeld leer und der Baum enthält ein Element mit der Beschriftung "please open file", um den Nutzer auf den Wartezustand des Tools aufmerksam zu machen.In the basic state, the text field is empty and the tree contains an element labeled "please open file" to indicate the Alert users to the waiting state of the tool.

Fig. 12 zeigt die fertige Oberfläche. Fig. 12 shows the finished surface.

Wurde eine Datei ausgewählt, wird die Baumstruktur mit den gefundenen Nachrichtenpaketen und ihren Bestandteilen aufgefüllt. Dabei werden bei Requests oder Replys die unbekannten Parameter als "Parms Unknown" angezeigt. Wird ein Blatt markiert, werden weitere Details im Textfeld ausgegeben. Werden unbekannte Parameter markiert, wird eine Tabelle mit dem Hex Code und der ASCII und EBCDIC Interpretation im Textfeld angezeigt, so daß die Parameter trotz des unbekannten Aufbaus eingesehen werden können. If a file was selected, the tree structure with the found message packages and their components replenished. In the case of requests or replies, the unknown parameter displayed as "Parms Unknown". Becomes Marked a sheet, more details are in the text box spent. If unknown parameters are marked, a Table with the hex code and the ASCII and EBCDIC Interpretation is displayed in the text box so that the parameters can be viewed despite the unknown structure.  

Zusätzlich wird auch noch eine Aufforderung an den Nutzer ausgeben, das Blatt "Parms Unknown" der Baumstruktur mit der rechten Maustaste anzuklicken, um die Datentypen der Parameter anzugeben ("To specify the parms: click with the right mouse button on "Parms Unknown" in the tree structure . . .").In addition, there is also a request to the user issue the sheet "Parms Unknown" of the tree structure with the right click to select the data types of the To specify the parms: click with the right mouse button on "Parms Unknown" in the tree structure. . . ").

Der Dialog zur TypenbestimmungThe dialog for type determination

Hat der Nutzer genau dies getan, wird der Dialog zur Typenbestimmung geöffnet. Dieser besteht aus zwei Listenfeldern: Das linke enthält die unterstützten Datentypen, das rechte die davon ausgewählten, wie auch in Fig. 13 zu sehen. Die Auswahl bzw. das Zurücknehmen erfolgt über die Buttons "Add" und "Remove". Da der Nutzer bei unbekannten Parametern den entsprechenden Hex Code mit zugehörigem ASCII und EBCDIC Code einsehen kann, besteht die Möglichkeit die Typen der enthaltenen Daten zu erkennen oder zumindest abzuschätzen und dementsprechend versuchsweise auszuwählen. Ist die Auswahl beendet, kann der Dialog über die Buttons "OK" zur Bestätigung, oder "Cancel" zum Verwerfen der Auswahl, geschlossen werden.If the user has done exactly this, the dialog for type determination is opened. This consists of two list fields: The left contains the supported data types, the right the selected ones, as can also be seen in Fig. 13. The selection or withdrawal takes place via the buttons "Add" and "Remove". Since the user can see the corresponding hex code with associated ASCII and EBCDIC code for unknown parameters, it is possible to recognize or at least estimate the types of data contained and to select them accordingly on a trial basis. When the selection is finished, the dialog can be closed with the buttons "OK" to confirm or "Cancel" to discard the selection.

Wurden die Parametertypen mit "OK" bestätigt, wird in der Baumstruktur "Unknown Parms" durch "User specified parms" ersetzt. Die Werte von einfachen Datentypen werden nach dem Schema wie in Fig. 14 im Textfeld ausgegeben, während für die komplexeren Datentypen (z. B. IOR) eine neue Ebene in der Baumstruktur hinzugefügt wird, wie in Fig. 12 bei "Reply (3)" zu sehen ist.If the parameter types were confirmed with "OK", "Unknown Parms" is replaced by "User specified parms" in the tree structure. The values of simple data types are output according to the scheme as in FIG. 14 in the text field, while for the more complex data types (e.g. IOR) a new level is added in the tree structure, as in FIG. 12 in "Reply ( 3 ) " you can see.

Sollte das Ergebnis noch nicht den gewünschten Erfolg gebracht haben (sondern z. B. eine Fehlermeldung), können die Typen beliebig oft neu angegeben werden, indem nun aber "User specified parms" in der Baumstruktur wieder rechts angeklickt wird.If the result is not yet the desired success brought (for example, an error message), the Types can be re-specified as often as required, but now  "User specified parms" in the tree structure on the right again is clicked.

Aufbau und Schnittstellen der KlassenStructure and interfaces of the classes Die Klasse des Hauptfensters-TraceFormaterThe class of the main window TraceFormater

Die Klasse TraceFormater für das Hauptfenster, enthält als einzige Klasse dieses Tools eine main-Methode und kann bzw. muß daher zum Starten des Tools verwendet werden. Dazu muß das ffit.jar File zum CLASSPATH hinzugefügt werden und das Programm über den Aufruf
The TraceFormater class for the main window contains the only class of this tool that contains a main method and can or must therefore be used to start the tool. To do this, the ffit.jar file must be added to the CLASSPATH and the program via the call

java traceFormater.gui.TraceFormater
java traceFormater.gui.TraceFormater

gestartet werden. Unter Windows NT bzw. Windows 9x wird dies von der Batch-Datei RUN. BAT übernommen.be started. In Windows NT or Windows 9x this is done by the batch file RUN. BAT taken over.

Die weiteren Bestandteile dieser Klasse können Fig. 15 entnommen werden.The further components of this class can be seen in FIG. 15.

Die Dialog-Klasse zur Festlegung der ParametertypenThe dialog class for defining the parameter types

Diese Klasse liefert die Integer-Werte für die Datentypen der Parameter in einem Vector. Dazu muß eine neue Instanz der Klasse ParmsDialog angelegt und sichtbar gesetzt werden (Methode show()). Da es sich um einen modalen Dialog handelt, wird der Programmfluß des aufrufenden Programmteils so lange gestoppt, bis der Dialog wieder geschlossen wurde. Das heißt es kann nach dem Aufruf von show () einfach abgefragt werden, ob der Dialog mit "OK" geschlossen wurde. Ist dies der Fall kann die Liste der ausgewählten Parameter über getTypes() erfragt werden. Diese können dann einem ContextParser Objekt übergeben werden, so daß dieses seine Parameter nach diesen Vorgaben parsen kann. Das ganze Verfahren ist noch einmal in einem Beispiel in Fig. 16 zusammengefaßt.This class supplies the integer values for the data types of the parameters in a vector. To do this, a new instance of the ParmsDialog class must be created and set visible (method show ()). Since this is a modal dialog, the program flow of the calling program part is stopped until the dialog is closed again. That means after calling show () you can simply ask whether the dialog was closed with "OK". If this is the case, the list of the selected parameters can be queried via getTypes (). These can then be passed to a ContextParser object so that it can parse its parameters according to these specifications. The entire process is summarized again in an example in FIG. 16.

Erweiterung des ToolsExtension of the tool

Die einzige Möglichkeit die Parametertypen und sonstigen Bestandteile ohne Nutzereingriff in Erfahrung zu bringen und dementsprechend bei der Interpretation des Hex Codes umsetzen zu können, wäre die Abfrage des Interface Repositories. Dieses gehört zu den Diensten die ein ORB genau zu diesem Zweck zur Verfügung stellt.The only possibility the parameter types and others Find components without user intervention and accordingly when interpreting the hex code To be able to implement it would be to query the interface Repositories. This is one of the services ORB provides exactly for this purpose.

Da die wichtigsten Bestandteile des Component Broker ORBs für System/390 inzwischen problemlos laufen, könnte ein entsprechendes Formatierungs-Tool dann eben doch als CORBA Anwendung implementiert werden. Dadurch kann jedoch nicht mehr unabhängig von dem problembehafteten System gearbeitet werden, da auf das entsprechende Interface Repository zugegriffen werden muß.As the main components of the Component Broker ORB for System / 390 now run smoothly, one could appropriate formatting tool then as CORBA application to be implemented. However, this can no longer independent of the problematic system be worked on because of the corresponding interface Repository needs to be accessed.

Die Zukunft des Internet Inter ORB ProtocolsThe future of the Internet Inter ORB Protocol

Da das GIOP/IIOP den Umgang mit beliebigen und beliebig komplexen Objekten unterstützt, bietet sich der Einsatz auch in der Welt des WWW (World Wide Web) an. So könnten komplexe Multimedia-Objekte oder auch sicherheitskritische Daten (mit Security Context) über das IIOP viel einfacher als über das HTTP (Hyper Text Transfer Protocol) übertragen werden. Dies ist ein wichtiger Faktor in einer Zeit der wachsenden Multimedia- und eßusiness-Anwendungen und könnte für eine weitere Durchsetzung des IIOP im Internetbereich sorgen.Since the GIOP / IIOP dealing with any and any support complex objects, use is also possible in the world of the WWW (World Wide Web). So could complex multimedia objects or security-critical ones Data (with security context) over the IIOP much easier than transmitted over the HTTP (Hyper Text Transfer Protocol) become. This is an important factor at a time of growing multimedia and e-business applications and could for a further enforcement of the IIOP in the internet area to care.

Claims (28)

1. Verfahren zur Fehlersuche mittels der Darstellung der Kommunikation in verteilten Anwendungen, wobei eine verteilte Anwendung zumindest aus einem Anwendungsteil besteht, der auf einem Sendersystem installiert ist, und zumindest einem weiteren Anwendungsteil besteht, der auf einem Empfängersystem installiert ist, und beide Anwendungsteile über ein gemeinsames Protokoll miteinander kommunizieren, wobei Sender- und Empfängerfunktion während der Kommunikation austauschbar sind, wobei die Protokollinformationen für den Kommunikationsaustausch zwischen Sender und Empfänger in einer Datei abgelegt werden, gekennzeichnet durch folgende Schritte:
  • a) Überführen der Protokollinformationen in ein generisches Format
  • b) Zerlegen der Information nach Schritt a) in Verwaltungs- und Nutzdaten und Interpretieren der erhaltenen Daten soweit möglich
  • c) Ablegen der Ergebnisse nach Schritt b) auf einem Speichermedium
  • d) Darstellen des Ergebnisses nach Schritt c) in einer Benutzeroberfläche
1. Method for troubleshooting by means of the representation of the communication in distributed applications, wherein a distributed application consists of at least one application part that is installed on a transmitter system and at least one other application part that is installed on a receiver system, and both application parts via one communicate common protocol with each other, the transmitter and receiver functions being interchangeable during communication, the protocol information for the communication exchange between the transmitter and receiver being stored in a file, characterized by the following steps:
  • a) converting the log information into a generic format
  • b) decomposing the information after step a) into administrative and user data and interpreting the data obtained as far as possible
  • c) storing the results after step b) on a storage medium
  • d) displaying the result after step c) in a user interface
2. Verfahren nach Anspruch 1 gekennzeichnet durch folgenden weiteren Schritt:
  • a) Darstellen der nicht interpretierbaren Daten nach einem Standard-Format.
2. The method according to claim 1 characterized by the following further step:
  • a) Presentation of the non-interpretable data according to a standard format.
3. Verfahren nach Anspruch 1 dadurch gekennzeichnet, dass die verteilte Anwendung über eine Implementierung des General Inter ORB Protocol (GIOP) kommuniziert.3. The method according to claim 1, characterized in that the distributed application through an implementation of the General Inter ORB Protocol (GIOP) communicates. 4. Verfahren nach Anspruch 1 dadurch gekennzeichnet, dass beim Überführen der Informationen nach Schritt a) die nicht notwendigen Informationen herausgefiltert werden und verbleibenden Informationen als reiner GIOP Hexcode dargestellt werden.4. The method according to claim 1, characterized in that when transferring the information according to step a) unnecessary information is filtered out and remaining information as a pure GIOP hex code being represented. 5. Verfahren nach Anspruch 4 dadurch gekennzeichnet, dass die nicht notwendigen Informationen Formatierungszeichen, Zeichen-Indizes oder ORB generierte Zusatzinformationen betreffen, wobei die Formatierung der Protokolldaten bekannt sein muß.5. The method according to claim 4, characterized in that the unnecessary information Formatting characters, character indices or ORB generated additional information concern, the Formatting of the log data must be known. 6. Verfahren nach Anspruch 4 dadurch gekennzeichnet, dass die Protokolldaten unterschiedlich formatiert sein können.6. The method according to claim 4, characterized in that the log data must be formatted differently can. 7. Verfahren nach Anspruch 4 dadurch gekennzeichnet, dass der reine GIOP Hexcode in einer neuen Datei abgelegt wird.7. The method according to claim 4, characterized in that the pure GIOP hexcode is stored in a new file becomes. 8. Verfahren nach Anspruch 4 dadurch gekennzeichnet, dass der reine GIOP Hexcode mit Trennzeichen zwischen den jeweiligen Nachrichten (Pakete) in einer neuen Datei abgelegt wird.8. The method according to claim 4, characterized in that the pure GIOP hexcode with separator between the respective messages (packages) in a new file is filed. 9. Verfahren nach Anspruch 1 dadurch gekennzeichnet, dass das Zerlegen nach dem GIOP Format in GIOP Nachrichtenkopf und GIOP Nachricht erfolgt.9. The method according to claim 1, characterized in that disassembling according to the GIOP format in GIOP Message header and GIOP message is done. 10. Verfahren nach Anspruch 9 gekennzeichnet durch folgende Schritte:
  • a) Einlesen des GIOP Nachrichtenkopfes
  • b) Interpretieren der Bestandteile des Kopfes anhand einer Tabelle
  • c) Auswerten der Informationen nach Schritt bb) zur Interpretation des folgenden Bestandteils
  • d) Durchführen der Schritte bb)-cc) bis alle Bestandteile des GIOP Pakets ausgewertet sind.
10. The method according to claim 9 characterized by the following steps:
  • a) Reading the GIOP message header
  • b) Interpret the components of the head using a table
  • c) Evaluating the information after step bb) to interpret the following component
  • d) Perform steps bb) -cc) until all components of the GIOP package have been evaluated.
11. Verfahren nach Schritt 10 dadurch gekennzeichnet, dass die Position und Länge der nicht interpretierbaren Bestandteile abgespeichert werden.11. The method according to step 10, characterized in that the position and length of the components that cannot be interpreted are stored. 12. Verfahren nach Anspruch 10 dadurch gekennzeichnet, dass alle Auswertungsergebnisse nach Schritt aa)-dd) dargestellt werden.12. The method according to claim 10, characterized in that all evaluation results after step aa) -dd) being represented. 13. Verfahren nach Anspruch 10 dadurch gekennzeichnet, dass alle Auswertungsergebnisse in einer Benutzeroberfläche mit einer Selektionsfunktion für die Informationstiefe für jede einzelne Nachricht dargestellt werden.13. The method according to claim 10, characterized in that all evaluation results in one user interface with a selection function for the depth of information for every single message. 14. Verfahren nach Anspruch 13 dadurch gekennzeichnet, dass die Daten der jeweiligen ausgewählten Nachricht in einem eigenen Ausgabebereich in der Benutzeroberfläche dargestellt werden.14. The method according to claim 13, characterized in that the data of the selected message in a separate output area in the user interface being represented. 15. Verfahren nach Anspruch 13 dadurch gekennzeichnet, dass die Benutzeroberfläche die Nachrichten einer Hex-Datei in Form einer Baumstruktur darstellt.15. The method according to claim 13, characterized in that the user interface the messages of a hex file in the form of a tree structure. 16. Verfahren nach Anspruch 15 dadurch gekennzeichnet, dass die grafische Benutzeroberfläche die Nachrichten entsprechend ihrer Reihenfolge in der Hex-Datei in einer Baumstruktur darstellt. 16. The method according to claim 15, characterized in that the graphical user interface the news according to their order in the hex file in represents a tree structure.   17. Verfahren nach Anspruch 13 dadurch gekennzeichnet, dass der nicht interpretierbare Teil der Nachricht als unbekannt in der Benutzeroberfläche ausgewiesen wird.17. The method according to claim 13, characterized in that the non-interpretable part of the message as unknown in the user interface. 18. Verfahren nach Anspruch 17 dadurch gekennzeichnet, dass der nicht interpretierbare Teil einer Nachricht als unbekannt ausgewiesen wird und im Falle der Selektierung als Tabelle mit dem Hex-Code und der dazugehörigen ASCII und EBCDIC Interpretation im Ausgabebereich der Benutzeroberfläche dargestellt wird.18. The method according to claim 17, characterized in that the non-interpretable part of a message as is reported unknown and in the case of Selection as a table with the hex code and associated ASCII and EBCDIC interpretation in Output area of the user interface is displayed. 19. Verfahren nach Anspruch 17 dadurch gekennzeichnet, dass die Datentypen, die im Hex-Code des nicht interpretierbaren Teils der Nachricht enthalten sind, nachträglich zugeordnet werden können.19. The method according to claim 17, characterized in that the data types that are not in the hex code of the interpretable part of the message are included can be assigned subsequently. 20. Verfahren nach Anspruch 19 dadurch gekennzeichnet, dass die nachträgliche Angabe der Datentypen über ein Benutzer-Dialog erfolgt.20. The method according to claim 19, characterized in that the subsequent specification of the data types via User dialogue takes place. 21. Verfahren nach Anspruch 19 dadurch gekennzeichnet, dass der ermittelte Datentyp entsprechend seiner Zuordnung in die Baumstruktur eingefügt wird.21. The method according to claim 19, characterized in that the determined data type according to its assignment is inserted into the tree structure. 22. Verfahren nach Anspruch 20 dadurch gekennzeichnet, dass der als unbekannt ausgewiesene Teil der Nachricht in der Darstellung der Benutzeroberfläche in benutzerdefiniert umbenannt wird und die Hex-Code- Darstellung für diesen Teil der Nachricht bei der Selektion durch die gewonnenen Werte dargestellt wird.22. The method according to claim 20, characterized in that the part of the message identified as unknown in the representation of the user interface in custom renamed and the hex code Representation for this part of the message at Selection is represented by the values obtained. 23. Verfahren nach Anspruch 1 dadurch gekennzeichnet, dass die verteilte Anwendung auf CORBA-Architektur basiert. 23. The method according to claim 1, characterized in that the distributed application is based on CORBA architecture.   24. Vorrichtung zur Fehlersuche in einer verteilten Anwendung enthaltend zumindest:
  • a) ein Speichermittel mit zumindest einer Datei mit Protokollinformationen einer verteilten Anwendung
  • b) ein Tool zur Behandlung der Protokolldaten nach den Verfahrensschritten 1-23.
24. Device for troubleshooting in a distributed application, comprising at least:
  • a) a storage means with at least one file with protocol information of a distributed application
  • b) a tool for handling the log data according to process steps 1-23.
25. Vorrichtung nach Anspruch 24 dadurch gekennzeichnet, dass das Speichermittel und das Tool Teil eines Datenverarbeitungsgeräts sind.25. The device according to claim 24, characterized in that the storage medium and the tool are part of one Data processing devices are. 26. Vorrichtung nach Anspruch 24 dadurch gekennzeichnet, dass das Speichermittel und das Tool in verschiedenen Datenverarbeitungsgeräten angeordnet sind, die über ein Kommunikationsmittel miteinander verbunden sind.26. The device according to claim 24, characterized in that the storage medium and the tool in different Data processing devices are arranged over a Means of communication are interconnected. 27. Vorrichtung nach Anspruch 26 dadurch gekennzeichnet, dass das Kommunikationsmittel das Intranet oder Internet ist.27. The device according to claim 26, characterized in that the means of communication is the intranet or Internet is. 28. Computerprogrammprodukt, das im internen Speicher eines digitalen Rechner gespeichert ist, enthaltend Teile von Softwarecode zur Ausführung des Verfahrens nach Anspruch 1-23, wenn das Produkt auf dem Rechner ausgeführt wird.28. Computer program product stored in the internal memory of a digital calculator is stored, containing parts of Software code for executing the method according to Claims 1-23 when the product is on the computer is performed.
DE19936118A 1999-07-31 1999-07-31 Computer software based errors search method for distributed applications, involves transferring protocols in generic format and then separating the information into essential and administrative data Withdrawn DE19936118A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE19936118A DE19936118A1 (en) 1999-07-31 1999-07-31 Computer software based errors search method for distributed applications, involves transferring protocols in generic format and then separating the information into essential and administrative data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE19936118A DE19936118A1 (en) 1999-07-31 1999-07-31 Computer software based errors search method for distributed applications, involves transferring protocols in generic format and then separating the information into essential and administrative data

Publications (1)

Publication Number Publication Date
DE19936118A1 true DE19936118A1 (en) 2001-02-01

Family

ID=7916765

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19936118A Withdrawn DE19936118A1 (en) 1999-07-31 1999-07-31 Computer software based errors search method for distributed applications, involves transferring protocols in generic format and then separating the information into essential and administrative data

Country Status (1)

Country Link
DE (1) DE19936118A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001079991A3 (en) * 2000-04-13 2002-05-02 Deutsche Telekom Ag Method for analysing transmitted protocol data units

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001079991A3 (en) * 2000-04-13 2002-05-02 Deutsche Telekom Ag Method for analysing transmitted protocol data units
US7107492B2 (en) 2000-04-13 2006-09-12 Deutsche Telekom Ag Method for analyzing transmitted protocol data units

Similar Documents

Publication Publication Date Title
DE69317982T2 (en) Method and system for real-time data collection and display device
DE69031538T2 (en) System and method for collecting software application events
DE69712560T2 (en) System for configuring pre-configured programs on networked open systems in a distributed environment and method for implementing this system
DE60126016T2 (en) Server-side control objects for processing customer-side user interface elements
DE69425470T2 (en) Procedure for event reporting in an operating system
DE69832354T2 (en) Network management framework
EP0674784B1 (en) Process for testing at least one class of an object-oriented program on a computer
DE60224926T2 (en) Method and computer system for handling incremental data in client-server communication.
DE69727933T2 (en) METHOD AND DEVICE FOR DESCRIPTING A DEFINED INTERFACE, OPERATION AND DATA TYPE IN AN INTERFACE DEFINITION LANGUAGE
EP1597675A1 (en) System and method for managing and exchanging the data of a technical project, technical installation and individual installation components
DE10348591A1 (en) Automatically identifying a program error in a computer program
DE10161064A1 (en) System and method for communication between software applications, in particular MES applications
DE3842289C2 (en) Process for developing programs for a distributed data processing system
DE10128883A1 (en) Distribution of application data in distributed data base that use different formats
DE602005005924T2 (en) Uniform data format for measuring instruments
DE69907714T2 (en) COMPONENT-BASED SOURCE CODE GENERATOR METHOD
EP1202167B1 (en) Method for model based object oriented development of external interfaces for distributed software systems
DE19936118A1 (en) Computer software based errors search method for distributed applications, involves transferring protocols in generic format and then separating the information into essential and administrative data
DE10230883A1 (en) Automatic evaluation of properties of a system based on process logs
EP1187009A2 (en) Method for creation of informationmodels
EP0708941B1 (en) Process for testing an object-oriented programme
EP1691275B1 (en) Method and apparatus for computer-assisted creation of a graphical user interface
EP1621945B1 (en) Ensuring data consistency in an automation system
EP1044409B1 (en) Program flow method and method for expanding a program component system
DE10041082B4 (en) Method of recording communication between a client and a server

Legal Events

Date Code Title Description
8139 Disposal/non-payment of the annual fee