none
WCF-OracleDb : PostpollStatement Sleep RRS feed

  • General discussion

  • Hi there,

    I want to execute the pl/sql block DBMS_LOCK.SLEEP(3) on the postpollstatement of the Receive location.

    Whenever I specify this value, I get the following error (there is no error if I don't specify this block)

    Any idea of what is the exact syntax? could I force a wait on the postpollstatement? if yes how?

     

    URL "oracledb://myserver/?PollingId=Accounts" is shutting down. Details:"System.NullReferenceException: The reference is not set to instance of an object.
       à Microsoft.BizTalk.Adapter.Wcf.Runtime.BizTalkServiceInstance.EndOperation(IAsyncResult result)
       à Microsoft.BizTalk.Adapter.Wcf.Runtime.BizTalkServiceInstance.Microsoft.BizTalk.Adapter.Wcf.Runtime.IOneWayAsyncTxn.EndOneWayMethod(IAsyncResult result)

    Below is the detailed warning

    The adapter "WCF-OracleDB" raised an error message. Details "System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
       à Microsoft.Adapters.OracleCommon.ProcedureResponseBodyWriter.OnWriteBodyContents(XmlDictionaryWriter writer)
       à System.ServiceModel.Channels.BodyWriter.WriteBodyContents(XmlDictionaryWriter writer)
       à System.ServiceModel.Channels.BodyWriterMessage.OnWriteBodyContents(XmlDictionaryWriter writer)
       à System.ServiceModel.Channels.Message.WriteBodyContents(XmlDictionaryWriter writer)
       à Microsoft.Adapters.AdapterUtilities.AdapterMessage.OnWriteBodyContents(XmlDictionaryWriter writer)
       à System.ServiceModel.Channels.Message.WriteBodyContents(XmlDictionaryWriter writer)
       à Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfMarshaller.CreateBizTalkMessageStream(Message wcfMessage, IAdapterConfigInboundMessageMarshalling config)
       à Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfMarshaller.CreateBizTalkMessage(IBaseMessageFactory messageFactory, IAdapterConfigInboundMessageMarshalling marshallingConfig, Message wcfMessage)
       à Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfMarshaller.CreateBizTalkSubmitMessage(IBaseMessageFactory factory, String inboundTransportLocation, String inboundTransportType, RLConfig config, Message wcfMessage, String ssoToken)
       à Microsoft.BizTalk.Adapter.Wcf.Runtime.BizTalkSubmitBase..ctor(Message message, BizTalkEndpointContext endpointContext, ControlledTermination control, AsyncCallback realCallback, String ssoToken)
       à Microsoft.BizTalk.Adapter.Wcf.Runtime.BizTalkSubmitTxn..ctor(Message message, AsyncCallback callback, Object state, Transaction transaction, BizTalkEndpointContext endpointContext, String ssoToken, ControlledTermination control)
       à Microsoft.BizTalk.Adapter.Wcf.Runtime.BizTalkOperation.Create(Message message, AsyncCallback callback, Object state, String ssoToken, Boolean bizTalkOneWay, BizTalkEndpointContext endpointContext, ControlledTermination control)
       à Microsoft.BizTalk.Adapter.Wcf.Runtime.BizTalkServiceInstance.BeginOperation(Message message, AsyncCallback callback, Object state, Boolean bizTalkOneWay)".

     


    BizTalk Consultant in France

    Tuesday, June 14, 2011 1:14 PM

All replies

  • It looks like the following post calls that proc with the Oracle ODBC adapter: http://bembengarifin-tech.blogspot.com/2008/04/biztalk-2006-oracle-adapter-odbc.html.

    I wonder if the WCF-OracleDB adapter can handle that statement or not. If you must use the OracleDB adapter I would contact Microsoft Support about this issue - the stack trace shows the error is coming from the Microsoft adapter assembly.

    Thanks,


    If this answers your question, please use the "Answer" button to say so | Ben Cline

    Tuesday, June 14, 2011 1:58 PM
    Moderator
  • hmmm,

    The link doesn't provide any help.

    I used this dbms_lock.sleep(1) in other servers, and in just one server the recieve location didn't generate an error

    Regards,


    BizTalk Consultant in France
    Tuesday, June 14, 2011 4:28 PM
  • could you change this to "select dbmc_lock.sleep(1) from dual" and check if it works for you?
    -- Please mark as answered if this answers your question.
    Wednesday, June 15, 2011 4:10 AM
  • I think you ment select dbms_lock.sleep(1) from dual, but no, it does not work

    I keep getting the same error messages, the reference is not set to an instance of an object? weired isn't it?

    Regards,


    BizTalk Consultant in France
    Wednesday, June 15, 2011 1:55 PM
  • Since you said it works on other servers, maybe try removing the receive location and recreating it? Or try importing the binding file from the other server - perhaps something happened to that receive location's configuration.

    Thanks,


    If this answers your question, please use the "Answer" button to say so | Ben Cline
    Wednesday, June 15, 2011 5:19 PM
    Moderator
  • Frist I thought it worked, but this was because there were no data to retrieve from Oracle, but in fact, it did not work

     

    Regards,


    BizTalk Consultant in France
    Thursday, June 16, 2011 12:14 PM
  • Could you share the binding configuration with us?
    -- Please mark as answered if this answers your question.
    Friday, June 17, 2011 7:03 AM