Find JSRs
Submit this Search

Ad Banner

JSRs: Java Specification Requests
JSR 101: JavaTM APIs for XML based RPC

Updates to the Original Java Specification Request (JSR)

The following sections have been updated since the original JSR:

The Maintenance Lead has changed from Sun Microsystems to Oracle.

Section 1. Identification

Specification Lead: Rahul Sharma

E-Mail Address:

Telephone Number: +1 408 276 7282

Fax Number:

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:

Telephone Number: (408) 343 1426

Fax Number: (408) 863 3195

Specification Lead: Eduardo Pelegri-Llopart

E-Mail Address:

Telephone Number: (408) 343 1456

Fax Number: (408) 863 3195

(NOTE that this information has been updated from the original JSR.)

Endorsers and initial Expert Group Members:

Commerce One
Sun Microsystems

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 based RPC.

The goal of this JSR is to develop APIs and conventions for supporting XML based 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 based RPC call definitions into Java interfaces, classes, and methods. The purpose of this "forward mapping" is to allow XML based 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 based RPC call definitions into Java.

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

As part of mapping between XML based 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 based 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 based 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.)


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 based 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 based 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 based RPC. However, the Java APIs for XML based RPC should attempt to align with and exploit these existing APIs.

In particular, it is expected there will be close liaison between this 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?


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


2.9 Are there any internationalization or localization issues?


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 support for RPC using XML.

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 based 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 based 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.