Reference Implementation Release Notes
for JAXM 1.1_01 and SAAJ 1.1_02
This release is based on the specifications for the
JavaTM API for XML
Messaging (JAXM) 1.1_01 API and the
SOAP with Attachments API for JavaTM
(SAAJ) 1.1_02 API.
NOTE: The JAXM specification, which originally included both the
javax.xml.messaging
and javax.xml.soap
packages,
was divided into two specifications. The current specifications are
- SAAJ 1.1_02 --
javax.xml.soap
package
- JAXM 1.1_01 --
javax.xml.messaging
package
These packages are explained in the JAXM Tutorial of the Java Web Services
Developer Pack.
In this document, "JAXM" is used generically to refer to both the SAAJ 1.1_02 and
JAXM 1.1_01 APIs.
The following list
contains some information about the implementation, known issues and bugs
in this release.
An updated, online version of this file can be seen
here
.
- This release depends on the following components:
- The messaging provider supports the mandatory parts of the EBXML specification
as a profile. The local provider generates and consumes plain SOAP messages.
- The release implements the HTTP/SOAP binding.
- [Does NOT apply to users of the Java Web Services Developer Pack]
To get access to the JAXM Provider Administration tool, the following line
needs to be added to the tomcat-users.xml
file:
<user name="jaxm-provideradmin" password="changeme" roles="provider"/>
- Creating a ProviderConnection object from the ProviderConnectionFactory
object does not initialize the per-client state on the provider. The current
behavior is that the per-client state is initialized on the first client-initiated
interaction, that is, when the methods send or getMetaData
are called, as opposed to when a ProviderConnection object is created.
This delayed initialization is a bug that affects pure receiver servlets.
The workaround is to invoke the ProviderConnection.getMetaData method
in the Servlet's init method.
- [Does NOT apply to users of the Java Web Services Developer Pack]
If you are configuring JAXM manually to run on Tomcat 3.x as opposed to
using JAXM from the Java Web Service Developer Pack, the provider needs to
be up and running (in a separate instance of a servlet container) before clients
can initiate connections to it from the init method of the client
servlet. This is needed because as part of the initialization of a connection,
an HTTP post is done to the provider with the client state. If the provider
is running in the same instance of the servlet container, the servlet container
does not start listening on a port until all of the servlets have been initialized.
- [FOR Java Web Services Developer Pack Users].
The JAXM provider
and the Provider Administration webapps run as "services" under the Java Web Services
Developer Pack. All services
listen to requests on port 8081 by default.
- When delivery of a message fails, the provider tries to resend it.
The number of retries is determinted by the retry limit configured for the
provider, with the default maximum being 100. When Tomcat is restarted, the
provider will first try to deliver the persistent messages used in the previous
Tomcat run. This may cause a message or exception similar to "Provider.MessageProcessor
Retrying because .... " to appear until the maximum number of retries has
been reached. If this problem persists, try deleting the directory where
persistent messages are stored ("ebxml" for the remote sample). You may also
want to reconfigure the provider so that it has a lower retry limit.
- The SAAJ reference implementation is known to cause problems with XML
digital signatures. This will be fixed in subsequent releases.
- In order for the sample applications jaxm-remote and
jaxm-SOAPRP to run using Tomcat 4.0.4 with jdk 1.4.0 or jdk 1.4.0_01, you
need to remove the following line from the
catalina.sh
or
catalina.bat
shell script:
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS"
If you then execute the shell script before running the sample
applications that use a provider, they should work fine.
An alternative solution is to remove common/lib
from
JAVA_ENDORSED_DIRS in setenvclasspath.sh
or
setenvclasspath.bat
.