Hi Chamikara,
Thank you very much for the valuable comments. With your help, I've
discovered that my assumption was wrong. In sendResult(), I must have
call fireAndForget() instead of sendReceive(), since I didn't expect a
response from the client. By using fireAndForget() the code runs as
expected.
Now, only thing remained is to make my custom fireAndForget() that let
me handle HTTP 500 situations ;-)
Regards,
Ali Sadik Kumlali
--- Chamikara Jayalath <[EMAIL PROTECTED]> wrote:
> Hi Ali,
>
> Even though you have done changes to your service code you are still
> using
> the serviceClient.sendReceive() method in the client side which uses
> the
> OutInAxisOperationClient.
>
> When useSeperateListner=false, OutInAxisOperationClient expects a
> same-channel response message and that should be the reason for this
> exception. When it is true what is expected is a asnyc response which
> you
> send within your service code.
>
> Chamikara
>
>
> On 5/14/06, Ali Sadik Kumlali <[EMAIL PROTECTED]> wrote:
> >
> > Hi all,
> >
> > Has anyone ran into this exception? I could manage :) to get it
> with
> > following steps:
> >
> > - Used EchoBlockingDualClient sample. Didn't change client code.
> > - Changed message receiver of MyService to
> RawXMLINOnlyMessageReceiver
> > - Changed MyService.java as following:
> >
> >
>
----------------------------------------------------------------------
> > public class MyService {
> >
> > private MessageContext inMsgCtx;
> >
> > public void setOperationContext(OperationContext opctx)
> > throws AxisFault {
> > inMsgCtx =
> >
> opctx.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
> > }
> >
> > public void echo (OMElement incomingPayload)
> >
> > throws XMLStreamException {
> > incomingPayload.build();
> > incomingPayload.detach();
> >
> > OMElement outgoingPayload = incomingPayload;
> >
> > oldOptions = inMsgCtx.getOptions();
> > String messageID = inMsgCtx.getMessageID();
> > EndpointReference targetEPR = oldOptions.getReplyTo();
> > String action = oldOptions.getAction();
> > sendResult(messageID, targetEPR, action, outgoingPayload);
> > }
> >
> > public void sendResult(String messageId, EndpointReference
> targetEPR,
> > String action, OMElement payload) {
> > ServiceClient sender = null;
> > try {
> > Options options = new Options();
> > options.setTo(targetEPR);
> > options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> > options.setUseSeparateListener(false);
> > options.setAction(action);
> > options.setMessageId(UUIDGenerator.getUUID());
> > options.setRelationships(new RelatesTo[] {
> > new RelatesTo(messageId,
> > AddressingConstants.Submission.
> > WSA_RELATES_TO_RELATIONSHIP_TYPE_DEFAULT_VALUE)});
> >
> > ConfigurationContext confCtx =
> > ListenerManager.defaultConfigurationContext;
> > sender = new ServiceClient(confCtx, null);
> > sender.setOptions(options);
> >
> > // Blocking Invocation
> > sender.sendReceive(payload);
> > } catch (AxisFault axisFault) {
> > axisFault.printStackTrace();
> > } catch (Exception ex) {
> > ex.printStackTrace();
> > } finally {
> > try {
> > sender.finalizeInvoke();
> > } catch (AxisFault axisFault) {
> > // have to ignore this
> > axisFault.printStackTrace();
> > }
> > }
> > }
> > }
> >
>
----------------------------------------------------------------------
> >
> > When I pass "true" to setUseSeparateListener(), there is no
> problem.
> > Otherwise I get following exception:
> >
> >
>
----------------------------------------------------------------------
> > [DEBUG][2006-05-13 23:15:08,046] org.apache.axis2.engine.Phase -
> > Checking post-conditions for phase "MessageOut"
> > postMethod.getStatusCode(): 200
> > contentEncoding: null
> > org.apache.axis2.AxisFault: com.ctc.wstx.exc.WstxEOFException:
> > Unexpected EOF in prolog
> > at [row,col {unknown-source}]: [1,0]; nested exception is:
> > org.apache.axiom.om.OMException:
> com.ctc.wstx.exc.WstxEOFException
> > :
> > Unexpected EOF in prolog
> > at [row,col {unknown-source}]: [1,0]
> > at
> > org.apache.axis2.transport.TransportUtils.createSOAPMessage(
> > TransportUtils.java:126)
> > at
> > org.apache.axis2.transport.TransportUtils.createSOAPMessage(
> > TransportUtils.java:67)
> > at
> > org.apache.axis2.description.OutInAxisOperationClient.send(
> > OutInAxisOperation.java:349)
> > at
> > org.apache.axis2.description.OutInAxisOperationClient.execute(
> > OutInAxisOperation.java:279)
> > at
> >
>
org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:513)
> > ...
> >
>
----------------------------------------------------------------------
> >
> > Is it normal behavior due to a missing point in my code, or is it a
> > bug?
> >
> > Any help would be appreciated.
> >
> > Regards,
> >
> > Ali Sadik Kumlali
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Tired of spam? Yahoo! Mail has the best spam protection around
> > http://mail.yahoo.com
> >
>
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com