JAX-WS Needs a property to prevent lossy transformations before the application
handlers are called
---------------------------------------------------------------------------------------------------
Key: AXIS2-4502
URL: https://issues.apache.org/jira/browse/AXIS2-4502
Project: Axis 2.0 (Axis2)
Issue Type: Bug
Components: jaxws
Reporter: Rich Scheuerle
Assignee: Rich Scheuerle
Problem:
When a message is received, we want to quickly transform the message into the
"final form" to reduce memory and increase speed.
For example, in the JAX-WS server inbound case, the message payload is
transformed into a JAXB object (which is what the JAXWS @WebService needs).
However if the customer has installed a JAX-WS soap handler AND that handler
inspects the message payload (the contents of the soap Body), then
the JAXB object must be "re-transformed" into an SAAJ tree.
This re-transformation is slow and is also "lossy". For example, the
namespaces in the original message and post-JAXB message may be different.
Most SOAP Handlers don't touch the SOAP body. The JAX-WS specification does
not provide a mechanism to allow SOAP Handlers to tell the engine their
"intent".
So we want to expose an option that would allow a customer (developer or
administrator) to preserve the original message.
Solution:
The Axis JAX-RPC web service engine had a property call "high fidelity". The
intention of the property was to preserve the original message.
I am working on a fix to introduce a "jaxws.payload.highFidelity" property.
The property will be available for programatic property (used by the developer
)or as a configuration parameter (used by an administrator).
**
* Context Property:
* Name: jaxws.payload.highFidelity
* Value: Boolean.TRUE or Boolean.FALSE
* Default: null, which is interpreted as FALSE....engine may set this to
TRUE in some cases.
*
* Configuration Parameter
* Name: jaxws.payload.highFidelity
* Value: String or Boolean representing true or false
* Default: null, which is interpreted as FALSE
*
* Description:
* If the value is false, the jax-ws engine will transform the message in
the most
* performant manner. In some cases these transformations will cause the
loss of some information.
* For example, JAX-B transformations are lossy.
*
* If the value is true, the jax-ws engine will transform the message in
the most loss-less manner.
* In some cases this will result in slower performance. The message in
such cases is "high fidelity",
* which means that it is a close replica of the original message.
*
* Customers should accept the default behavior (false), and only set the
value to true if it is
* necessary for a SOAP Handler or other code requires a high fidelity
message.
*
* The engine will first examine the Context property. If not set, the
value of the Configuration
* property is used.
*/
public static final String JAXWS_PAYLOAD_HIGH_FIDELITY =
"jaxws.payload.highFidelity";
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.