You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Rich Scheuerle (JIRA)" <ji...@apache.org> on 2007/02/13 15:35:05 UTC

[jira] Created: (AXIS2-2166) JAX-WS Request Message Persistance Failure

JAX-WS Request Message Persistance Failure
------------------------------------------

                 Key: AXIS2-2166
                 URL: https://issues.apache.org/jira/browse/AXIS2-2166
             Project: Axis 2.0 (Axis2)
          Issue Type: Bug
          Components: jaxws
            Reporter: Rich Scheuerle
         Assigned To: Rich Scheuerle


Here is the scenario:
   1)  JAXWSReceiver receives request message.
    2) During invoke processing, portions of the request message are converted into business objects.  This is intentionally a destructive transformation for performance reasons (i.e. we don't want to cache the om tree while converting to a JAXB object).
   3) Subsequent outbound RM processing persists the response MessageContext.
    4) Pesisting the MessageContext also persists the parent OperationContext, which in turn, persists the request MessageContext.
   5) Persisting the request MessageContext causes an exception due to the destructive transformation in (2).

I am working on a solution to fix this problem in a manner that does not dramatically hinder performance.



Here is an example exception:
[12/02/07 10:38:38:062 GMT] 00000032 ExceptionFact 1 org.apache.commons.logging.impl.Jdk14Logger debug Create Exception:

                                 javax.xml.ws.WebServiceException: An internal error occurred. The block for org.apache.axis2.jaxws.message.databinding.impl.SourceBlockImpl is already consumed. Processing cannot continue.  Run with the debug option to determine where the block was first consumed.

	at org.apache.axis2.jaxws.ExceptionFactory.createWebServiceException(ExceptionFactory.java:177)

	at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:79)

	at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:124)

	at org.apache.axis2.jaxws.message.impl.BlockImpl.getXMLStreamReader(BlockImpl.java:189)

	at org.apache.axis2.jaxws.message.impl.BlockImpl.getReader(BlockImpl.java:215)

	at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getDirectReader(OMSourcedElementImpl.java:121)

	at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.forceExpand(OMSourcedElementImpl.java:144)

	at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:531)

	at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:807)

	at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:792)

	at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:807)

	at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:180)

	at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:792)

	at org.apache.axiom.om.impl.llom.OMNodeImpl.serialize(OMNodeImpl.java:400)

	at org.apache.axis2.context.MessageContext.writeExternal(MessageContext.java:2148)

	at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1397)

	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1375)

	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1106)

	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:324)

	at org.apache.axis2.util.ObjectStateUtils.writeHashMap(ObjectStateUtils.java:976)

	at org.apache.axis2.context.OperationContext.writeExternal(OperationContext.java:514)

	at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1397)

	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1375)

	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1106)

	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:324)

	at org.apache.axis2.util.ObjectStateUtils.writeObject(ObjectStateUtils.java:373)

	at org.apache.axis2.context.MessageContext.writeExternal(MessageContext.java:2655)

	at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1397)

	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1375)

	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1106)

	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:324)


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


[jira] Updated: (AXIS2-2166) JAX-WS Request Message Persistance Failure

Posted by "Rich Scheuerle (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AXIS2-2166?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Rich Scheuerle updated AXIS2-2166:
----------------------------------

    Attachment: patch.txt

> JAX-WS Request Message Persistance Failure
> ------------------------------------------
>
>                 Key: AXIS2-2166
>                 URL: https://issues.apache.org/jira/browse/AXIS2-2166
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: jaxws
>            Reporter: Rich Scheuerle
>         Assigned To: Rich Scheuerle
>         Attachments: patch.txt
>
>
> Here is the scenario:
>    1)  JAXWSReceiver receives request message.
>     2) During invoke processing, portions of the request message are converted into business objects.  This is intentionally a destructive transformation for performance reasons (i.e. we don't want to cache the om tree while converting to a JAXB object).
>    3) Subsequent outbound RM processing persists the response MessageContext.
>     4) Pesisting the MessageContext also persists the parent OperationContext, which in turn, persists the request MessageContext.
>    5) Persisting the request MessageContext causes an exception due to the destructive transformation in (2).
> I am working on a solution to fix this problem in a manner that does not dramatically hinder performance.
> Here is an example exception:
> [12/02/07 10:38:38:062 GMT] 00000032 ExceptionFact 1 org.apache.commons.logging.impl.Jdk14Logger debug Create Exception:
>                                  javax.xml.ws.WebServiceException: An internal error occurred. The block for org.apache.axis2.jaxws.message.databinding.impl.SourceBlockImpl is already consumed. Processing cannot continue.  Run with the debug option to determine where the block was first consumed.
> 	at org.apache.axis2.jaxws.ExceptionFactory.createWebServiceException(ExceptionFactory.java:177)
> 	at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:79)
> 	at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:124)
> 	at org.apache.axis2.jaxws.message.impl.BlockImpl.getXMLStreamReader(BlockImpl.java:189)
> 	at org.apache.axis2.jaxws.message.impl.BlockImpl.getReader(BlockImpl.java:215)
> 	at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getDirectReader(OMSourcedElementImpl.java:121)
> 	at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.forceExpand(OMSourcedElementImpl.java:144)
> 	at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:531)
> 	at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:807)
> 	at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:792)
> 	at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:807)
> 	at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:180)
> 	at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:792)
> 	at org.apache.axiom.om.impl.llom.OMNodeImpl.serialize(OMNodeImpl.java:400)
> 	at org.apache.axis2.context.MessageContext.writeExternal(MessageContext.java:2148)
> 	at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1397)
> 	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1375)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1106)
> 	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:324)
> 	at org.apache.axis2.util.ObjectStateUtils.writeHashMap(ObjectStateUtils.java:976)
> 	at org.apache.axis2.context.OperationContext.writeExternal(OperationContext.java:514)
> 	at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1397)
> 	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1375)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1106)
> 	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:324)
> 	at org.apache.axis2.util.ObjectStateUtils.writeObject(ObjectStateUtils.java:373)
> 	at org.apache.axis2.context.MessageContext.writeExternal(MessageContext.java:2655)
> 	at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1397)
> 	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1375)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1106)
> 	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:324)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


