Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Cannot Reproduce
-
1.2
-
None
-
Mac OS 10.5, java version "1.6.0_07", ServiceMix 3.3 ,ODE JBI 1.2
Description
Please note that the same issue was reported to the ServiceMix team: https://issues.apache.org/activemq/browse/SM-1767 as it is not clear which component causes the problem.
While I was testing configuration for a project I work on (multiple SA with http soap consumer proxy which represent the same abstract WSDL of a BPEL process), I have noticed that one of the http endpoints doesn't get unregistered after corresponding SA is undeployed.
To make sure the problem is not specific to our project, I have used 2 hello example SA projects
Here are steps required to reproduce the problem
1. unzip the hello.tar attached to this issue, you should have two subdirectories: ode-jbi-hello and ode-jbi-hello1.
2. cd to ode-jbi-hello, run mvn install and then copy hello-sa/target/hello-sa-0.0.1-SNAPSHOT.zip to $SERVICEMIX_HOME/hotdeploy directory
3. cd to ode-jbi-hello1, run mvn install and then copy hello-sa1/target/hello-sa1-0.0.1-SNAPSHOT.zip to $SERVICEMIX_HOME/hotdeploy directory
4. Both SA should deploy without any errors (different urls, endpoints and service names were used to ensure there is no conflict)
5. start jconsole and connect to ServiceMix
6. expand org.apache.servicemix/ServiceMix/Endpoint - you should see 4 http endpoints (2 internal and 2 external) for HelloWorld2.wsdl
7. rm $SERVICEMIX_HOME/hotdeploy/hello-sa-0.0.1-SNAPSHOT.zip, there will be now 3 http endpoints (2 internal, 1 external) for HelloWorld2.wsdl
8. rm $SERVICEMIX_HOME/hotdeploy/hello-sa1-0.0.1-SNAPSHOT.zip, there will be now 1 http endpoint (1 internal) for HelloWorld2.wsdl
ServiceMix log output doesn't report any errors while both SA are undeployed and $SERVICEMIX_HOME/data/smx/service-assemblies/ directory is empty (assuming no other SA were deployed).
The problem is that when the same SA are redeployed again, ServiceMix throws an error:
javax.jbi.JBIException: An internal endpoint for service
HelloService and endpoint HelloPort is already registered
The only way I managed to remove the offending endpoint was by restarting service mix.
I have repeated the same tests with just one hello SA and if I deployed/undeployed the zip file, then redeploying the same SA doesn't generate any errors, nor there are any unregistered endpoints.