Cache from http://java.sun.com/aboutJava/communityprocess/jsr/jsr_101_xrpc.html; use this canonical source if possible.]


Java APIs to support emerging industry XML RPC standards.

Proposed Specification Lead
Eduardo Pelegri-Llopart
Sun Microsystems, Inc.

Expert Group
Not Yet Formed.

I would like to join this Expert Group.

E-mail your support for this proposal to jsr-101-comments@sun.com.


Status
JSR Review Closes2001.02.12



Java Community Process version in use: 2.0

Please direct your comments on this JSR to jsr-101-comments@sun.com.


Original Java Specification Request (JSR)

Identification | Request | Contributions | Additional Information

Section 1. Identification

Submitting Member: Sun Microsystems

Name of Contact Person: Graham Hamilton

E-Mail Address: kgh@eng.sun.com

Telephone Number: (408) 343 1426

Fax Number: (408) 863 3195


Specification Lead: Eduardo Pelegri-Llopart

E-Mail Address: pelegri@eng.sun.com

Telephone Number: (408) 343 1456

Fax Number: (408) 863 3195


Endorsers and initial Expert Group Members:

Allaire
Apple
ATG
BEA
Bowstreet
Commerce One
HP/Bluestone
iPlanet
SilverStream
Sun Microsystems
webGain
webMethods

Section 2: Request

2.1 Please describe the proposed Specification:

There is considerable interest in using XML for "Remote Procedure Calls", where a procedure call (or method call) on one computer is transmitted over a network as XML and is then delivered as procedure call (or method call) on another computer. In particular, there is now a W3C Protocol Working Group developing a standard XML protocol, "XP", which supports XML RPC.

The goal of this JSR is to develop APIs and conventions for supporting XML RPC protocols in the Java platform. There are three main needs to be addressed:

  • APIs for marshaling and unmarshaling arguments and for transmitting and receiving calls. These APIs should permit the development of portable "stubs" and "skeletons". (A stub is a piece of code that runs on a client computer and maps a language level call into a network call. A skeleton is an analogous piece of code that runs on a server and maps an incoming network call to a language level call on the server.)

  • APIs and conventions for mapping XML RPC call definitions into Java interfaces, classes, and methods. The purpose of this "forward mapping" is to allow XML RPC interfaces that have been defined in other languages to be mapped into Java. It is highly desirable to be able to map all XML RPC call definitions into Java.

  • APIs and conventions for mapping Java classes, interfaces, and methods into XML RPC call definitions. The purpose of this "reverse mapping" is to allow programmers to define APIs in Java and then map them into XML RPC. There may be some constraints on which Java methods can be mapped into XML RPC.

As part of mapping between XML RPC data types and Java types, this JSR will attempt to include support for existing Java language to XML mappings, such as those defined in JSR-031 "XML Data Binding" (and possibly also those defined in JSR-057 "JavaBeans Persistence").

The expert group will evaluate to what extent the XML RPC mappings and APIs should be aligned with the existing CORBA and RMI APIs and mappings.

The JSR will make reasonable efforts to define APIs and conventions that are independent of specific protocols and data formats, and to define APIs that are "pluggable" and can allow different protocols to be substituted. However, the initial primary focus will be on the emerging W3C XP standard.

Where possible, the JSR will attempt to use or learn from existing work on Java XML RPC systems, especially work such as the Apache SOAP project.

NOTE: This JSR will not attempt to develop, define, or constrain network protocols or network data formats or network interface definition languages. The definitions of such protocols, data formats, and definition languages belong at network interoperability standards groups such as W3C or Oasis. This JSR is merely trying to provide convenient Java Platform support for the specifications defined by the appropriate network standards organizations.

2.2 What is the target Java platform? (i.e., desktop, server, personal, embedded, card, etc.)

J2SE

2.3 What need of the Java community will be addressed by the proposed specification?

This specification will provide consistent Java APIs for using emerging XML RPC standards.

2.4 Why isn't this need met by existing specifications?

(See also section 4.1 below.)

There are already two major RPC systems in the Java platform, the OMG CORBA Object Request Broker, and the Java Remote Method Invocation (RMI) APIs. However, neither of these systems have been designed to work with XML RPC. Where practicable, this JSR should attempt to align with this existing RPC work.