[jira] Resolved: (AXIS2-2166) JAX-WS Request Message Persistance Failure

Posted by "Rich Scheuerle (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AXIS2-2166?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Rich Scheuerle resolved AXIS2-2166.
-----------------------------------

    Resolution: Fixed

The JAX-WS message is marked as "post pivot" after the message is dispatched to the web service provider/impl.
Subsequent persistance of the message will:
    1) write out the elements that are not consumed by the dispatcher.
    2) write out empty elements for the elements consumed by the dispatcher.
    3) log a debug message for each of the empty elements.

It is assumed that the outbound handler processing will never need the "consumed elements".  The consumed
elements are generally the elements located in the body of the message.

If the outbound handler does need such information, I also provided a SAVE_REQUEST_MESSAGE property.
If set, the message will be saved prior to dispatcher processing and restored after dispatcher processing.
Use of this flag is not reccommended as it will cause the expansion of the OM tree prior to JAX-WS Dispatcher processing.

Committed revision 507347.

> JAX-WS Request Message Persistance Failure
> ------------------------------------------
>
>                 Key: AXIS2-2166
>                 URL: https://issues.apache.org/jira/browse/AXIS2-2166
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: jaxws
>            Reporter: Rich Scheuerle
>         Assigned To: Rich Scheuerle
>         Attachments: patch.txt
>
>
> Here is the scenario:
>    1)  JAXWSReceiver receives request message.
>     2) During invoke processing, portions of the request message are converted into business objects.  This is intentionally a destructive transformation for performance reasons (i.e. we don't want to cache the om tree while converting to a JAXB object).
>    3) Subsequent outbound RM processing persists the response MessageContext.
>     4) Pesisting the MessageContext also persists the parent OperationContext, which in turn, persists the request MessageContext.
>    5) Persisting the request MessageContext causes an exception due to the destructive transformation in (2).
> I am working on a solution to fix this problem in a manner that does not dramatically hinder performance.
> Here is an example exception:
> [12/02/07 10:38:38:062 GMT] 00000032 ExceptionFact 1 org.apache.commons.logging.impl.Jdk14Logger debug Create Exception:
>                                  javax.xml.ws.WebServiceException: An internal error occurred. The block for org.apache.axis2.jaxws.message.databinding.impl.SourceBlockImpl is already consumed. Processing cannot continue.  Run with the debug option to determine where the block was first consumed.
> 	at org.apache.axis2.jaxws.ExceptionFactory.createWebServiceException(ExceptionFactory.java:177)
> 	at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:79)
> 	at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:124)
> 	at org.apache.axis2.jaxws.message.impl.BlockImpl.getXMLStreamReader(BlockImpl.java:189)
> 	at org.apache.axis2.jaxws.message.impl.BlockImpl.getReader(BlockImpl.java:215)
> 	at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getDirectReader(OMSourcedElementImpl.java:121)
> 	at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.forceExpand(OMSourcedElementImpl.java:144)
> 	at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:531)
> 	at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:807)
> 	at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:792)
> 	at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:807)
> 	at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:180)
> 	at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:792)
> 	at org.apache.axiom.om.impl.llom.OMNodeImpl.serialize(OMNodeImpl.java:400)
> 	at org.apache.axis2.context.MessageContext.writeExternal(MessageContext.java:2148)
> 	at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1397)
> 	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1375)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1106)
> 	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:324)
> 	at org.apache.axis2.util.ObjectStateUtils.writeHashMap(ObjectStateUtils.java:976)
> 	at org.apache.axis2.context.OperationContext.writeExternal(OperationContext.java:514)
> 	at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1397)
> 	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1375)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1106)
> 	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:324)
> 	at org.apache.axis2.util.ObjectStateUtils.writeObject(ObjectStateUtils.java:373)
> 	at org.apache.axis2.context.MessageContext.writeExternal(MessageContext.java:2655)
> 	at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1397)
> 	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1375)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1106)
> 	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:324)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org