0x800410FD sending multiple messages over MSMQ

  • Bill Carlson
    Bill Carlson

    I am using j-interop to work with MSMQ, and have been extremely happy with it. However, I am running into an issue where sending multiple messages over a queue is resulting in an 0x800401FD error. Specifically, it will send two messages, and then error out with the following error:

    Exception in thread "main" 
        org.jinterop.dcom.common.JIException: Message not found for errorCode: 0x800401FD
        at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:994)
        at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:945)
        at org.jinterop.dcom.core.JIComObjectImpl.call(JIComObjectImpl.java:271)
        at org.jinterop.dcom.core.JIComObjectImpl.call(JIComObjectImpl.java:156)
        at org.jinterop.dcom.impls.automation.JIDispatchImpl.invoke(JIDispatchImpl.java:313)
        at org.jinterop.dcom.impls.automation.JIDispatchImpl.callMethodA(JIDispatchImpl.java:518)
        at org.jinterop.dcom.impls.automation.JIDispatchImpl.callMethodA(JIDispatchImpl.java:524)
        at org.jinterop.dcom.impls.automation.JIDispatchImpl.callMethod(JIDispatchImpl.java:463)
        at com.oidev.MSMQSend.main(MSMQSend.java:50)
    Caused by: rpc.FaultException: Received fault. (unknown)
        at rpc.ConnectionOrientedEndpoint.call(ConnectionOrientedEndpoint.java:141)
        at rpc.Stub.call(Stub.java:113)
        at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:990)
        ... 8 more

    I have a test driver and the output at https://gist.github.com/coacoas/5ccf4ab0e49456a76993 or I can send a jar file containing all dependencies (except ntlmauth.dll), if necessary.

    This is using the latest (3.0.0) release. I also checked against the HEAD of the subversion repository, and this issue appears to still exist.

    To run the driver:
    - Create a local private message queue.
    - Ensure that ntlmauth.dll is in your java.library.path
    - Execute with the command line parameters: FormatName [message [label]]

    For instance, to run the driver on my system, I executed:
    java -jar jinterop-issue.jar "DIRECT=OS:localhost\private$\bcarlson"

    What am I doing wrong here? I would love to be able to keep the queue connection open for a long time, and send messages intermittently.

    -=Bill Carlson=-

    Last edit: Bill Carlson 2014-04-08