ConversationNotFoundException

I am getting the following ConversationNotFoundException when i run the following.
I starts the conversation by calling --- fireTimer("3456") ---
Then when i run any other function I will get the following -- ConversationNotFoundException
I do not undestand the reason why the conversation is terminated??
------------------------checkdb.jws -------------------------------
import userCtrl.CUser;
public class checkdb implements com.bea.jws.WebService
* @common:control
private userCtrl.userdb userdb;
private String userName;
static final long serialVersionUID = 1L;
* @common:operation
* @jws:conversation phase="start"
public void fireTimer(String strUser)
CUser loginUser = userdb.getUser("33682");
userName = loginUser.getFirstName() + "--" + loginUser.getLastName();
* @common:operation
* @jws:conversation phase="continue"
public String continueTimer()
return "Inisde continue:" + userName;
* @common:operation
* @jws:conversation phase="finish"
public void stopTimer()
---------------------- userdb.jcx ------------------------
package userCtrl;
import com.bea.control.*;
import java.sql.SQLException;
* Defines a new database control.
* The @jc:connection tag indicates which WebLogic data source will be used by
* this database control. Please change this to suit your needs. You can see a
* list of available data sources by going to the WebLogic console in a browser
* (typically http://localhost:7001/console) and clicking Services, JDBC,
* Data Sources.
* @jc:connection data-source-jndi-name="cgrdbmsPool"
public interface userdb extends DatabaseControl, com.bea.control.ControlExtension
static final long serialVersionUID = 1L;
* @jc:sql statement="SELECT U_NAME as userName, U_FIRST_NAME as firstName,
U_LAST_NAME as lastName FROM users where U_NAME={username}"
CUser getUser(String username);
* @jc:sql statement="UPDATE users set U_FIRST_NAME={firstname}, U_LAST_NAME={lastname}
where U_NAME={username}"
void UpdateUser(String firstname, String lastname, String username);
------------------- CUser.java --------------------
package userCtrl;
import java.io.Serializable;
public class CUser implements Serializable
private String userName;
private String firstName;
private String lastName;
public CUser() {}
public CUser(String name, String first, String last)
userName=name;
firstName=first;
lastName=last;
public String getUserName() { return userName; }
public void setUserName(String name) { userName=name; }
public String getFirstName() { return firstName; }
public void setFirstName(String first) {  firstName=first; }
public String getLastName() { return lastName; }
public void setLastName(String last) {  lastName=last; }

This happens when the process invoked is already over and another request has been sent to for the same process, same conversation to continue.
What you can try is stop the client sending messages to the server, if this is not a production environment, then remove all the aborted processes, and also running processes (from WLI console).
Now restart the client invoking the service/process on the server and check.
Regards,
Rommel Sharma.

Similar Messages

  • JAX-WS proxy and WS-ReliableMessaging

    Hello all,
    JDeveloper 11.1.2.3
    I've started the foray into looking at reliable web services as specified by WS-ReliableMessaging. I have a very simple Hello World web service deployed (it was written in C# and deployed on IIS, if you have to ask :P). In JDeveloper, I've generated a JAX-WS Style proxy and test class using the JDeveloper wizard to do so. I've specified that no Async methods be generated and that there are no client OWSM policies (none are deemed compatible with the web service anyway).
    I then add a bit of code to my test class and run to test. The first time I run the class, the WS calls work successfully, although after the sequence of calls, I get an exception displayed in the console (see below). If I try to run the class again, the web service calls don't even execute and I get a different exception in the console (again, see below - at least part of this error is captured by my ReliabilityErrorListener). This sequence of events alternates ad-infinitum (odd-numbered attempts work with an exception, even-numbered attempts don't work.
    I show my test code here:
          // Add your code to call the desired methods.
        WsrmClientInitFeature f = new WsrmClientInitFeature(true);
        ReliabilityErrorListener listener = new ReliabilityErrorListener()
          public void onReliabilityError(ReliabilityErrorContext context)
            // At a *minimum* do this
            System.out.println("RM sequence failure: " + context.getFaultSummaryMessage());
            // And optionally do this...
            // The context parameter tells you whether a request or the entire
            // sequence has failed. If a sequence fails, you'll get a notification
            // for each undelivered request (if any) on the sequence.
            if (context.isRequestSpecific())
              // We have a single request failure (possibly as part of a larger
              // sequence failure).
              // We can get the original request back like this:
              String operationName = context.getOperationName();
              System.out.println("Failed to deliver request for operation '" + operationName + "'. Fault summary: " +
                                 context.getFaultSummaryMessage());
            else
              // The entire sequence has encountered an error.
              System.out.println("Entire sequence failed: " + context.getFaultSummaryMessage());
        f.setErrorListener(listener);
        hello = helloService.getWSHttpBindingHello(f);
        WsrmClient c = WsrmClientFactory.getWsrmClientFromPort(hello);
        System.out.println("Sequence ID is " + c.getSequenceId());
        //   c.reset();
        System.out.println(hello.getGreeting("John"));
        System.out.println(hello.getGreeting("Fred"));
        System.out.println(hello.getGreeting("Josephine"));
        System.out.println("Sequence ID is " + c.getSequenceId());
        try
          System.out.println(c.getAckRanges().first().lowerBounds);
          System.out.println(c.getAckRanges().first().upperBounds);
        catch (Exception e)
        // c.setFinalMessage();The calls that work look like this in the console:
    Sequence ID is null
    <05-Mar-2013 14:55:53 o'clock EAT> <Info> <Store> <BEA-280008> <Opening the persistent file store "weblogic.wsee.persistence.WseeFileStore" for recovery: directory=C:\JDeveloper\11.1.2.3\mywork\WSReliableClientPOC\Client requestedWritePolicy="Cache-Flush" fileLockingEnabled=true driver="NIO".>
    <05-Mar-2013 14:55:53 o'clock EAT> <Info> <Store> <BEA-280009> <The persistent file store "weblogic.wsee.persistence.WseeFileStore" (569ea4fb-b0fd-4906-bb74-003b6885b1d5) has been opened: blockSize=512 actualWritePolicy="Cache-Flush(single-handle-non-direct)" explicitIOEnforced=false records=57.>
    Hello, John. You have just communicated with me using WS-reliablemessaging
    Hello, Fred. You have just communicated with me using WS-reliablemessaging
    Hello, Josephine. You have just communicated with me using WS-reliablemessaging
    Sequence ID is uuid:WLS1:WseeFileStore:3f3d2d8955322f32:-94bc5:13d3a6864db:-7ffd
    1
    3
    <05-Mar-2013 14:56:03 o'clock EAT> <Error> <WseeRm> <BEA-224016> <An unexpected error occurred: weblogic.wsee.sender.api.ConversationNotFoundException: [WseeSender:221102]The conversation with the given name (uuid:WLS1:WseeFileStore:3f3d2d8955322f32:-156fc54b:13d3a5dab50:-7ffd) could not be found.
    weblogic.wsee.sender.api.ConversationNotFoundException: [WseeSender:221102]The conversation with the given name (uuid:WLS1:WseeFileStore:3f3d2d8955322f32:-156fc54b:13d3a5dab50:-7ffd) could not be found.
         at weblogic.wsee.sender.DefaultProvider.DefaultSendingServiceProvider.getConversation(DefaultSendingServiceProvider.java:222)
         at weblogic.wsee.sender.DefaultProvider.DefaultSendingServiceProvider.stopConversation(DefaultSendingServiceProvider.java:287)
         at weblogic.wsee.reliability2.store.SourceSequenceMap.shutdownSequence(SourceSequenceMap.java:257)
         at weblogic.wsee.reliability2.store.SourceSequenceMap.shutdownSequence(SourceSequenceMap.java:30)
         at weblogic.wsee.reliability2.store.SequenceStore.removePhysicalStore(SequenceStore.java:109)
         at weblogic.wsee.persistence.LogicalStore.close(LogicalStore.java:955)
         at weblogic.wsee.persistence.LogicalStore.closeLogicalStores(LogicalStore.java:402)
         at weblogic.wsee.persistence.LogicalStore.closeStore(LogicalStore.java:384)
         at weblogic.wsee.persistence.LogicalStore.closeAllStores(LogicalStore.java:365)
         at weblogic.wsee.persistence.LogicalStore$1.run(LogicalStore.java:164)
    >
    <05-Mar-2013 14:56:03 o'clock EAT> <Error> <WseePersist> <BEA-221000> <An unexpected error occurred: java.lang.IllegalStateException: Attempt to remove listener from weblogic.wsee.reliability2.sequence.SourceSequence@6ac27081 - uuid:WLS1:WseeFileStore:3f3d2d8955322f32:-156fc54b:13d3a5dab50:-7ffd when it is not the master instance
    java.lang.IllegalStateException: Attempt to remove listener from weblogic.wsee.reliability2.sequence.SourceSequence@6ac27081 - uuid:WLS1:WseeFileStore:3f3d2d8955322f32:-156fc54b:13d3a5dab50:-7ffd when it is not the master instance
         at weblogic.wsee.reliability2.sequence.Sequence.removePropertyChangeListener(Sequence.java:1250)
         at weblogic.wsee.reliability2.store.SequenceMap.shutdownSequence(SequenceMap.java:558)
         at weblogic.wsee.reliability2.store.TimedSequenceMap.shutdownSequence(TimedSequenceMap.java:182)
         at weblogic.wsee.reliability2.store.SourceSequenceMap.shutdownSequence(SourceSequenceMap.java:274)
         at weblogic.wsee.reliability2.store.SourceSequenceMap.shutdownSequence(SourceSequenceMap.java:30)
         at weblogic.wsee.reliability2.store.SequenceStore.removePhysicalStore(SequenceStore.java:109)
         at weblogic.wsee.persistence.LogicalStore.close(LogicalStore.java:955)
         at weblogic.wsee.persistence.LogicalStore.closeLogicalStores(LogicalStore.java:402)
         at weblogic.wsee.persistence.LogicalStore.closeStore(LogicalStore.java:384)
         at weblogic.wsee.persistence.LogicalStore.closeAllStores(LogicalStore.java:365)
         at weblogic.wsee.persistence.LogicalStore$1.run(LogicalStore.java:164)
    >
    Process exited with exit code 0.The calls that don't work look like this:
    Sequence ID is null
    <05-Mar-2013 14:57:49 o'clock EAT> <Info> <Store> <BEA-280008> <Opening the persistent file store "weblogic.wsee.persistence.WseeFileStore" for recovery: directory=C:\JDeveloper\11.1.2.3\mywork\WSReliableClientPOC\Client requestedWritePolicy="Cache-Flush" fileLockingEnabled=true driver="NIO".>
    <05-Mar-2013 14:57:49 o'clock EAT> <Info> <Store> <BEA-280009> <The persistent file store "weblogic.wsee.persistence.WseeFileStore" (569ea4fb-b0fd-4906-bb74-003b6885b1d5) has been opened: blockSize=512 actualWritePolicy="Cache-Flush(single-handle-non-direct)" explicitIOEnforced=false records=59.>
    RM sequence failure:
    weblogic.wsee.sender.api.PermanentSendException: javax.xml.ws.WebServiceException: SequenceFaultException: The value of wsrm:Identifier is not a known Sequence identifier.: uuid:WLS1:WseeFileStore:3f3d2d8955322f32:-94bc5:13d3a6864db:-7ffe
    Failed to deliver request for operation 'GetGreeting'. Fault summary:
    weblogic.wsee.sender.api.PermanentSendException: javax.xml.ws.WebServiceException: SequenceFaultException: The value of wsrm:Identifier is not a known Sequence identifier.: uuid:WLS1:WseeFileStore:3f3d2d8955322f32:-94bc5:13d3a6864db:-7ffe
    Exception in thread "main" java.lang.AssertionError: weblogic.wsee.sender.api.PermanentSendException: javax.xml.ws.WebServiceException: SequenceFaultException: The value of wsrm:Identifier is not a known Sequence identifier.: uuid:WLS1:WseeFileStore:3f3d2d8955322f32:-94bc5:13d3a6864db:-7ffe
         at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:689)
         at com.sun.xml.ws.client.Stub.process(Stub.java:272)
         at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:153)
         at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:115)
         at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:95)
         at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:136)
         at $Proxy36.getGreeting(Unknown Source)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at weblogic.wsee.jaxws.spi.ClientInstanceInvocationHandler.invoke(ClientInstanceInvocationHandler.java:84)
         at $Proxy35.getGreeting(Unknown Source)
         at org.tempuri.WSHttpBinding_HelloClient.main(WSHttpBinding_HelloClient.java:96)
    Caused by: weblogic.wsee.sender.api.PermanentSendException: javax.xml.ws.WebServiceException: SequenceFaultException: The value of wsrm:Identifier is not a known Sequence identifier.: uuid:WLS1:WseeFileStore:3f3d2d8955322f32:-94bc5:13d3a6864db:-7ffe
         at weblogic.wsee.reliability2.store.SourceSequenceSender.checkForPermanentSendFailure(SourceSequenceSender.java:549)
         at weblogic.wsee.reliability2.store.SourceSequenceSender.handleFailureForSuspendedFiber(SourceSequenceSender.java:604)
         at weblogic.wsee.reliability2.store.SourceSequenceSender.sendRequestAndHandleResponseForSuspendedFiber(SourceSequenceSender.java:452)
         at weblogic.wsee.reliability2.store.SourceSequenceSender.sendRequestAndHandleResponse(SourceSequenceSender.java:293)
         at weblogic.wsee.reliability2.store.SourceSequenceSender.send(SourceSequenceSender.java:184)
         at weblogic.wsee.sender.DefaultProvider.Conversation.sendOneRequest(Conversation.java:671)
         at weblogic.wsee.sender.DefaultProvider.Conversation.sendPendingRequests(Conversation.java:579)
         at weblogic.wsee.sender.DefaultProvider.Conversation.access$1400(Conversation.java:44)
         at weblogic.wsee.sender.DefaultProvider.Conversation$2.timerExpired(Conversation.java:476)
         at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:273)
         at weblogic.work.ExecuteRequestAdapter.execute(ExecuteRequestAdapter.java:21)
         at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)
         at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)
    Caused by: javax.xml.ws.WebServiceException: SequenceFaultException: The value of wsrm:Identifier is not a known Sequence identifier.: uuid:WLS1:WseeFileStore:3f3d2d8955322f32:-94bc5:13d3a6864db:-7ffe
         at com.sun.xml.ws.client.dispatch.DispatchImpl.doInvoke(DispatchImpl.java:258)
         at com.sun.xml.ws.client.dispatch.DispatchImpl.invoke(DispatchImpl.java:273)
         at weblogic.wsee.reliability2.store.SourceSequenceSender.sendRequestAndHandleResponseForSuspendedFiber(SourceSequenceSender.java:442)
         ... 10 more
    Caused by: SequenceFaultException: The value of wsrm:Identifier is not a known Sequence identifier.: uuid:WLS1:WseeFileStore:3f3d2d8955322f32:-94bc5:13d3a6864db:-7ffe
         at weblogic.wsee.reliability2.tube.WsrmTubelineDeploymentListener$WsrmClientProtocolTube.processResponse(WsrmTubelineDeploymentListener.java:222)
         at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:877)
         at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:815)
         at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:778)
         at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:680)
         at com.sun.xml.ws.client.Stub.process(Stub.java:272)
         at com.sun.xml.ws.client.dispatch.DispatchImpl.doInvoke(DispatchImpl.java:238)
         ... 12 more
    <05-Mar-2013 14:57:58 o'clock EAT> <Error> <WseeRm> <BEA-224016> <An unexpected error occurred: weblogic.wsee.sender.api.ConversationNotFoundException: [WseeSender:221102]The conversation with the given name (uuid:WLS1:WseeFileStore:3f3d2d8955322f32:-156fc54b:13d3a5dab50:-7ffd) could not be found.
    weblogic.wsee.sender.api.ConversationNotFoundException: [WseeSender:221102]The conversation with the given name (uuid:WLS1:WseeFileStore:3f3d2d8955322f32:-156fc54b:13d3a5dab50:-7ffd) could not be found.
         at weblogic.wsee.sender.DefaultProvider.DefaultSendingServiceProvider.getConversation(DefaultSendingServiceProvider.java:222)
         at weblogic.wsee.sender.DefaultProvider.DefaultSendingServiceProvider.stopConversation(DefaultSendingServiceProvider.java:287)
         at weblogic.wsee.reliability2.store.SourceSequenceMap.shutdownSequence(SourceSequenceMap.java:257)
         at weblogic.wsee.reliability2.store.SourceSequenceMap.shutdownSequence(SourceSequenceMap.java:30)
         at weblogic.wsee.reliability2.store.SequenceStore.removePhysicalStore(SequenceStore.java:109)
         at weblogic.wsee.persistence.LogicalStore.close(LogicalStore.java:955)
         at weblogic.wsee.persistence.LogicalStore.closeLogicalStores(LogicalStore.java:402)
         at weblogic.wsee.persistence.LogicalStore.closeStore(LogicalStore.java:384)
         at weblogic.wsee.persistence.LogicalStore.closeAllStores(LogicalStore.java:365)
         at weblogic.wsee.persistence.LogicalStore$1.run(LogicalStore.java:164)
    >
    <05-Mar-2013 14:57:58 o'clock EAT> <Error> <WseePersist> <BEA-221000> <An unexpected error occurred: java.lang.IllegalStateException: Attempt to remove listener from weblogic.wsee.reliability2.sequence.SourceSequence@79424b7b - uuid:WLS1:WseeFileStore:3f3d2d8955322f32:-156fc54b:13d3a5dab50:-7ffd when it is not the master instance
    java.lang.IllegalStateException: Attempt to remove listener from weblogic.wsee.reliability2.sequence.SourceSequence@79424b7b - uuid:WLS1:WseeFileStore:3f3d2d8955322f32:-156fc54b:13d3a5dab50:-7ffd when it is not the master instance
         at weblogic.wsee.reliability2.sequence.Sequence.removePropertyChangeListener(Sequence.java:1250)
         at weblogic.wsee.reliability2.store.SequenceMap.shutdownSequence(SequenceMap.java:558)
         at weblogic.wsee.reliability2.store.TimedSequenceMap.shutdownSequence(TimedSequenceMap.java:182)
         at weblogic.wsee.reliability2.store.SourceSequenceMap.shutdownSequence(SourceSequenceMap.java:274)
         at weblogic.wsee.reliability2.store.SourceSequenceMap.shutdownSequence(SourceSequenceMap.java:30)
         at weblogic.wsee.reliability2.store.SequenceStore.removePhysicalStore(SequenceStore.java:109)
         at weblogic.wsee.persistence.LogicalStore.close(LogicalStore.java:955)
         at weblogic.wsee.persistence.LogicalStore.closeLogicalStores(LogicalStore.java:402)
         at weblogic.wsee.persistence.LogicalStore.closeStore(LogicalStore.java:384)
         at weblogic.wsee.persistence.LogicalStore.closeAllStores(LogicalStore.java:365)
         at weblogic.wsee.persistence.LogicalStore$1.run(LogicalStore.java:164)
    >
    Process exited with exit code 1.Does anyone have any insight about this behaviour?
    Thanks,
    John

    Some additional information for the second case. Using HTTP analyzer in JDeveloper, I can see 2 HTTP POSTs going to the web service. The first one is to initiate the WS-RM sequence and shows an offered conversation identifier and the reply shows that the server has given its own identifier instead of the offered one:
    request:
    POST http://xgis-lel-05717.ad.xglobal.com:80/WSReliablePOC/HelloService.svc HTTP/1.1
    Proxy-Authorization:
    Content-type: application/soap+xml;charset="utf-8";action="http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence"
    Accept: application/soap+xml, multipart/related, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    User-Agent: Oracle JAX-WS 2.1.5
    Host: xgis-lel-05717.ad.xglobal.com
    Proxy-Connection: Keep-Alive
    Content-Length: 1620
    X-HTTPAnalyzer-Rules: 1@localhost:8099
    <?xml version="1.0" encoding="UTF-8"?>
    <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
        <env:Header>
            <wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing" env:mustUnderstand="true">http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence</wsa:Action>
            <wsa:MessageID xmlns:wsa="http://www.w3.org/2005/08/addressing">uuid:WLS1:WseeFileStore:3f3d2d8955322f32:201221c6:13d3a75f768:-7ffb</wsa:MessageID>
            <wsa:To xmlns:wsa="http://www.w3.org/2005/08/addressing">http://xgis-lel-05717.ad.xglobal.com/WSReliablePOC/HelloService.svc</wsa:To>
            <ReplyTo xmlns="http://www.w3.org/2005/08/addressing">
                <Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
            </ReplyTo>
            <FaultTo xmlns="http://www.w3.org/2005/08/addressing">
                <Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
            </FaultTo>
        </env:Header>
        <env:Body xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm">
            <wsrm:CreateSequence>
                <wsrm:AcksTo xmlns:wsa="http://www.w3.org/2005/08/addressing">
                    <wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
                    <wsa:ReferenceParameters xmlns:clspi="http://www.oracle.com/wsee/jaxws/cluster/spi">
                        <clspi:PhysicalStoreName
                            xmlns:wsa="http://www.w3.org/2005/08/addressing"
                            xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility" wsa:IsReferenceParameter="true">WseeFileStore</clspi:PhysicalStoreName>
                    </wsa:ReferenceParameters>
                </wsrm:AcksTo>
                <wsrm:Expires>P1D</wsrm:Expires>
                <wsrm:Offer>
                    <wsrm:Identifier>uuid:WLS1:WseeFileStore:3f3d2d8955322f32:201221c6:13d3a75f768:-7ffe</wsrm:Identifier>
                    <wsrm:Expires>P1D</wsrm:Expires>
                </wsrm:Offer>
            </wsrm:CreateSequence>
        </env:Body>
    </env:Envelope>
    reply:
    HTTP/1.1 200 OK
    Content-Type: application/soap+xml; charset=utf-8
    Cache-Control: private
    X-Powered-By: ASP.NET
    X-AspNet-Version: 4.0.30319
    Content-Length: 673
    Server: Microsoft-IIS/7.5
    Date: Tue, 05 Mar 2013 12:10:44 GMT
    X-HTTPAnalyzer-RuleName: Pass through :
    <?xml version="1.0" encoding="UTF-8"?>
    <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
        <s:Header>
            <a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequenceResponse</a:Action>
            <a:RelatesTo>uuid:WLS1:WseeFileStore:3f3d2d8955322f32:201221c6:13d3a75f768:-7ffb</a:RelatesTo>
        </s:Header>
        <s:Body>
            <CreateSequenceResponse xmlns="http://schemas.xmlsoap.org/ws/2005/02/rm">
                <Identifier>urn:uuid:b6886ed1-6cf2-40a4-99a3-f17cc5a295d7</Identifier>
                <Expires>P1D</Expires>
                <Accept>
                    <AcksTo>
                        <a:Address>http://xgis-lel-05717.ad.xglobal.com/WSReliablePOC/HelloService.svc</a:Address>
                    </AcksTo>
                </Accept>
            </CreateSequenceResponse>
        </s:Body>
    </s:Envelope>The second POST shows the JDeveloper proxy calling the web service and sending a wsrm:Identifier value that the one originally offered by JDeveloper (see the sequence acknowledgement), not the one the server advised to use:
    request:
    POST http://xgis-lel-05717.ad.xglobal.com:80/WSReliablePOC/HelloService.svc HTTP/1.1
    Proxy-Authorization:
    Content-type: application/soap+xml;charset="utf-8";action="http://tempuri.org/Hello/GetGreeting"
    Accept: application/soap+xml, multipart/related, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    User-Agent: Oracle JAX-WS 2.1.5
    Host: xgis-lel-05717.ad.xglobal.com
    Proxy-Connection: Keep-Alive
    Content-Length: 1444
    X-HTTPAnalyzer-Rules: 1@localhost:8099
    <?xml version="1.0" encoding="UTF-8"?>
    <S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope">
        <S:Header>
            <wsa:To xmlns:wsa="http://www.w3.org/2005/08/addressing">http://xgis-lel-05717.ad.xglobal.com/WSReliablePOC/HelloService.svc</wsa:To>
            <wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">http://tempuri.org/Hello/GetGreeting</wsa:Action>
            <ReplyTo xmlns="http://www.w3.org/2005/08/addressing">
                <Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
            </ReplyTo>
            <FaultTo xmlns="http://www.w3.org/2005/08/addressing">
                <Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
            </FaultTo>
            <wsa:MessageID xmlns:wsa="http://www.w3.org/2005/08/addressing">uuid:WLS1:WseeFileStore:3f3d2d8955322f32:201221c6:13d3a75f768:-7ffc</wsa:MessageID>
            <wsrm:SequenceAcknowledgement xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm">
                <wsrm:Identifier>uuid:WLS1:WseeFileStore:3f3d2d8955322f32:-725c9c83:13d3a75543c:-7ffe</wsrm:Identifier>
                <wsrm:AcknowledgementRange Lower="1" Upper="3"/>
            </wsrm:SequenceAcknowledgement>
            <wsrm:Sequence
                xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm" S:mustUnderstand="true">
                <wsrm:Identifier>urn:uuid:b6886ed1-6cf2-40a4-99a3-f17cc5a295d7</wsrm:Identifier>
                <wsrm:MessageNumber>1</wsrm:MessageNumber>
            </wsrm:Sequence>
        </S:Header>
        <S:Body>
            <GetGreeting
                xmlns:ns2="http://schemas.microsoft.com/2003/10/Serialization/" xmlns="http://tempuri.org/">
                <name>John</name>
            </GetGreeting>
        </S:Body>
    </S:Envelope>
    response:
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/soap+xml; charset=utf-8
    Cache-Control: private
    X-Powered-By: ASP.NET
    X-AspNet-Version: 4.0.30319
    Content-Length: 710
    Server: Microsoft-IIS/7.5
    Date: Tue, 05 Mar 2013 12:10:52 GMT
    X-HTTPAnalyzer-RuleName: Pass through :
    <?xml version="1.0" encoding="UTF-8"?>
    <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
        <s:Header>
            <a:Action s:mustUnderstand="1">http://www.w3.org/2005/08/addressing/soap/fault</a:Action>
        </s:Header>
        <s:Body>
            <s:Fault>
                <s:Code>
                    <s:Value>s:Sender</s:Value>
                    <s:Subcode>
                        <s:Value xmlns:a="http://schemas.xmlsoap.org/ws/2005/02/rm">a:UnknownSequence</s:Value>
                    </s:Subcode>
                </s:Code>
                <s:Reason>
                    <s:Text xml:lang="en-GB">The value of wsrm:Identifier is not a known Sequence identifier.</s:Text>
                </s:Reason>
                <s:Detail>
                    <r:Identifier xmlns:r="http://schemas.xmlsoap.org/ws/2005/02/rm">uuid:WLS1:WseeFileStore:3f3d2d8955322f32:-725c9c83:13d3a75543c:-7ffe</r:Identifier>
                </s:Detail>
            </s:Fault>
        </s:Body>
    </s:Envelope>This seems to be an issue in the JDev-generated Proxy (still need to find out why it happens "every other time" and not "every time." The time it works, JDeveloper is sending the Identifier returned by the service. The time it works, however - you can also see that the "conversation not found" exception is referring to the original "offered" identifier and not the one that was used in the conversation. I'm now starting to suspect that the proxy generation for WS-RM may be a bit buggy. Anyone else with experience in this area?
    A quick look at support.oracle.com does find note 1082278.1 which although for old versions of WebLogic, that WS-RM isn't supported for JAX-WS in WLS, but is supported for JAX-RPC. Since this seems to be for publishing web services, it is not at all clear as to whether this applies to me. In any case, the JDeveloper WS proxy wizard won't let me generate a JAX-RPC proxy, instead saying that the WSDL has no SOAP 1.1 bindings (which is correct, it has SOAP 1.2 bindings).
    John
    John

  • ProcessControlExceptions in Asynchronous Services

    I have built an asynchronous web service (jws) that invokes a synchronous process (jpd) via a process control (jcx). I'm having trouble with my exception handling.
    My JPD has a global exception handler, which throws a SoapFaultException wrapping the exception that was caught. My JWS file has a try-catch block around the call to the process control, which catches a ProcessControlException, and extracts the relevent information from the contained SoapFaultException. I do not rethrow any exceptions.
    Despite the fact that I handle the exception in the JWS, it seems that once the method completes (in its entirety) if an exception was caught, the transaction is rolled back, and - since this method starts the conversation - the conversation is not created. This is a major problem, since polling the service will throw a ConversationNotFoundException.
    I have done some testing, and the issue only occurs when an exception is thrown from a process control within my jws method. My best guess is that since the transaction is passed to the control, and the control throws an exception, the transaction is set to be rolled-back, even though the exception is being handled at the JWS level. Am I doing something wrong? Is there a way for me to prevent the transaction from rolling back? Any help would be greatly appreciated.
    Thanks.
    -Brian

    Information at the following link may be helpful:
    http://forums.bea.com/bea/thread.jspa?messageID=600034865&#600034865
    Regards,
    Rommel Sharma

  • Uniqueness of conversation IDs(?)

    In WebLogic81sp5/WLI8.5 I use a service control to call a conversational Web service from a JPD process. The service control exposes two methods, clientRequest (conversation state: start) and a callback method, clientResponse (conversation state: finish).
    When I call the clientRequest method (in a Control send node), the service control generates a unique conversation id of the form:
    [<processInstanceID>]myserviceControl:<AUniquePart>
    Now, the web service may not reply, so I put a Timeout path on my Control send/Control receive structure, configured to retry once. In case the response does not arrive within, say, 1 minute, the request is resent, generating a new conversation ID for the service control:
    [<processInstanceID>]myserviceControl:<AnotherUniquePart>
    So far, so good. But now the fun starts: Assume that the first response was only delayed, not lost. After 1.5 minutes it arrives, bearing the original conversation ID in a <CallbackHeader> element in the SOAP header. Because the service control is now tied to the new conversation ID, I would expect the Workshop framework to ignore the incoming (delayed) response and just return a SOAPFault saying that the conversation ID is unknown.
    However, the process happily accepts the old message, even if the conversation ID is outdated?
    In fact, when the second response arrives, IT triggers a SOAPFault stating that the conversation is unknown.
    Workshops seems to discard the unique part of the service control conversation ID, given that the error message reads: "An attempt was made to send a request to conversation id <processInstanceID>. This is not a valid conversation id." So for conversation control, Workshop only uses the process instance ID?
    I tested this theory by having the web service return with a modified conversation ID in the header, like:
    [<processInstanceID>]myserviceControl:BLAHBLAHBLAH
    Indeed, the process happily accepts this response and continues?!
    Is this how the Workshop framework is supposed to work, or is there some switch that I am not aware of? In other words, how can I make sure that Workshop does not loose the uniqueness of a service control ID and just accepts any incoming message to the process instance in question?
    (This becomes a serious issue if the control is used more than once in a process. Assume requestA will generate responseA ('SUCCESS'), and requestB will generate responseB ('FAILURE'). If the Control receive node waiting for responseA times out, it causes requestA to be resent. Now, if the first responseA is received, it will appear to the process as belonging to the second requestA. This is not critical; however, when the process now sends off requestB, it receives (and accepts) the second responseA as belonging to requestB! Since responseA and responseB differ (SUCCESS/FAILURE), the process now thinks that requestB went fine even though it actually failed.)
    If you are still with me so far, I thank you for reading and apologize for the lengthy post...
    / Anders

    Hi Anders
    Hi
    I tested your scenario and it seems to work as designed.
    It is true that the process Instance Id is what JPD considers and not the whole of conversationId.
    So which ever response "comes first" will be consumed and other will get dropped.This is what we see now.
    Here are the convId and the results for 2 concurrent requests.
    JPD ---> Service control ---> JWS
    Req 1:
    <conversationID>[1152668451563]ws:192.168.1.100-1be3a66.10c6056ed9d.-7f8d</conversationID>
    Retry1:
    <conversationID>[1152668451563]ws:192.168.1.100-1be3a66.10c6056ed9d.-7f87</conversationID>
    Response1:
    Actual response with convId [1152668451563]ws:192.168.1.100-1be3a66.10c6056ed9d.-7f8d
    Retry1 Response:
    Failure with conv Id [1152668451563]ws:192.168.1.100-1be3a66.10c6056ed9d.-7f87
    com.bea.wlw.runtime.core.bean.ConversationNotFoundException: An attempt was made to send a request to conversation id 1152668451563. This is not a valid conversation id. The most common cause of this exception is an attempt to send a request to a conversation that has already been
    Request2:
    <conversationID>[1152668454958]ws:192.168.1.100-1be3a66.10c6056ed9d.-7f8a</conversationID>
    Retry of request2:
    <conversationID>[1152667953547]ws:192.168.1.100-1be3a66.10c6056ed9d.-7fa5</conversationID>
    Response1:
    Actual response with convId [1152668454958]ws:192.168.1.100-1be3a66.10c6056ed9d.-7f8a
    Retry1 Response:
    Failure with conv Id [1152667953547]ws:192.168.1.100-1be3a66.10c6056ed9d.-7fa5
    com.bea.wlw.runtime.core.bean.ConversationNotFoundException: An attempt was made to send a request to conversation id 1152668451563. This is not a valid conversation id. The most common cause of this exception is an attempt to send a request to a conversation that has already been
    MULTIPLE CONTROL INSTANCES:
    In this case I believe we can use control factory to create multiple control instances and so they get unique control instance id also and so the responses are consumed correctly not across the requests as you mentioned here.
    You can define a factory like
    * @common:control
    private test.WsControlFactory wsFac;
    and then create the instances by
    public void wsSayHello1() throws Exception
    WsControl ws1 = wsFac.create();
    WsControl ws2 = wsFac.create();
    ws1.sayHello(timeout);
    ws2.sayHello(timeout);
    I have tested this scenario also.
    the conv id looks like
    control instance1 (ws1)
    <conversationID>[1152668886228]wsFac:0:192.168.1.100-1be3a66.10c6056ed9d.-7f79</conversationID>
    control instance2 (ws2)
    <conversationID>[1152668886228]wsFac:1:192.168.1.100-1be3a66.10c6056ed9d.-7f77</conversationID>
    control instance1 retry
    <conversationID>[1152668886228]wsFac:2:192.168.1.100-1be3a66.10c6056ed9d.-7f6f</conversationID>
    control instance2 retry
    <conversationID>[1152668886228]wsFac:3:192.168.1.100-1be3a66.10c6056ed9d.-7f6d</conversationID>
    Please let me know if you have any questions or you see a different behavior.
    Thanks
    Vimala

  • How to handle messages correlated to a terminated process

    In WLI 8.5, I have a process sending messages to a request queue (thanks to a WLI JMS control), and receiving message in a response queue (thanks to the same WLI JMS control).
    The external process performing the work, reads messages from the request queue and publishes correlated responses. Those correlated responses can trigger the right process. This part works fine.
    But if the response doesn’t arrive in due time, there is a timeout path, the process continues and terminates gracefully.
    If a correlated message arrives on a terminated process, I have ConversationNotFoundException in the console. I’d like to handle them in order to send a too late message to the sender.
    How should I proceed?
    I cannot catch the ConversationNotFoundException(s) in the terminated process.
    How can I catch them ?
    If I put an error queue to my response queue, I won’t be able to discriminate between ConversationNotFoundException and other delivery errors. What is the best practise to handle this case?

    We had a similar issue encountered and there were a few observations by BEA support on this exception that are generic I think, so this may help you:
    (Are you using a JMS Control as the explanation involves them and more importantly, a cluster!)
    There are some architectural implications of using a jms control in a cluster, where the message flow is bidirectional.
    The ConversationNotFoundException would in this case be a consequence of the fact that our automatic jms control machinery has lost track of the exact jpd instance that it is receiving a mesage from. This automatic machinery is that the jms correlation-id = the conversation-id= the jpd instanceid
    see http://e-docs.bea.com/workshop/docs81/doc/en/workshop/javadoc-tag/jc/jms.html, but in a cluster environment, it could be mix up and not work like that.
    So regarding your question if you can program a specific message to send when this error occurs, it looks difficult as it seems your JPD is now out of the picture and hence no logic would handle this scenario.
    Nevertheless, I will watch this space for other suggestions as a workaround.

Maybe you are looking for