ACTION-164.ACTION-165

The following overview, serves to complete Actions-164 and 165

Peter...

CXF SOAP/JMS Overview

SOAP/JMS is a new CXF feature under development under CXF 2.3. For information see:
http://cxf.apache.org/docs/soap-over-jms-10-support.html


Quick Start - Running CXF Test Suites

The best way to get started with CXF 2.3 is to down-load a source snapshot zip, or grab the latest 2.3 code from SVN.
You will need to install Maven to run the SOAP-JMS test cases. The master pom for running SOAP-JMS tests is here:

apache-cxf-2.3.0-SNAPSHOT-src/systests/transports/pom.xml.

Included under systests/transports /src/test/java is the master test case:

org.apache.cxf.jms.testsuite.testcases.SOAPJMSTestSuiteTest

When setup,  you can move to the apache-cxf-2.3.0-SNAPSHOT-src/systests/transports sub-directory and run the following Maven command:

mvn

or (to only run the test suite),

mvn -Dtest=SOAPJMSTestSuiteTest

If all works, you should see the following output appear:

Running org.apache.cxf.jms.testsuite.testcases.SOAPJMSTestSuiteTest
Tests run: 18, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.859 sec

Results :

Tests run: 18, Failures: 0, Errors: 0, Skipped: 0

CXF Approach To JMS Testing

The Junit4 test client and server code is under systests/transports /src/test/java/org/apache/cxf/jms/testsuite. Client and server code is JAXWS based.

The WSDL with SOAP/JMS bindings is actually in a different Maven project, see:

systests/testutils /src/main/resources/wsdl/jms_spec_testsuite.wsdl

systests/testutils contains WSDL based implementations for all CXF system testing. The built testutils artifact contains WSDLs and compiled artifacts - Java stubs and interfaces - from the WSDLs(WSDL2Java). In this case, jms_spec_testsuite.wsdl generates an interface for the WSDL port type:

java/org/apache/cxf/jms_simple/JMSSimplePortType

This interface defines the ping and echo test methods.

Test verification of JMS send and receive message properties is data driven. transport/pom.xml JAXB compiles the following test definitions:

systests/transports /src/test/java/org/apache/cxf/jms/testsuite/util/testcases.xml

Note that this file is very similar to the like-named W3C testcases.xml artifact.

On the server side, each test case has a separate implementation e.g. Test1001Impl.java, Test1002Impl.java etc. As part of test setup these implementations are JAXWS Endpoint published. See:

systests/transports /src/test/java/org/apache/cxf/jms/testsuite/services/Server.java

The test verification is performed by the client driver, SOAPJMSTestSuiteTest. This program has a Junit test method for each case.
The test method uses javax.xml.ws.Service programming to obtain a Port proxy for each test(implementation of JMSSimplePortType). The test verification approach involves examining the request and response message context after each call(via javax.xml.ws.BindingProvider). In the case of CXF as part of the JMS implementation properties are recorded in the context maps(java.util.Map) of the request and response.

Other Places To Look

The CXF SOAP/JMS transport code along with unit tests are located here:

rt/transports/jms/src

The CXF 2.3 distribution contains a SOAP/JMS greeter example,

/distribution/src/main/release/samples/jms-spec-demo


W3C Test Coverage

WC3 SOAP-JMS Test Cases

CXF Test Cases

test0001

Y

test0002

Y

test0003

Y

test0004

Y

test0005

Y

test0006

Y

test0007

N (WSDL 2.0 bindings) CXF does not support WSDL 2.0

test0008

Y

test0009

Y

test0010

Y

test0011

Y

test0012

Y

test0013

N (WSDL 1.1 bindings)

test0014

N (WSDL 1.1 bindings)

test0015

N (WSDL 2.0 bindings) CXF does not support WSDL 2.0

test0016

N (WSDL 2.0 bindings) CXF does not support WSDL 2.0

test1001

Y

test1002

Y

test1003

Y

test1004

Y

test1005

N - SOAP 1.1 2-way SOAP Action mismatch

test1006

Y

test1007

Y

test1008

Y

test1009

N - SOAP 1.1 unsupported lookup variant

test1101

N - there are no SOAP1.2 tests all test11xx

test1102

N

test1103

N

test1104

N

test1105

N

test1106

N

test1107

N

test1108

N

test1109

N


Possible Next Steps


1.       It is likely that CXF will be happy to receive and commit new tests from us. We understand WSDL 2.0 is not supported, but we should be able to implement cases for the other missing tests.


2.       We should examine informal interoperability between CXF and another implementation. For example, although CXF testing uses an embedded ActiveMQ server, it does adapt to other JMS implementations. We could run the client tests on CXF, connecting to SOAP/JMS services running in another stack.

Received on Wednesday, 5 May 2010 17:26:02 UTC