How are you invoking the service? ServiceInvoker? Listeners?
I have two services, service A is invoked as a webservice which in turn invokes service B via the ServiceInvoker. The issue occurs with both services.
my jboss instance is SOA-P 5.3.0 with HornetQ and CXF WS. Services are listening on jms qs. The database is DB2. jdk is 1.6. os is Windows.
More information: I have two esb jvms in my local test env, esb1 (has service A) and esb2 (has service B). esb1 has its juddi db configured to be inprocess hsql (db contents ignored during testing) and esb.juddi.client.xml points to esb2. esb2 is configured to use a juddi db. this db is the one that has endpoints from both my local env and my dev env (this is a side effect of the development process and not how we plan to operate but this dev / local db overlap has produced this interesting situation). Both esb1 and 2 have removeDeadEPR=true (i assume its only required on esb2).
when i submit the ws request, sometimes i see the following error:
Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:esb_1_dev_host:1099#queue/serviceA/>
And other times i see
Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:esb_2_dev_host:1099#queue/serviceB/>
In this second situation, there are still invalid EPRs for serviceA in the DB. I assume this means that the service invoker has used one of the valid esb_1_local_host EPRs.
What behaviour should i expect to see when using removeDeadEPR=true? Should the invalid entries be removed from the db immediately after they are tried? Will execution continue successfully if there is another valid EPR entry for the same service, or will the request have to be resubmitted?
Are you seeing Dead EPRs being retained, or are you seeing valid - but duplicate EPRs retained?
Dead EPRs should be cleared. Valid duplicates are a nastier case and stick around. You may see the unresponsive EPR message under a lot of load due to timeout, even if the EPR is valid.
i was seeing Dead EPRs being retained.
i did more testing and i was successfully seeing dead EPRs be removed when removeDeadEPR=true.
As the documentation stated, this turned out to be a bigger problem for us as services were timing out and being removed. so we decided to turn that off and use the manual SQL above where necessary.
thanks for your assistance.