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

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.

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.