BACKGROUND OF THE INVENTION1. Technical Field
The present invention relates generally to an improved data processing system and in particular to a method and apparatus for processing data. Still more particularly, the present invention relates to a method, apparatus, and computer instructions for optimizing Web services binding.
2. Description of Related Art
The Internet is a global network of computers and networks joined together by means of gateways that handle data transfer and the conversion of messages from a protocol of the sending network to a protocol used by the receiving network. On the Internet, any computer may communicate with any other computer with information traveling over the Internet through a variety of languages, also referred to as protocols. The set of protocols used on the Internet is called transmission control protocol/Internet Protocol (TCP/IP).
The Internet has revolutionized both communications and commerce, as well as, being a source of both information and entertainment. For many users, email is a widely used format to communicate over the Internet. Additionally, the Internet is also used for real-time voice conversations.
With respect to transferring data over the Internet, the World Wide Web environment is used. This environment is also referred to simply as “the Web”. The Web is a mechanism used to access information over the Internet. In the Web environment, servers and clients effect data transaction using the hypertext transfer protocol (HTTP), a known protocol for handling the transfer of various data files, such as text files, graphic images, animation files, audio files, and video files.
On the Web, the information in various data files is formatted for presentation to a user by a standard page description language, the hypertext markup language (HTML). Documents using HTML are also referred to as Web pages. Web pages are connected to each other through links or hyperlinks. These links allow for a connection or link to other Web resources identified by a universal resource identifier (URI), such as a uniform resource locator (URL).
A browser is a program used to look at and interact with all of the information on the Web. A browser is able to display Web pages and to traverse links to other Web pages. Resources, such as Web pages, are retrieved by a browser, which is capable of submitting a request for the resource. This request typically includes an identifier, such as, for example, a URL. As used herein, a browser is an application used to navigate or view information or data in any distributed database, such as the Internet or the World Wide Web. A user may enter a domain name through a graphical user interface (GUI) for the browser to access a source of content. The domain name is automatically converted to the IP address by a domain name system (DNS), which is a service that translates the symbolic name entered by the user into an IP address by looking up the domain name in a database.
The browser includes a user interface, which is a GUI that allows the user to interface or communicate with another browser. This interface provides for selection of various functions through menus and allows for navigation. For example, a menu may allow a user to perform various functions, such as saving a file, opening a new window, displaying a history, and entering a URL.
Web services are provided for use by various clients. A Web service is a programmable application, which is accessible as a component via standard Web protocols. A Web service typically uses standard protocols, such as HTTP, Extensible markup language (XML), and SOAP. These services may work through existing proxies and firewalls.
Web services include Web based applications that dynamically interact with other Web applications using open standards. These standards include universal description discovery and integration (UDDI) and SOAP. UDDI is a universal business registry or catalog of Web services that contains white pages with addresses and contacts, yellow pages containing industry classification, and green pages, containing description of services. SOAP is a message-based protocol based on XML for accessing services on the Web. Using these types and other standards, applications typically run behind the scenes with one program talking to another program.
Yellow pages and the other registries are the current mechanism used to publish, discover, and bind Web services. Registries typically contain data structures and other information used to describe Web services and Web service providers.
These programs typically communicate from server to server. With the use of open standards by Web services, a source may supply clients with client side software to add to the applications regardless of the platform. Dynamic Web service clients use a yellow pages directory service, typically UDDI, to find Web services description language (WSDL) bindings for services that the clients desire to use. WSDL is an XML based representation that describes the capabilities of the Web service. These descriptions are typically housed in a UDDI directory, and the combination helps promote the use of Web services on the Internet. Yellow pages and the other registries are the current mechanism used to publish, discover, and bind Web services. Registries typically contain data structures and other information used to describe Web services and Web service providers.
As long as the binding information obtained from the directory services is up to date and the service that the client is interested in is actually online, the use of this yellow page directory service provides useful information to the client to access Web services. Unfortunately, a client has no mechanism to determine whether these conditions are true. Currently, clients assume a relatively static environment and service providers are expected to keep finding information exploited to these types of directories up to date. However, when the information is incorrect, the usability of these types of directories decreases.
Therefore, it would be advantageous to have an improved method, apparatus, and computer instructions for providing binding or access to Web services.
SUMMARY OF THE INVENTIONThe present invention provides a method, apparatus, and computer instructions for optimizing Web services binding. A request is received from a client for Web services binding information for a Web service. The current availability of the Web service requested by the client is identified in response to receiving the request to form an identified current availability. An indication of the identified current availability of the Web service is sent to the client in response to identifying the current availability of the Web service requested by the client. The client uses the indication of the identified current availability to selectively use the Web service.
BRIEF DESCRIPTION OF THE DRAWINGSThe novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
FIG. 1 is a pictorial representation of a network of data processing systems in which the present invention may be implemented;
FIG. 2 is a block diagram of a data processing system that may be implemented as a server in accordance with a preferred embodiment of the present invention;
FIG. 3 is a block diagram illustrating a data processing system in which the present invention may be implemented;
FIG. 4 is a diagram illustrating components used in providing presence-enhanced Web service binding in accordance with the preferred embodiment of the present invention;
FIG. 5 is a diagram illustrating components in a presence-enhanced Web service binding system in accordance with the preferred embodiment of the present invention;
FIG. 6 is a diagram illustrating components in providing presence information in accordance with the preferred embodiment of the present invention;
FIG. 7 is a flowchart of a process for binding to a Web service in accordance with the preferred embodiment of the present invention;
FIG. 8 is a flowchart of a process for providing presence information in accordance with the preferred embodiment of the present invention;
FIG. 9 is a flowchart of a process for providing presence information to a presence network in accordance with the preferred embodiment of the present invention;
FIG. 10 is a flowchart of a process for providing presence information to a registry in accordance with the preferred embodiment of the present invention; and
FIG. 11 is a flowchart of a process for providing binding and availability of information to a service client in accordance with the preferred embodiment of the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTWith reference now to the figures,FIG. 1 depicts a pictorial representation of a network of data processing systems in which the present invention may be implemented. Networkdata processing system100 is a network of computers in which the present invention may be implemented. Networkdata processing system100 contains anetwork102, which is the medium used to provide communications links between various devices and computers connected together within networkdata processing system100.Network102 may include connections, such as wire, wireless communication links, or fiber optic cables.
In the depicted example,server104 is connected to network102 along withstorage unit106. In addition,clients108,110, and112 are connected to network102. Theseclients108,110, and112 may be, for example, personal computers or network computers. In the depicted example,server104 provides data, such as boot files, operating system images, and applications to clients108-112.Clients108,110, and112 are clients toserver104. Networkdata processing system100 may include additional servers, clients, and other devices not shown.
In the depicted example, networkdata processing system100 is the Internet withnetwork102 representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another. At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, consisting of thousands of commercial, government, educational and other computer systems that route data and messages. Of course, networkdata processing system100 also may be implemented as a number of different types of networks, such as for example, an intranet, a local area network (LAN), or a wide area network (WAN).FIG. 1 is intended as an example, and not as an architectural limitation for the present invention.
Referring toFIG. 2, a block diagram of a data processing system that may be implemented as a server, such asserver104 inFIG. 1, is depicted in accordance with a preferred embodiment of the present invention.Data processing system200 may be a symmetric multiprocessor (SMP) system including a plurality ofprocessors202 and204 connected tosystem bus206. Alternatively, a single processor system may be employed. Also connected tosystem bus206 is memory controller/cache208, which provides an interface tolocal memory209. I/O Bus Bridge210 is connected tosystem bus206 and provides an interface to I/O bus212. Memory controller/cache208 and I/O Bus Bridge210 may be integrated as depicted.
Peripheral component interconnect (PCI)bus bridge214 connected to I/O bus212 provides an interface to PCIlocal bus216. A number of modems may be connected to PCIlocal bus216. Typical PCI bus implementations will support four PCI expansion slots or add-in connectors. Communications links to clients108-112 inFIG. 1 may be provided throughmodem218 andnetwork adapter220 connected to PCIlocal bus216 through add-in connectors.
AdditionalPCI bus bridges222 and224 provide interfaces for additional PCIlocal buses226 and228, from which additional modems or network adapters may be supported. In this manner,data processing system200 allows connections to multiple network computers. A memory-mappedgraphics adapter230 andhard disk232 may also be connected to I/O bus212 as depicted, either directly or indirectly.
Those of ordinary skill in the art will appreciate that the hardware depicted inFIG. 2 may vary. For example, other peripheral devices, such as optical disk drives and the like, also may be used in addition to or in place of the hardware depicted. The depicted example is not meant to imply architectural limitations with respect to the present invention.
The data processing system depicted inFIG. 2 may be, for example, an IBM eServer pSeries system, a product of International Business Machines Corporation in Armonk, N.Y., running the Advanced Interactive Executive (AIX) operating system or LINUX operating system.
With reference now toFIG. 3, a block diagram illustrating a data processing system is depicted in which the present invention may be implemented.Data processing system300 is an example of a client computer.Data processing system300 employs a peripheral component interconnect (PCI) local bus architecture. Although the depicted example employs a PCI bus, other bus architectures such as Accelerated Graphics Port (AGP) and Industry Standard Architecture (ISA) may be used.Processor302 andmain memory304 are connected to PCIlocal bus306 throughPCI Bridge308.PCI Bridge308 also may include an integrated memory controller and cache memory forprocessor302. Additional connections to PCIlocal bus306 may be made through direct component interconnection or through add-in boards. In the depicted example, local area network (LAN)adapter310, small computer system interface (SCSI)host bus adapter312, andexpansion bus interface314 are connected to PCIlocal bus306 by direct component connection. In contrast,audio adapter316,graphics adapter318, and audio/video adapter319 are connected to PCIlocal bus306 by add-in boards inserted into expansion slots.Expansion bus interface314 provides a connection for a keyboard andmouse adapter320,modem322, andadditional memory324. SCSIhost bus adapter312 provides a connection forhard disk drive326,tape drive328, and CD-ROM drive330. Typical PCI local bus implementations will support three or four PCI expansion slots or add-in connectors.
An operating system runs onprocessor302 and is used to coordinate and provide control of various components withindata processing system300 inFIG. 3. The operating system may be a commercially available operating system, such as Windows XP, which is available from Microsoft Corporation. An object oriented programming system such as Java may run in conjunction with the operating system and provide calls to the operating system from Java programs or applications executing ondata processing system300. “Java” is a trademark of Sun Microsystems, Inc. Instructions for the operating system, the object-oriented programming system, and applications or programs are located on storage devices, such ashard disk drive326, and may be loaded intomain memory304 for execution byprocessor302.
Those of ordinary skill in the art will appreciate that the hardware inFIG. 3 may vary depending on the implementation. Other internal hardware or peripheral devices, such as flash read-only memory (ROM), equivalent nonvolatile memory, or optical disk drives and the like, may be used in addition to or in place of the hardware depicted inFIG. 3. Also, the processes of the present invention may be applied to a multiprocessor data processing system.
As another example,data processing system300 may be a stand-alone system configured to be bootable without relying on some type of network communication interfaces. As a further example,data processing system300 may be a personal digital assistant (PDA) device, which is configured with ROM and/or flash ROM in order to provide non-volatile memory for storing operating system files and/or user-generated data.
The depicted example inFIG. 3 and above-described examples are not meant to imply architectural limitations. For example,data processing system300 also may be a notebook computer or hand held computer in addition to taking the form of a PDA.Data processing system300 also may be a kiosk or a Web appliance.
The present invention provides an improved method, apparatus, and computer instructions for optimizing Web services. When a request is received for a client for Web services information for a particular Web service, the current availability of the Web service is identified. An indication of this current availability of the Web service is sent to the client, wherein the client uses this indication to selectively use the Web service. In these examples, this current availability is whether the service is up and running at the time the query of the Web service is made. In these examples, the Web services information is Web services binding information. A binding defines message format and protocol details for operations and messages defined by a particular portType. There may be any number of bindings for a given portType. Additionally, in these examples, the binding information also includes the current availability of the Web service and may include other information, such as loading of the Web service and response times for the Web service.
The mechanism of the present invention employs a presence network to provide this availability information. In these illustrative examples, a presence network is a network that includes an instant messaging system that is used to transmit information between different components or data processing systems. The instant messaging system does not require human user intervention to provide the communications between different components or data processing systems.
The presence or availability information may be provided directly to a client when the client identifies a Web service from a registry of Web services, such as a yellow pages provider. Alternatively, the presence network may provide this availability information directly to the registry.
Further, the mechanism of the present invention allows for Web services providers to augment service and providing information exploited to registries, such as yellow pages directory services with a service presence identifier. When a client looks up binding information for a service, the presence identifier may be used to connect to the presence network to determine whether the service is currently available. Alternatively, the availability may be provided directly to the registry. The mechanism of the present invention provides an identifier for a service to connect to a presence network using its presence service identifier to provide information to the presence network, such as current availability of the Web service. Other information then may be provided to the presence network by the service that includes, for example, loading of the service, response times statistics for the service, and updated binding information. Another example of information that may be provided is a general availability of the service. A service is considered to be generally available if the service is available at least some or perhaps most of the time. This type of availability is a different type of availability than the current availability of the service.
Turning now toFIG. 4, a diagram illustrating components used in providing presence-enhanced Web service binding is depicted in accordance with the preferred embodiment of the present invention. In this illustrative example,service client400 looks up service binding information in serviceyellow pages402. Serviceyellow pages402 is a registry of Web services. This registry may be implemented using UDDI. The information in serviceyellow pages402 is provided by service providers.
In this example,service provider404 exports service binding information to serviceyellow pages402. Consequently, whenservice client400 looks up information in serviceyellow pages402, this client may obtain binding information needed to interact with a Web service provided byservice provider404.
The mechanism of the present invention includespresence network406 when service binding information is obtained from serviceyellow pages402. The Web service inservice provider404 connects topresence network406 to provide updated presence information regarding the particular Web service.
Service client400 also may obtain a service presence identifier from serviceyellow pages402. This service presence identifier is used to obtain service presence information frompresence network406. The particular presence information is for a Web service forservice provider404 in this example. With the service presence identifier,service client400 may request information regarding the availability of a service provided throughservice provider404. Alternatively, a name or other lookup mechanism may be used byservice client400 to obtain the presence information for the Web service.
In these illustrative embodiments, the presence information includes the current availability of the Web service as well as other information that might be desired. This other information may include, for example, loading statistics, service response times statistics, and a location of the Web service.
This information is collected inpresence network406 and made available toservice client400, whenservice client400 connects withpresence network406 to request information regarding a particular Web service.
In these examples,presence network406 is a network that includes an instant messaging system. Information from various Web services is collected through agents withinpresence network406. These agents monitor information sent by various Web services to a chat group established for one or more Web services. This information is collected and made available to service clients.
Additionally, the different Web services may include monitoring agents that monitor or obtain the presence information from the different service providers. The information is exchanged through instant messaging protocols. A number of different agents may form a chat group in which each agent collects or receives presence information from one or more Web services for different service providers.
Service client400 sends queries topresence network406 to identify services that are presently available from serviceyellow pages402.
Turning next toFIG. 5, a diagram illustrating components in a presence-enhanced Web service binding system is depicted in accordance with the preferred embodiment of the present invention. In this illustrative example,service provider500 exports service binding information to a registry, such as service yellow pages502. This information may be obtained by various clients, such asservice client504. In obtaining this binding information,service client504 obtains information needed to interact with a Web service provided throughservice provider500. Additionally, the information provided in service yellow pages502 is enhanced with service presence information.
In this particular illustrative example,service client504 is not required to contactpresence network506. In this particular example, the service presence information is sent bypresence network506 directly to service yellow pages502. Various agents atservice provider500contact presence network506 to update presence information regarding the different Web services available. In these examples, the availability is whether the service is up and running at the present time.
Turning now toFIG. 6, a diagram illustrating components in providing presence information is depicted in accordance with the preferred embodiment of the present invention. In this example,network600 forms a presence network, such aspresence network406 inFIG. 4 orpresence network506 inFIG. 5.Network600 includesmanagement agents602. These management agents include instant messaging capabilities used to receive information regarding different Web services. These management agents are assigned to a chat group that receives presence information from the different Web services. The information frommanagement agents602 may then be correlated bycorrelation agents604. This correlation agent is a process that collects the information received bymanagement agents602.Correlation agents604 may then provide the information to clients or registries.
Management agents602 receive presence information from different agents associated with service providers. In this example,instant messaging agent606 andinstant messaging agent608 log onto chat groups associated withmanagement agents602 and send presence information.Instant messaging agent606 monitors Web services provided throughservice provider610, whileinstant messaging agent608 monitors Web services throughservice provider612. These agents monitor for information identifying the current availability of Web services for these types of service providers. These instant messaging agents also may provide other information including, for example, loading statistics and response times statistics.
These agents log onto chat groups associated withmanagement agents602 innetwork600. The information is then sent to those chat groups. Other information that also may be sent tomanagement agents602 in addition to the current availability of a Web service includes updates for changes to binding information. The information may then be provided to registries or clients throughcorrelation agents604. All of the agents include instant messaging capabilities and communicate with each other through instant messaging protocols.
Instant messaging agents606 includeinstant messaging process607.Instant messaging agent608 includesinstant messaging process609. These instant messaging processes are used to connect tomanagement agents602 innetwork600. In particular, the instant messaging agents used these processes to connect to chat groups associated with these management agents. The information is sent to these management agents through instant messaging messages. Various agents may be implemented on different data processing systems innetwork600.
Turning now toFIG. 7, a flowchart of a process for binding to a Web service is depicted in accordance with the preferred embodiment of the present invention. The process illustrated inFIG. 7 may be implemented in a service client, such asservice client400 inFIG. 4.
The process begins by requesting service binding information (step700). This request is made to a registry, such as serviceyellow pages402 inFIG. 4. In response to making this request, information for one or more services is received (step702). Thereafter, a connection is made to a presence network (step704). A service is selected (step706). The presence network is then queried regarding that service (step708). A determination is made as to whether the service is currently available (step710). Instep710, the determination is made to see whether the service is up and running at the present time.
If the service is currently available, the process binds to the service (step712) with the process terminating thereafter. If the service is not currently available, a determination is made as to whether service binding information has been received for additional services (step714). If additional services are present, the process returns to step706 to select another service. Otherwise, the process terminates.
Turning now toFIG. 8, a flowchart of a process for providing presence information is depicted in accordance with the preferred embodiment of the present invention. The process illustrated inFIG. 8 may be implemented in a correlation agent, such ascorrelation agent600 inFIG. 6.
The process begins by receiving a query from a client (step800). This query includes an identification of the service. This query may be made in various ways. For example, a name of a service may be used to correlate the name with a service identifier to find the particular service. Alternatively, the client may provide the presence identifier for the particular service.
A determination is made as to whether the service is available (step802). This determination is made by identifying the current presence information for the service. If the service is currently available, a response is returned to the client indicating that the service is currently available (step804). Otherwise, a response is returned indicating that the service is unavailable (step806) with the process terminating thereafter.
Turning now toFIG. 9, a flowchart of a process for providing presence information to a presence network is depicted in accordance with the preferred embodiment of the present invention. The process illustrated inFIG. 9 may be implemented in an instant messaging agent, such asinstant messaging agent606 inFIG. 6.
The process begins by logging onto an instant messaging system (step900). In this example, the instant messaging system is one in a presence network, such asnetwork600 inFIG. 6. The managed resource is then monitored (step902). In this example, the managed resource is one or more Web services.
A determination is then made as to whether the selected information is present at the managed resource (step904). This selected information includes whether the particular service is currently available. The selected information also may include other information, such as loading statistics, response times statistics, and a location of the Web service. If the information is present, the process sends the information to a multi-user chat group in the presence network (step906) with the process then returning to step902.
With reference again to step904, if the selected information is not present, the process also returns to step902 to continue to monitor the managed resource.
Turning now toFIG. 10, a flowchart of a process for providing presence information to a registry is depicted in accordance with the preferred embodiment of the present invention. The process illustrated inFIG. 10 may be implemented in a correlation agent, such ascorrelation agent604 inFIG. 6.
The process begins by detecting updated service presence information (step1000). This information may include, for example changes in availability of one or more services. Additionally, changes in statistics such as loading and response times also make up this presence information. If changes in the service presence information is not detected, the process returns to step1000. Otherwise, the updated service presence information is sent to the service yellow pages (step1002) with the process returning to step1000.
Although the depicted examples illustrate the use of service yellow pages for registries regarding Web services, the mechanism of the present invention may be applied to and used with any sort of registry that is used to provide information about Web services.
Turning now toFIG. 11, a flowchart of a process for providing binding and availability of information to a service client is depicted in accordance with the preferred embodiment of the present invention. The process illustrated inFIG. 11 may be implemented in a registry, such as service yellow pages502 inFIG. 5.
The process begins by receiving a request for service binding information from a client (step1100). The parameters are then identified (step1102). The parameters may include, for example, a particular type of service, or a particular type of interface desired for the service. Services matching these parameters are identified in the registries (step1104).
Thereafter, binding information for the matching services is placed into a response (step1106). Additionally, availability information for each of these services is identified in the registry and placed into the response (step1108). Further, additional information regarding the service also may be placed into the response (step1110). This additional information includes, for example, a location of the service, loading statistics for the service, and response times for the service. Thereafter, the response is send to the requestor (step1112) with the process terminating thereafter.
Thus, the present invention provides an improved method, apparatus, and computer instructions for providing access to Web services. The mechanism of the present invention employs a presence network to obtain updated information regarding the current availability of different services. This information is then provided to a client in response to the client requesting information about the particular Web service. In these examples, the request is for binding information. Of course, the request could be for other types of information other than binding information, depending on the particular implementation.
This availability information regarding different services may be provided directly to the service client. Alternatively, the information may be placed into the particular registry with this information being sent back to the client along with other information requested by the client.
It is important to note that while the present invention has been described in the context of a fully functioning data processing system, those of ordinary skill in the art will appreciate that the processes of the present invention are capable of being distributed in the form of a computer readable medium of instructions and a variety of forms and that the present invention applies equally regardless of the particular type of signal bearing media actually used to carry out the distribution. Examples of computer readable media include recordable-type media, such as a floppy disk, a hard disk drive, a RAM, CD-ROMs, DVD-ROMs, and transmission-type media, such as digital and analog communications links, wired or wireless communications links using transmission forms, such as, for example, radio frequency and light wave transmissions. The computer readable media may take the form of coded formats that are decoded for actual use in a particular data processing system.
The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment was chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.