There are several existing JSRs that define XML APIs. These include JSR-031 "XML Data Binding", JSR-057 "JavaBeans Persistence", JSR-063 "Java APIs for XML Processing 1.1", JSR-067 "Java APIs for XML Messaging", and JSR-093 "Java APIs for XML Registries". None of these APIs address XML RPC. However, the Java APIs for XML RPC should attempt to align with and exploit these existing APIs.

In particular, it is expected there will be close liaison between this XML RPC JSR and the existing XML Messaging JSR, as it appears that it will be beneficial for these two JSRs to be closely aligned. Both styles of communication (asynchronous messaging and synchronous RPCs) are likely to be important, for different use cases.

2.5 Please give a short description of the underlying technology or technologies:

For an overview of RPC systems, see the references, especially the classic Birrell & Nelson paper "Implementing RPC".

2.6 Is there a proposed package name for the API Specification? (i.e., javapi.something, org.something, etc.)

To Be Determined.

2.7 Does the proposed specification have any dependencies on specific operating systems, CPUs, or I/O devices that you know of?

No.

2.8 Are there any security issues that cannot be addressed by the current security model?

No.

2.9 Are there any internationalization or localization issues?

No.

2.10 Are there any existing specifications that might be rendered obsolete, deprecated, or in need of revision as a result of this work?

No. Both the existing CORBA ORB support and the existing RMI support will continue to be supported and extended, to reflect their own distinct needs and user communities.

2.11 Please describe the anticipated schedule for the development of this specification.

The final schedule will need to be determined by the expert group, and will also be dependent on the progress of the relevant industry standards. However, it is anticipated that a reasonably solid draft should be available in the early summer.

2.12 Working style for the expert group.

It is anticipated there will be a face-to-face kick-off meeting. Subsequent work will be done by email.

The goal will be to attempt to develop a consensus in the expert group over the main APIs and technologies.



Section 3: Contributions

3.1 Please list any existing documents, specifications, or implementations that describe the technology. Please include links to the documents if they are publicly available.

"Remote Procedure Call", Bruce Jay Nelson, CMU PhD Thesis, 1981. Available as Xerox PARC Technical Report CSL-81-9

"Implementing Remote Procedure Calls", A. D. Birrell & B. J. Nelson, ACM Transactions on Computer Systems. Vol. 2, No. 1, February 1984, pp. 39-59.

W3C XML Protocol Activity web site. This includes a variety of information on the W3C's work on "XP", which includes XML RPC support.

OMG CORBA 2.4 Specification (5.8 Megs of PDF).

Web Services Definition Language (WSDL) 1.0

SOAP Protocol Specification 1.1.

Java RMI specification.

Java RMI-IIOP Documentation.

The Apache SOAP project web site.

3.2 Explanation of how these items might be used as a starting point for the work.

This JSR will aim to support the W3C XP standard (and possibly others). In doing this it will attempt to benefit from existing industry work on RPC, and specifically on XML RPC.



Section 4: Additional Information (Optional)

4.1 This section contains any additional information that the submitting Member wishes to include in the JSR.

As noted in Section 2.4, there are already two major RPC systems in the Java Platform, OMG CORBA and Java RMI. Both of these RPC systems were very considerable undertakings, raising many subtle issues. Even more daunting was the RMI-IIOP specification, which provides a partial unification of CORBA and RMI. Mapping between language level semantics and network protocol semantics is not a trivial undertaking.

It is therefore with considerable trepidation that we propose adding a third RPC system to the Java platform. However, it has been a consistent goal of the Java Platform to allow Java programmers to conveniently use common industry infrastructure and common industry protocols. So it is in that spirit that we propose support for XML RPC standards. It is important to allow Java developers convenient access to merging web standards. We hope that in developing these new APIs and mappings we will be able to benefit from the existing experience in the Java community, and from the lessons learned in projects like RMI-IIOP.



See Also
Details of the Community Process
New Specification Proposals
Specification Proposal Index


[ This page was updated: 07-Feb-01 ]

Products & APIs - Developer Connection - Docs & Training - Support
Community Discussion - Industry News - Solutions Marketplace - Case Studies
Glossary - Feedback - A-Z Index

For more information on Java technology
and other software from Sun Microsystems, call:
(800) 786-7638
Outside the U.S. and Canada, dial your country's AT&T Direct Access Number first.
Sun Microsystems, Inc.
Copyright © 1995-2001 Sun Microsystems, Inc.
All Rights Reserved. Terms of Use. Privacy Policy.