Differences between revisions 7 and 8
Revision 7 as of 2006-06-20 17:11:20
Size: 7441
Editor: JeffBarrett
Comment:
Revision 8 as of 2009-09-20 22:48:02
Size: 7451
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 8: Line 8:
|| JIRA Issue|| [http://issues.apache.org/jira/browse/AXIS2-826] || || JIRA Issue|| [[http://issues.apache.org/jira/browse/AXIS2-826]] ||
Line 33: Line 33:
attachment:client.JPG {{attachment:client.JPG}}
Line 37: Line 37:
attachment:server.JPG {{attachment:server.JPG}}

JAX-WS-Proposal

Overview

JSR Specification

JSR 224: The Java API for XML Web Services (JAX-WS) 2.0

Related JSRs

JSR 181: Web Services Metadata for the Java Platform

JSR 222: The Java Architecture for XML Binding (JAX-B) 2.0

JIRA Issue

http://issues.apache.org/jira/browse/AXIS2-826

Corporation

IBM

Requester

Nicholas L Gallardo (nlgallar@us.ibm.com)

Axis Committer

Rich Scheuerle (scheu@apache.org) (Yahoo IM: richscheu)

Developers/Contributors

Jeff Barrett (barrettj@us.ibm.com) (Yahoo IM: barrettjl1027)

Nikhil Thaker

Mike Rheinheimer

Brent Ulbricht

Dan Sedov

Lizet Ernand

Samuel Isokpunwu

Architecture

The images below describe at a high level, the architecture for the JAX-WS implementation. The pieces are color coded to denote their scope.

  • The blue pieces are the APIs provided by the JAX-WS specification. These are the APIs that users will interact with and are strictly the javax.xml.ws.* interfaces/classes.

  • The purple pieces are the actual implementation components to support the JAX-WS API.
  • The yellow pieces are the portions of the Axis2 runtime that are leveraged in implementing the purple pieces.

A few other things to note:

  • The Axis2 code is only touched in two places. In the AxisController on the client side and in the JAXWSMessageReceiver on the server side.

  • There is no support for JAX-WS handlers right now, but they are included in the diagrams below.

Here is the client architecture:

client.JPG

Here is the server architecture:

server.JPG

Class Roadmap

The following table describes the important classes in the architecture:

Class

Client/Server/Test

Description

org.apache.axis2.jaxws.Dispatch

Client

Implementation of Dispatch<T>. This is the only client api currently supported.

org.apache.axis2.jaxws.spi.ServiceDelegate

Client

JAX-WS ServiceDelegate implementation to handle client request. This is the entry point from the client.

org.apache.axis2.jaxws.client.BindingProvider

Client

JAX-WS BindingProvider implementation to hold client request context.

org.apache.axis2.jaxws.client.AxisController

Client

Client side abstraction layer that accesses the AxisEngine.

org.apache.axis2.jaxws.impl.AsyncResponseProcessor

Client

Async Response processor for Async invocation.

org.apache.axis2.jaxws.server.JAXWSMessageReceiver

Server

JAX-WS implementation of org.apache.axis.MessageReceiver

org.apache.axis2.jaxws.framework.JAXWSTest

Test

Root class for the JAX-WS tests. This class will be remove in subsequent drops.

Coding Conventions

The contributed code follows the same conventions used in the Axis2 code base.

  • The JAX-WS is an Axis 2 component module (modules/jaxws)
  • The source and test directories of JAX-WS use the same directory structure as the other Axis 2 modules.
  • The module is constructed and maintained using maven.
    • The maven.xml file, project.xml and project.properties files use the same conventions as the other modules.
    • The project.xml file extends the Axis2 etc/project.xml file.
    • The Axis2 etc/project.properties variables are used to determine the versions of dependent jars.
    • The conributors to the JAX-WS module are listed in the modules/jaxws/project.xml file.
  • The module is Java 5.0 enabled.
    • The maven.multiproject.includes.requiresJDK15 variable in etc/project.properties is updated to include the JAXWS project.
  • All code files contain an Apache and IBM copyright.
  • The code follows standard Java Coding Conventions
    • The root package name is org.apache.axis2.jaxws.
    • TODO and FIXME tasks are used to identify missing or broken behavior.
    • Currently all messages are inline. There is no message resource bundle.

Testing

There are 20 JAX-WS tests provided in the initial JAX-WS code drop.

  • The test directory structure is similar to the other Axis2 modules.
  • The test output is captured in the modules/jaxws/target/test-reports directory.
  • Tests labeled as async are testing asychrony at the programming model level only. They are not using a separate listener since WS-Addressing is not enabled.
  • The tests are currently driven from the single class, org.apache.axis2.jaxws.framework.JAXWSTest. We will change this architecture as we add more tests.

We are working on additional tests. Subsequent tests will be documented with javadoc. The following table is provided for evaluation purposes only.

Test Name

Status

Test Description

StringDispatch.testSync()

Pass

JAX-WS Dispatch<String> Payload Mode Test

StringDispatch.testSyncWithMessageMode()

Pass

JAX-WS Dispatch<String> Message Mode Test

StringDispatch.testAsyncCallback()

Pass

JAX-WS Asynchronous Callback Dispatch<String> Payload Test

StringDispatch.testAsyncCallbackWithMessageMode()

Pass

JAX-WS Asynchronous Callback Dispatch<String> Message Mode Test

StringDispatch.testOneWay()

Pass

JAX-WS Dispatch<Source> Payload One-Way Test

SourceDispatch.testSync()

Pass

JAX-WS Dispatch<Source> Payload Mode Test...using StreamSource argument

SourceDispatch.testSyncWithMessageMode()

Pass

JAX-WS Dispatch<Source> Message Mode Test...using StreamSource argument

SourceDispatch.testAsyncCallback()

Pass

JAX-WS Asynchronous Callback Dispatch<Source> Payload Test...using StreamSource argument

SourceDispatch.testAsyncCallbackWithMessageMode()

Pass

JAX-WS Asynchronous Callback Dispatch<Source> Message Test...using StreamSource

SourceDispatch.testOneWay()

Pass

JAX-WS Dispatch<Source> Payload One-Way Test...using StreamSource argument

DOMSourceDispatch.testSync()

Pass

JAX-WS Dispatch<Source> Payload Mode Test...using DOMSource argument

DOMSourceDispatch.testSyncWithMessageMode()

Pass

JAX-WS Dispatch<Source> Message Mode Test...using DOMSource argument

DOMSourceDispatch.testAsyncCallback()

Pass

JAX-WS Asynchronous Callback Dispatch<Source> Payload Test...using DOMSource argument

DOMSourceDispatch.testAsyncCallbackWithMessageMode()

Pass

JAX-WS Asynchronous Callback Dispatch<Source> Message Test...using DOMSource

DOMSourceDispatch.testOneWay()

Pass

JAX-WS Dispatch<Source> Payload One-Way Test...using DOMSource argument

SAXSourceDispatch.testSync()

Pass

JAX-WS Dispatch<Source> Payload Mode Test...using SAXSource argument

SAXSourceDispatch.testSyncWithMessageMode()

Pass

JAX-WS Dispatch<Source> Message Mode Test...using SAXSource argument

SAXSourceDispatch.testAsyncCallback()

Pass

JAX-WS Asynchronous Callback Dispatch<Source> Payload Test...using SAXSource argument

SAXSourceDispatch.testAsyncCallbackWithMessageMode()

Pass

JAX-WS Asynchronous Callback Dispatch<Source> Message Test...using SAXSource

SAXSourceDispatch.testOneWay()

Pass

JAX-WS Dispatch<Source> Payload One-Way Test...using SAXSource argument

FrontPage/Axis2/JAX-WS-Proposal (last edited 2009-09-20 22:48:02 by localhost)