SIBus inbound service invocation problem - Websphere

This is a discussion on SIBus inbound service invocation problem - Websphere ; Publish WSDL files to ZIP file and generate webservice client from these wsdls (client was generated using by RAD). When I want to invoke method on my inbound service from this client, I receive followin exception: +[14.1.09 13:57:05:525 SEČ] 0000002c ...

+ Reply to Thread
Results 1 to 5 of 5

Thread: SIBus inbound service invocation problem

  1. SIBus inbound service invocation problem

    Publish WSDL files to ZIP file and generate webservice client from these wsdls (client was generated using by RAD). When I want to invoke method on my inbound service from this client, I receive followin exception:

    +[14.1.09 13:57:05:525 SEČ] 0000002c PivotHandlerW W org.apache.commons.logging.impl.Jdk14Logger warn WSWS3734W: Warning: Exception caught from invocation to com.ibm.ws.sib.webservices.JsDispatcher:+
    +WebServicesFault+
    +faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException+
    +faultString: com.ibm.ws.sib.webservices.exception.SIBWSUnlogged Exception: CWSWS1010E: The following exception occurred while processing response java.lang.ClassCastException: com.ibm.ws.sib.mfp.impl.JsJmsTextMessageImpl incompatible with com.ibm.wsspi.sib.core.SIBusSdoMessage+
    +faultActor: http://www.ibm.com/sibws+
    +faultDetail:+

    +com.ibm.ws.sib.webservices.exception.SIBWSUnlogge dException: CWSWS1010E: The following exception occurred while processing response java.lang.ClassCastException: com.ibm.ws.sib.mfp.impl.JsJmsTextMessageImpl incompatible with com.ibm.wsspi.sib.core.SIBusSdoMessage+
    + at com.ibm.ws.webservices.engine.WebServicesFault.mak eFault(WebServicesFault.java:189)+
    + at com.ibm.ws.sib.webservices.JsDispatcher.invoke(JsD ispatcher.java:116)+
    + at com.ibm.ws.webservices.engine.PivotHandlerWrapper. invoke(PivotHandlerWrapper.java:227)+
    + at com.ibm.ws.webservices.engine.handlers.jaxrpc.JAXR PCHandler.invoke(JAXRPCHandler.java:152)+
    + at com.ibm.ws.webservices.engine.handlers.WrappedHand ler.invoke(WrappedHandler.java:64)+
    + at com.ibm.ws.webservices.engine.PivotHandlerWrapper. invoke(PivotHandlerWrapper.java:227)+
    + at com.ibm.ws.webservices.engine.PivotHandlerWrapper. invoke(PivotHandlerWrapper.java:227)+
    + at com.ibm.ws.webservices.engine.WebServicesEngine.in voke(WebServicesEngine.java:332)+
    + at com.ibm.ws.webservices.engine.transport.jms.JMSLis tenerMDB.onMessage(JMSListenerMDB.java:466)+
    + at com.ibm.ws.sib.webservices.transport.jms.SoapJmsRo uterMDB.onMessage(SoapJmsRouterMDB.java:87)+
    + at com.ibm.ejs.container.MessageEndpointHandler.invok eMdbMethod(MessageEndpointHandler.java:992)+
    + at com.ibm.ejs.container.MessageEndpointHandler.invok e(MessageEndpointHandler.java:725)+
    + at $Proxy1.onMessage(Unknown Source)+
    + at com.ibm.ws.sib.api.jmsra.impl.JmsJcaEndpointInvoke rImpl.invokeEndpoint(JmsJcaEndpointInvokerImpl.jav a:201)+
    + at com.ibm.ws.sib.ra.inbound.impl.SibRaDispatcher.dis patch(SibRaDispatcher.java:708)+
    + at com.ibm.ws.sib.ra.inbound.impl.SibRaSingleProcessL istener$SibRaWork.run(SibRaSingleProcessListener.j ava:584)+
    + at com.ibm.ejs.j2c.work.WorkProxy.run(WorkProxy.java: 497)+
    + at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.j ava:1510)+
    +Caused by: com.ibm.ws.sib.webservices.exception.SIBWSUnlogged Exception: CWSWS1010E: The following exception occurred while processing response java.lang.ClassCastException: com.ibm.ws.sib.mfp.impl.JsJmsTextMessageImpl incompatible with com.ibm.wsspi.sib.core.SIBusSdoMessage+
    + at com.ibm.ws.sib.webservices.inboundservice.EPLInvok er.receiveSIBusSdoMessage(EPLInvoker.java:507)+
    + at com.ibm.ws.sib.webservices.inboundservice.EPLInvok er.send(EPLInvoker.java:263)+
    + at com.ibm.ws.sib.webservices.inboundservice.EPLInvok er.invoke(EPLInvoker.java:1285)+
    + at com.ibm.ws.sib.webservices.JsDispatcher.processMes sage(JsDispatcher.java:226)+
    + at com.ibm.ws.sib.webservices.JsDispatcher.invoke(JsD ispatcher.java:108)+
    + ... 16 more+
    +Caused by: java.lang.ClassCastException: com.ibm.ws.sib.mfp.impl.JsJmsTextMessageImpl incompatible with com.ibm.wsspi.sib.core.SIBusSdoMessage+
    + at com.ibm.ws.sib.webservices.inboundservice.EPLInvok er.receiveSIBusSdoMessage(EPLInvoker.java:498)+
    + ... 20 more+

    in WAS console there is also interesting message:

    +[14.1.09 13:45:19:574 SEČ] 0000002c JMSListenerMD E WSWS3021E: The required "targetService" property was not present in the inbound JMS request message.+
    +[14.1.09 13:45:19:574 SEČ] 0000002c JMSListenerMD E WSWS3018E: Caught exception during request processing: WSWS3021E: The required "targetService" property was not present in the inbound JMS request message.+

    This message is displayed before class cast exception.
    I attached WAS trace log for more detailed view on my scenario.

    As I have undestood from trace log, endpoint listener receives message from client, this message is processed by JMSListenerMD, which invokes WebServiceEngine and then second message (sdo message, which is somehow generated by SIBus) is being processed by JMSListenerMD.
    In second message processing exception : The required "targetService" property was not present in the inbound JMS request message is thrown and error message is send to endpoint listener reply queue and also mentioned classcast exception is raised.

    The webservice, which I wrapped by inbound service, can be invoked by webservice client without any problems.

    So, please, can anybody give me some hint or advice about this problem?

    I also have another question. I'm not sure, if I understood SIBus inbound service concept properly.
    As I see it: If I want to create inbound service, I must have functional webservice avaliable, which I will wrap into inbound service, which is avaliable for external users via inbound port, which is associated with apropriate Endpoint listener. Then I'm able to define mediations, JAX-RPS Handlers on this inbound service ...
    In this material: http://publib.boulder.ibm.com/infoce...jw_in_new.html,
    I suppose, there is not clear, if "internally-hosted service" is webservice or not (and template WSDL serves as a template for generating inbound service wsdl).

    Thank you very much for any comments and thoughts.

  2. Re: SIBus inbound service invocation problem

    Let me see if I understand your current system correctly...

    - You have a SOAP/JMS Web service (I will call this the target service),
    that you can invoke successfully using a Web service client.
    - You have configured an inbound service using the target service's
    request queue as the inbound service's target destination.
    - The inbound service is made accessible to SOAP/JMS clients by
    associating it with a SOAP/JMS endpoint listener.

    Is that correct? Assuming it is...

    SOAP messages received by an inbound service are processed and the
    message content is put on to the inbound service's target destination as
    a SOAP SDO message, not a SOAP/JMS message. Similarly, the response
    message expected by the inbound service must be a SOAP SDO message, not
    a SOAP/JMS message.

    SOAP SDO messages can be consumed by JMS MDBs but the MDB will see the
    SOAP SDO message simply as a JMS message containing the raw SOAP message
    content. This JMS view of the SOAP SDO message will not contain some of
    the information included in SOAP/JMS messages sent between SOAP/JMS
    clients and services. So messages entering the bus through an inbound
    service should not be forwarded directly on to a SOAP/JMS service.

    No automatic conversion is done from SOAP/JMS message to SOAP SDO
    message, so sending a SOAP/JMS message as the reply to an inbound
    service will generate the error that you are seeing:

    java.lang.ClassCastException:
    com.ibm.ws.sib.mfp.impl.JsJmsTextMessageImpl incompatible with
    com.ibm.wsspi.sib.core.SIBusSdoMessage

    So how is this supposed to work...?

    An inbound service provides a way of exposing a bus destination as a Web
    service. An outbound service provides a way of accessing a Web service
    as a bus destination. Inbound services put SOAP SDO messages into the
    bus, and outbound services consume SOAP SDO messages from the bus and
    use these SOAP messages to invoke Web services.

    So typical usage is to:

    1. Create an outbound service pointing to your target service by using
    the target service WSDL.
    2. Create an inbound service pointing to the outbound service
    destination, also using the target service WSDL as the inbound service's
    template WSDL.

    Now you have an inbound service that looks exactly like the target
    service, except on this new inbound service you can configure your own
    security, add JAX-RPC handlers etc., and pick different transports by
    which it can be accessed.

    Amongst other things, the Web services gateway capability in the ND
    product provides a slightly simpler administrative model for creating
    these inbound/outbound service couplings.

    Message flow for a client invoking the inbound service will look similar
    to this:

    client --(SOAP/HTTP or SOAP/JMS)--> inbound service --(SDO)--> outbound
    service --(SOAP/HTTP or SOAP/JMS)--> target service

    The response message from the target service will flow back along the
    reverse route. JAX-RPC handlers can be applied at both the inbound and
    outbound services. The transport protocol (HTTP or JMS) can be
    different between client and inbound service, and between outbound and
    target services.

    Hope that helps.

    mdio@trask.cz wrote:
    > Publish WSDL files to ZIP file and generate webservice client from these wsdls (client was generated using by RAD). When I want to invoke method on my inbound service from this client, I receive followin exception:
    >
    > +[14.1.09 13:57:05:525 SEČ] 0000002c PivotHandlerW W org.apache.commons.logging.impl.Jdk14Logger warn WSWS3734W: Warning: Exception caught from invocation to com.ibm.ws.sib.webservices.JsDispatcher:+
    > +WebServicesFault+
    > +faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException+
    > +faultString: com.ibm.ws.sib.webservices.exception.SIBWSUnlogged Exception: CWSWS1010E: The following exception occurred while processing response java.lang.ClassCastException: com.ibm.ws.sib.mfp.impl.JsJmsTextMessageImpl incompatible with com.ibm.wsspi.sib.core.SIBusSdoMessage+
    > +faultActor: http://www.ibm.com/sibws+
    > +faultDetail:+
    >
    > +com.ibm.ws.sib.webservices.exception.SIBWSUnlogge dException: CWSWS1010E: The following exception occurred while processing response java.lang.ClassCastException: com.ibm.ws.sib.mfp.impl.JsJmsTextMessageImpl incompatible with com.ibm.wsspi.sib.core.SIBusSdoMessage+
    > + at com.ibm.ws.webservices.engine.WebServicesFault.mak eFault(WebServicesFault.java:189)+
    > + at com.ibm.ws.sib.webservices.JsDispatcher.invoke(JsD ispatcher.java:116)+
    > + at com.ibm.ws.webservices.engine.PivotHandlerWrapper. invoke(PivotHandlerWrapper.java:227)+
    > + at com.ibm.ws.webservices.engine.handlers.jaxrpc.JAXR PCHandler.invoke(JAXRPCHandler.java:152)+
    > + at com.ibm.ws.webservices.engine.handlers.WrappedHand ler.invoke(WrappedHandler.java:64)+
    > + at com.ibm.ws.webservices.engine.PivotHandlerWrapper. invoke(PivotHandlerWrapper.java:227)+
    > + at com.ibm.ws.webservices.engine.PivotHandlerWrapper. invoke(PivotHandlerWrapper.java:227)+
    > + at com.ibm.ws.webservices.engine.WebServicesEngine.in voke(WebServicesEngine.java:332)+
    > + at com.ibm.ws.webservices.engine.transport.jms.JMSLis tenerMDB.onMessage(JMSListenerMDB.java:466)+
    > + at com.ibm.ws.sib.webservices.transport.jms.SoapJmsRo uterMDB.onMessage(SoapJmsRouterMDB.java:87)+
    > + at com.ibm.ejs.container.MessageEndpointHandler.invok eMdbMethod(MessageEndpointHandler.java:992)+
    > + at com.ibm.ejs.container.MessageEndpointHandler.invok e(MessageEndpointHandler.java:725)+
    > + at $Proxy1.onMessage(Unknown Source)+
    > + at com.ibm.ws.sib.api.jmsra.impl.JmsJcaEndpointInvoke rImpl.invokeEndpoint(JmsJcaEndpointInvokerImpl.jav a:201)+
    > + at com.ibm.ws.sib.ra.inbound.impl.SibRaDispatcher.dis patch(SibRaDispatcher.java:708)+
    > + at com.ibm.ws.sib.ra.inbound.impl.SibRaSingleProcessL istener$SibRaWork.run(SibRaSingleProcessListener.j ava:584)+
    > + at com.ibm.ejs.j2c.work.WorkProxy.run(WorkProxy.java: 497)+
    > + at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.j ava:1510)+
    > +Caused by: com.ibm.ws.sib.webservices.exception.SIBWSUnlogged Exception: CWSWS1010E: The following exception occurred while processing response java.lang.ClassCastException: com.ibm.ws.sib.mfp.impl.JsJmsTextMessageImpl incompatible with com.ibm.wsspi.sib.core.SIBusSdoMessage+
    > + at com.ibm.ws.sib.webservices.inboundservice.EPLInvok er.receiveSIBusSdoMessage(EPLInvoker.java:507)+
    > + at com.ibm.ws.sib.webservices.inboundservice.EPLInvok er.send(EPLInvoker.java:263)+
    > + at com.ibm.ws.sib.webservices.inboundservice.EPLInvok er.invoke(EPLInvoker.java:1285)+
    > + at com.ibm.ws.sib.webservices.JsDispatcher.processMes sage(JsDispatcher.java:226)+
    > + at com.ibm.ws.sib.webservices.JsDispatcher.invoke(JsD ispatcher.java:108)+
    > + ... 16 more+
    > +Caused by: java.lang.ClassCastException: com.ibm.ws.sib.mfp.impl.JsJmsTextMessageImpl incompatible with com.ibm.wsspi.sib.core.SIBusSdoMessage+
    > + at com.ibm.ws.sib.webservices.inboundservice.EPLInvok er.receiveSIBusSdoMessage(EPLInvoker.java:498)+
    > + ... 20 more+
    >
    > in WAS console there is also interesting message:
    >
    > +[14.1.09 13:45:19:574 SEČ] 0000002c JMSListenerMD E WSWS3021E: The required "targetService" property was not present in the inbound JMS request message.+
    > +[14.1.09 13:45:19:574 SEČ] 0000002c JMSListenerMD E WSWS3018E: Caught exception during request processing: WSWS3021E: The required "targetService" property was not present in the inbound JMS request message.+
    >
    > This message is displayed before class cast exception.
    > I attached WAS trace log for more detailed view on my scenario.
    >
    > As I have undestood from trace log, endpoint listener receives message from client, this message is processed by JMSListenerMD, which invokes WebServiceEngine and then second message (sdo message, which is somehow generated by SIBus) is being processed by JMSListenerMD.
    > In second message processing exception : The required "targetService" property was not present in the inbound JMS request message is thrown and error message is send to endpoint listener reply queue and also mentioned classcast exception is raised.
    >
    > The webservice, which I wrapped by inbound service, can be invoked by webservice client without any problems.
    >
    > So, please, can anybody give me some hint or advice about this problem?
    >
    > I also have another question. I'm not sure, if I understood SIBus inbound service concept properly.
    > As I see it: If I want to create inbound service, I must have functional webservice avaliable, which I will wrap into inbound service, which is avaliable for external users via inbound port, which is associated with apropriate Endpoint listener. Then I'm able to define mediations, JAX-RPS Handlers on this inbound service ...
    > In this material: http://publib.boulder.ibm.com/infoce...jw_in_new.html,
    > I suppose, there is not clear, if "internally-hosted service" is webservice or not (and template WSDL serves as a template for generating inbound service wsdl).
    >
    > Thank you very much for any comments and thoughts.


  3. Re: SIBus inbound service invocation problem

    target service

    The response message from the target service will flow back along the reverse route. JAX-RPC handlers can be applied at both the inbound and outbound services. The transport protocol (HTTP or JMS) can be different between client and inbound service, and between outbound and target services.

    Hope that helps.

  4. Re: SIBus inbound service invocation problem

    Hi,

    Thank you very much for your very clear and didactic answer, it helps me a lot to understand concept of inbound/outbound services.
    I have finally implemented it successsfully.
    Now I'm colabarating with foreign buses and webservice gateway, so I'll generate another questions certainly

    best regard

    Michal

  5. Re: SIBus inbound service invocation problem

    SOAP SDO messages can be consumed by JMS MDBs but the MDB will see the SOAP SDO message simply as a JMS message containing the raw SOAP message content. This JMS view of the SOAP SDO message will not contain some of the information included in SOAP/JMS messages sent between SOAP/JMS clients and services. So messages entering the bus through an inbound service should not be forwarded directly on to a SOAP/JMS service.

    No automatic conversion is done from SOAP/JMS message to SOAP SDO message, so sending a SOAP/JMS message as the reply to an inbound service will generate the error that you are seeing:

    java.lang.ClassCastException: com.ibm.ws.sib.mfp.impl.JsJmsTextMessageImpl incompatible with com.ibm.wsspi.sib.core.SIBusSdoMessage

    So how is this supposed to work...?

    An inbound service provides a way of exposing a bus destination as a Web service. An outbound service provides a way of accessing a Web service as a bus destination. Inbound services put SOAP SDO messages into the bus, and outbound services consume SOAP SDO messages from the bus and use these SOAP messages to invoke Web services.

    So typical usage is to:

    1. Create an outbound service pointing to your target service by using the target service WSDL.
    2. Create an inbound service pointing to the outbound service destination, also using the target service WSDL as the inbound service's template WSDL.

    Now you have an inbound service that looks exactly like the target service, except on this new inbound service you can configure your own security, add JAX-RPC handlers etc., and pick different transports by which it can be accessed.

    Amongst other things, the Web services gateway capability in the ND product provides a slightly simpler administrative model for creating these inbound/outbound service couplings.

    Message flow for a client invoking the inbound service will look similar to this:

    client --(SOAP/HTTP or SOAP/JMS)--> inbound service --(SDO)--> outbound service --(SOAP/HTTP or SOAP/JMS)--> target service

    The response message from the target service will flow back along the reverse route. JAX-RPC handlers can be applied at both the inbound and outbound services. The transport protocol (HTTP or JMS) can be different between client and inbound service, and between outbound and target services.

+ Reply to Thread