1. Field of the Invention
The present invention relates to a method, system, and program for matching client interfaces with service interfaces.
2. Description of the Related Art
Software developers often want to integrate business applications with various business services, such as web services, legacy applications, databases, Enterprise Information Systems (EIS), etc. One solution is the J2EE Connector Architecture, part of Java 2, Platform, Enterprise Edition (J2EE) 1.3, that specifies a standard architecture for accessing resources in diverse Enterprise Information Systems (EIS). The J2EE platform provides a reusable component model, using Enterprise JavaBeans and JavaServer Pages technologies to build and deploy multi-tier applications that are platform and vendor-independent. (Java, J2EE, Enterprise JavaBeans, and JavaServer Pages are trademarks of Sun Microsystems, Inc.).
A developer uses J2EE by writing, for each service to which the application connects, one Connector Architecture-compliant resource adapter. Each application extends its system once to support integration with any number of resource adapters and underlying services, such as web services, legacy applications, databases, Enterprise Information Systems (EIS), etc.
An Enterprise Java Bean (EJB) is a collection of Java classes, following defined rules and providing specific call-back methods, and an XML file, combined into one single unit. Session beans model business services and expose EJB remote interfaces, which a client will use to invoke the services.
A developer of an application may want to expose a target component and service interfaces to a client component and client interfaces to allow the execution of the client interface to result in the execution of a corresponding service interface in the target component, which may be on a remote server. Thus, the client interface is mapped to the service interface, where the client and service interfaces may be implemented in different computer languages. The Java API for XML Based RPC (JAX-RPC) provides a technique to bind a client interface to a service interface that executes on a remote machine. A service client uses a JAX-RPC service by invoking remote methods on a service endpoint. A JAX-RPC service client can call a service endpoint that has been defined and deployed on a non-Java platform. The invoked service endpoint may comprise a web service. With JAX-RPC the client and the target service share an interface/contract described by a WSDL document (Web Services Description Language).
Provided are a method, system, and program for matching client interfaces with service interfaces. A client component includes at least one client interface and a target component includes at least one service interface. A data structure for the client component associates at least one client interface in the client component with one target component. For each client interface indicated in the data structure, a determination is made as whether there is one service interface in the target component associated with the client interface that is compatible with the client interface.
In the following description, reference is made to the accompanying drawings which form a part hereof and which illustrate several embodiments of the present invention. It is understood that other embodiments may be utilized and structural and operational changes may be made without departing from the scope of the present invention.
The compatibility checker 6 is invoked to determine the compatibility of client interfaces 14 and the service interfaces 18 to which they map according to the references 22 indicated in the data structure 20. A wire comprises a specification that links a reference with service interfaces that will resolve the reference at run-time. A wire may only link a reference and a service if the service interfaces 18 are compatible with the interface of the reference. Two interfaces are compatible if the methods on the target service interfaces 18 are a superset of the methods in the interface specified on the reference. Thus, wiring comprises the process of linking a reference with a service interface to map the client interface 14 to corresponding service interfaces 18 implementing the functionality of the client interfaces 14 in a separate component.
In one embodiment, the client and service interfaces are compatible, i.e., match, if the operations of the client and service interfaces have the same names and the types they flow are compatible. In one embodiment, a pre-defined Java to XML Schema Definition (XSD) mapping may be used to determine if types from the Java and XSD type systems are compatible (using the Service Data Objects (SDO)-Java to XSD mapping. Further, the compatibility checker may handle the various WSDL interface styles used in Web Services, used to represent operations that flow a single complex type, where the single complex type will match a Java complex type/Java Bean RPC that represents operations that flow multiple parameters. Each part in the WSDL message maps to a parameter on a Java method. The doc-literal-wrapped is used in WSDL to wrap multiple parameters under a single complex type. In such case, the wrapper is discarded and the individual elements under the wrapper a considered for mapping to parameters on a Java method.
A service reference is wired by containing zero or more wire elements (depending on multiplicity) in the reference. A wire element has a target attribute that contains the name of the service interface 18 that will resolve the reference. Each reference is typed by an interface. For a reference having a multiplicity of one, each reference is connected by a wire to a target component. The target component exposes one or more interfaces. The compatibility checker 6 checks the compatibility of the interface specified on the reference with the set of interfaces exposed by the target component. For a reference having a multiplicity of many, the-reference is connected to one or more components, using one or more wires. The compatibility checker 6 checks the compatibility of the interface specified on the reference with all the target components.
In certain embodiments, the client interfaces 14 in one client component 10 may be coded in one computer language and the service interfaces 18 in one target component 16 may be coded in a different computer language. For instance, the client component 16 may be coded in the Web Service Description Language (WSDL), Business Process Execution Language (BPEL), etc., and the target component 16 may be coded in another language, such as Java. (WSDL is used to describe interfaces, BPEL is used to code business process logic). A client interface 14 and one corresponding service interface 18 implementing the client interface 14 functionality in the target component 16 are compatible if methods in the service interface 18 are a superset of methods in the client interface 14.
A deployment program 130, such as a class loader, loads and instantiates the client components 104, local target component 110, target component import 114, and binding 126 in the runtime environment 102. The deployment program 130 uses a compatibility checker 132, which may perform the operations of compatibility checker 6, to determine service interfaces 112, 118 in a target component 110, 116 that implements the operations of a client interface 108 in the target component 110, 116 associated with the client interface 108 in one reference 22.
The service interfaces mapping to one client interface in the client-service mapping 128 may comprise a service interface 112 in a local target component 110 that executes in the client runtime environment 102 or may comprise a service interface 118 in a remote service server 122 that is accessed through the binding 126 of the service interfaces to remote services. As discussed, the client applications 106 and client interfaces 108 called by the applications 116 may be implemented in one computer language and the service interfaces 112, 118 in a different computer language.
In one embodiment, the data structure 20 may include references 22, such as shown in
The development tool 4 performs a loop of operations at blocks 206 through 214 for each client interface, i.e., reference 22, indicated in the data structure 20. Within the loop, a determination is made (at block 208) of one service interface 18 in the target component 16 associated with the client interface 14 that is compatible with the client interface. Each service interface 18 in the target component 16 may be checked to determine one that is compatible with the client interface 14 being considered. A service interface 18 and client interface 14 may be deemed compatible if methods in one service interface 18 are a superset of methods in the client interface 14 associated with the target component 16 including the service interface 18. In one embodiment, the operations in
In the development environment, determining and indicating incompatibility of a client interface and target component may occur by setting the error indicator 56 to use for subsequent debugging operations by the development tool 4. Alternatively, in the runtime environment of
Here is how we determine if the target component is local or remote:
Remote services are described locally by SCA Imports.
A wire can point to a component, e.g., local target component 110, when the component is local and resides in the same application/module as the client. A wire can point to a target component import 114, where the import is local and represents the remote service interfaces 118. Thus, the import exposes a set of interfaces and contains a binding that describes how to talk to the target service. If (at block 362) there is no binding 126 for the service interface in a target component import 114, then the service interface is a local service interface 112 in a local target component 110. In such case, the generated call to the determined local service interface 112 is executed (at block 364) to implement the called client interface 108. Otherwise, if there is a binding 126 for the determined service interface, then the binding 126 for the service interface 118 is used (at block 366) to invoke the service interface 118 on the remote service server 122.
Described embodiments provide techniques to associate client interfaces in one client component with a target component. During debugging or when instantiating components and interfaces in the runtime environment, a determination may be made of one service interface in the target component associated with the client interface that implements the client interface and is compatible with the client interface. A client interface and one service interface 18 in the associated target component are compatible if methods in one service interface are a superset of methods in the client interface.
With the described embodiments, if the target component and service interfaces are on a remote service server, then the provider of the remote service server, which may comprise a Web service, may update the service interfaces to provide added functionality without requiring that existing client systems update their client components to take into account the changes as long as the updated service interfaces still form a superset of the methods of the client interface. Thus the described embodiments enable a web service provider to ensure down level compatibility between already existing client components and updated service interfaces.
The described operations may be implemented as a method, apparatus or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. The term “article of manufacture” as used herein refers to code or logic implemented in hardware logic (e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc.) or a computer readable medium, such as magnetic storage medium (e.g., hard disk drives, floppy disks, tape, etc.), optical storage (CD-ROMs, optical disks, etc.), volatile and non-volatile memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, firmware, programmable logic, etc.). Code in the computer readable medium is accessed and executed by a processor. The code in which preferred embodiments are implemented may further be accessible through a transmission media or from a file server over a network. In such cases, the article of manufacture in which the code is implemented may comprise a transmission media, such as a network transmission line, wireless transmission media, signals propagating through space, radio waves, infrared signals, etc. Thus, the “article of manufacture” may comprise the medium in which the code is embodied. Additionally, the “article of manufacture” may comprise a combination of hardware and software components in which the code is embodied, processed, and executed. Of course, those skilled in the art will recognize that many modifications may be made to this configuration without departing from the scope of the present invention, and that the article of manufacture may comprise any information bearing medium known in the art.
The illustrated operations of
The foregoing description of various embodiments of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the invention be limited not by this detailed description, but rather by the claims appended hereto. The above specification, examples and data provide a complete description of the manufacture and use of the composition of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.
Number | Name | Date | Kind |
---|---|---|---|
5339430 | Lundin et al. | Aug 1994 | A |
5960421 | Cline et al. | Sep 1999 | A |
6438744 | Toutonghi et al. | Aug 2002 | B2 |
6446064 | Livowsky | Sep 2002 | B1 |
6448981 | Kaczmarski | Sep 2002 | B1 |
6643652 | Helgeson et al. | Nov 2003 | B2 |
7171673 | Steinman et al. | Jan 2007 | B1 |
20020026471 | Bent et al. | Feb 2002 | A1 |
20020152210 | Johnson et al. | Oct 2002 | A1 |
20030093551 | Taylor et al. | May 2003 | A1 |
20040012626 | Brookins | Jan 2004 | A1 |
20040148569 | Sengodan | Jul 2004 | A1 |
20040148570 | Sengodan | Jul 2004 | A1 |
20040168153 | Marvin | Aug 2004 | A1 |
20050154785 | Reed et al. | Jul 2005 | A1 |
Number | Date | Country |
---|---|---|
1130510 | Sep 2001 | EP |
WO-03069464 | Aug 2003 | WO |
Number | Date | Country | |
---|---|---|---|
20060122958 A1 | Jun 2006 | US |